Animation of Fluids

Μηχανική

24 Οκτ 2013 (πριν από 4 χρόνια και 6 μήνες)

104 εμφανίσεις

Animation of Fluids

Animating Fluid is Hard…

Too complex to

animate by hand

Surface is changing

very quickly

Lots of small details

In short, a nightmare!

Need automatic

simulations…

-
Hoc Methods

Some simple algorithms

exist for special cases

Mostly waves…

Too much work to come

up with empirical algorithms

for each case…

Physically
-
Based Approach

Look to
Fluid Dynamics

Long history. Back to Newton…

Equations that describe fluid motion

Use numerical methods to approximate
fluid equations, simulating fluid motion

Like mass
-
spring systems

Current State
-
of
-
the
-
art in CG

Marker
-
And
-
Cell (MAC) Method

fedkiw_fluid
\
glass00.avi

fedkiw_fluid
\
splash
-
640.avi

Smoothed Particle Hydrodynamics (SPH)

muller_particles
\
sph.avi

muller_particles
\
pool.avi

Applications

Mostly Hollywood

Shrek

Antz

Terminator 3

Many others…

Games

Engineering…

Fluid Dynamics

(with as little math as possible)

What do we mean by ‘Fluid’?

liquids or gasses

Mathematically:

A vector field
u
(represents the fluid
velocity
)

A scalar field p (represents the fluid
pressure
)

fluid density (d) and fluid viscosity (
v
)

Vector Fields

2D Scalar function:

f(x,y) = z

z is a
scalar

value

2D
Vector

function:

u
(x,y) =
v

v

is a
vector

value

v
= (x’, y’)

The set of values

u
(x,y) =
v
is called a

vector field

Fluid Velocity == Vector Field

Can model a fluid as a vector field
u
(x,y)

u

is the
velocity

of the fluid at (x,y)

Velocity is different at each point in fluid!

Need to compute
change in vector field

Conceptual Leap

Particle Simulation:

Track particle
positions

x
= (x,y)

Numerically Integrate:
change in position

Fluid Simulation :

Track fluid
velocities

u
= (u,v) at

all points

x

in some fluid volume D

Numerically Integrate:
change in velocity

Equations of Fluid Dynamics

Navier
-
Stokes Equation:

Non
-
linear Partial Differential Equation

Models fluid transport

Derived from Newton’s second law

conservation of momentum

all the forces go “somewhere”

Mass
-
Conservation condition:

If we have a liter of water at the beginning of the solution, we
have a liter at the end…

Change in Velocity

Derivative of velocity with respect to time

Change

in velocity, or acceleration

So this equation models acceleration of fluids

Force exerted on a particle

of fluid by the other particles

of fluid surrounding it

How the fluid “pushes

itself around”

Change in

Velocity

Particle

Video

Diffusion Term

Viscosity constant controls velocity diffusion

Essentially, this term describes how fluid motion
is damped

Highly viscous fluids stick together

Like maple syrup

Low
-
viscosity fluids flow freely

Gasses have low viscosity

Change in

Velocity

“Jet
-
Stream”

Pressure Term

Pressure follows a diffusion process

Fluid moves from high
-
pressure

areas to low
-
pressure areas

Moving ==
velocity

So fluid moves in direction of

largest change in pressure

This direction is the

Diffusion

Change in

Velocity

p = 0.5

p = 1

p = 0

Time…

Weather: Pressure

“Fronts” are the boundaries between regions of
air with different pressure…

“High Pressure Zones” will diffuse into “Low
Pressure Zones”

Fluid Example

Fast moving fluid is
“pulled” towards
slower
-
moving fluid

Body Force

Body force term represents external forces
that act on the fluid

Gravity

Wind

Etc…

Diffusion

Change in

Velocity

Pressure

Summary

And 1 liter == 1 liter constraint:

Need to simulate these equations…

Diffusion

Change in

Velocity

Pressure

Intermission

Smoke

fedkiw_octree
\
smoke_octree.avi

Fire

fedkiw_fire
\
flammable.avi

Implementation Overview

Fluid Representation

Want to simulate motion of some fluid
body

fluid is represented by a vector field

Two problems:

Need to compute change in

vector field (using Navier
-

Stokes equation)

Need to track fluid position

Solution: Discretization

Create regular
grid

Solution: Discretization

Create regular
grid

Discretize fluid
into grid cells

Solution: Discretization

Create regular
grid

Discretize fluid
into grid cells

Track single
velocity

vector in each

grid cell

Simulation Step

“Solve” Navier
-
Stokes equation for each
grid cell to compute change in velocity:

finite
-
difference Diffusion and
Pressure terms are linear
systems of equations

Body Force is
just like mass
-
spring systems

f

u

u

u

u

+

-

+

-

=

p

d

v

t

1

)

(

)

(

non
-
term is difficult. Can
finite
-
difference, but
is not robust…

Free Surface Tracking with

Marker Particles

Want higher
-
resolution
surface for rendering

particles

based on fluid velocity

So the rest is easy, right?

No

Still have to enforce mass
-
conservation
constaint:

Standard equation does not take
boundary
conditions

into account

Boundary conditions are things like walls, fluid/air
boundaries, rubber duckies, and so on

Have to ‘hack’ the equations…this is hard…

Numerical Stability is elusive…

Intermission 2

Melting

carlson_melting
\
bunnyside.mpg

Rigid Body + Fluid

carlson_rigidfluid
\
rigidfluid.avi

Problems with Fluid
Simulation

Surface Resolution…

Weird Behavior….

Water or Vegetable Oil?

fedkiw_fluid
\
glass00.avi

Oh, and it’s

very, very slow

7 minutes

per frame for

water glass…

Hard to Control

Animators want to control fluid behavior

Fluid simulation has a lot of free variables

There has been limited success so far…

Numerical Stability

Maya Fluid Effects

What does fluid effects support?

Naver
-
Stokes
-
based Fluids:

Smoke

Clouds

Explosions

Fire

“Goo” type
-
stuff

-
Hoc / Mass
-
Spring fluids:

Oceans

Ponds

Fluid Effects Algorithms

Unconditionally Stable Navier
-
Stokes simulation

Means they never explode, even with large timesteps

Jos Stam, “Stable Fluids”, SIGGRAPH 99

Do not preserve volume very well

Ok for smoke

Problematic for water glass…

Gets worse w/ larger timestep

Maya Smoke

Smoke demo

Maya Fire

Looks like smoke…

More Fluid Effects Demos

Maya Ocean

2D height field

no crashing waves

Can attach ‘bouyant’ objects

Maya Pond

2D height field

No splashing

Mass
-
spring system

Bouys, Boats, Wakes

Can run in real
-
time

Fin

(questions?)