Upload
hilary-mosley
View
219
Download
0
Tags:
Embed Size (px)
Citation preview
Fluid Animation
CSE 3541 Matt Boggus
Overview
• Procedural approximations– Heightfield fluids
• Mathematical background– Navier-Stokes equation
• Computational models for representing fluids– Grids– Particles– Hybrid
• Using the computational models– Forces– “Stable fluids” by Stam
Real-time Fluids
• Goals:– Cheap to compute– Low memory consumption– Stability– Plausibility– Interactivity
Real-time Fluids
• Procedural water– Unbounded surfaces, oceans
• Particle systems– Splashing, spray, puddles,
smoke, bubbles, rain
• Heightfield fluids– Ponds, lakes, rivers
Heightfield fluid
• Function u(x,y) gives height at (x,y)• Store height values in an array u[x,y]• Note: limited to one height per (x,y)
Heightfield or Heightmap terrain data
2D greyscale image Surface in 3D space
Images from http://en.wikipedia.org/wiki/Heightmap
Can this wave be represented using a heightfield?A – trueB – false
Setting and updating heightfield fluids
• Methods– Sum of sines
• Add multiple sin functions together
– Pressure or height differences between cells– Collision detection and displacement
• Additional considerations– When updating, a second heightfield may be used to
preserve the values from the previous frame– Handle boundary cases differently
Pressure/Height differences
Initialize u[i,j] with some interesting functionInitialze v[i,j]=0loop
v[i,j] +=(u[i-1,j] + u[i+1,j] + u[i,j-1] + u[i,j+1])/4 – u[i,j]v[i,j] *= 0.99u[i,j] += v[i,j]
endloop
Heightfield mesh creation and cell iteration
u[x,y] ; dimensions n by n
Heightfield mesh creation and cell iteration
Quad[i,j] such that i = 0, j = 0; Vertices are U[0,0], U[1,0], U[1,1], U[0,1] U[i,j], U[i+1,j], U[i+1,j+1], U[i,j+1]
Heightfield mesh creation and cell iteration
Inner loop iterates over i, the x coordinate Last quad: i=5 (i = n-1)
Heightfield mesh creation and cell iteration
Outer loop iterates over j, the y coordinateLast row: j=5 (j = n-1)
Smoothing
• For every grid cell u[i,j], set it to average of itself and neighbors
• Implementation concerns:– A. looping order– B. boundary cases– C. both– D. none
Heightfield mesh particle collection
Step 2. For each u[i,j], determine which particles are closet to it(bounding box collision test)
Step 1. Zero out all u[i,j]
Alternative Step 2. For each particle, determine which (i,j) it is closest to(translate position half a cell, then floor it)
Navier-Stokes Equation
• Momentum equation
• Incompressibility
ut = k2u –(u)u – p + f
u=0
Change in velocity
Diffusion/ Viscosity
Advection Pressure Body Forces
u: the velocity fieldk: kinematic viscosity
Fluid Models
Grid-based (Eulerian) d is density
Particle-based (Lagrangian)
Hybrid Animate the particles “Collect” particles to compute density
d d dd
d d dd
d d dd
d d dd
Fluid particle forces
• Adhesion forces : attract particles to each other and to other objects
• Viscosity forces : limit shear movement of particles in the liquid
• Friction forces: dampen movement of particles in contact with objects
Adhesion ForceAttract particles to each other and to other
objects (similar to gravitational force)
The adhesion force between (left) honey-honey, (middle) honey-ceramic and (right) non-mixing liquid
Viscosity Force
• Limit shear movement of particles in the liquid
• The momentum between the neighbour particles are exchanged
Pp
Ppn
exchpnpn
exchpp
exch
pnp
i
n
n i
pnppnexch
PPP
PPP
P
PP
d
k
v
dk
tPPdkvP
exchanced momentum:
pn and p of momentum:,
particle processed thefrom distance :
(Gaussian)function gA weightin :()
tcoefficien viscosity:
)(2
))((
1
Friction Force
tt fvv ˆ
• Dampen movement of particles in contact with objects in the environment
• Scale down the velocity by a constant value
Case Study: A 2D Fluid Simulator
• Incompressible, viscous fluid• Assuming the gravity is the only external force • No inflow or outflow • Constant viscosity, constant density
everywhere in the fluid
Stable Fluids – overview of data
Velocity grid Density grid
Move densities around using velocity grid and dissipate densities
Move velocities around using velocity grid and dissipate velocities
Walkthrough: http://www.dgp.utoronto.ca/~stam/reality/Talks/FluidsTalk/FluidsTalkNotes.pdfSource code: http://www.autodeskresearch.com/publications/games
Additional readings
• Fluid Simulation for Computer Animation
• The original stable fluids paper• An update to the stable fluids work
• Fast Water Simulation for Games Using Height Fields