animation of fluids. animating fluid is hard… too complex to animate by hand –surface is...
TRANSCRIPT
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 automaticsimulations…
Ad-Hoc Methods
• Some simple algorithmsexist for special cases– Mostly waves…
• What about water glass?
• Too much work to comeup with empirical algorithmsfor 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 valuesu(x,y) = v is called avector 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
dt
dx
dt
du
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
• Advection term– Force exerted on a particle
of fluid by the other particlesof fluid surrounding it
– How the fluid “pushes itself around”
Change inVelocity
Particle Advection
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
AdvectionChange inVelocity
Weather: Advection & Diffusion
• “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 gradient
DiffusionAdvectionChange inVelocity
p = 0.5
p = 1p = 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…
DiffusionAdvectionChange inVelocity Pressure
Summary
• And 1 liter == 1 liter constraint:
• Need to simulate these equations…
DiffusionAdvectionChange inVelocity 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 velocityvector in eachgrid 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
fuuuu
pd
vt
1)()(
non-linear Advection term is difficult. Can finite-difference, but is not robust…
Free Surface Tracking with Marker Particles
• Want higher-resolution surface for rendering
• Add a bunch of particles
• Passively Advect thembased 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 forwater 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?)