Transcript Document
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…
Ad-Hoc Methods
• Some simple algorithms
exist for special cases
– Mostly waves…
• What about water glass?
• 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
dx
dt
du
dt
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
Advection Term
Change in
Velocity
• Advection term
– Force exerted on a particle
of fluid by the other particles
of fluid surrounding it
– How the fluid “pushes
itself around”
Particle
Advection
Video
Diffusion Term
Change in
Velocity
Advection
• 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
Weather: Advection & Diffusion
• “Jet-Stream”
Pressure Term
Change in
Velocity
Advection
Diffusion
• 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 gradient
p=0
p=1
Time…
p = 0.5
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
Change in
Velocity
Advection
Diffusion
Pressure
• Body force term represents external forces
that act on the fluid
– Gravity
– Wind
– Etc…
Summary
Change in
Velocity
Advection
Diffusion
Pressure
• And 1 liter == 1 liter constraint:
• Need to simulate these equations…
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 NavierStokes 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:
u
1
= -(u )u + (vu) - p + f
t
d
non-linear Advection
term is difficult. Can
finite-difference, but
is not robust…
finite-difference Diffusion and
Pressure terms are linear
systems of equations
Body Force is
just like massspring systems
Free Surface Tracking with
Marker Particles
• Want higher-resolution
surface for rendering
• Add a bunch of
particles
• Passively Advect them
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
• Ad-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?)