Transcript smoke

SMOKE SIMULATION
Motivation
 Movie
 Game
 Engineering
Introduction
 Ideally
 Looks good
 Fast simulation
 Looks good?
 Look plausible
 Doesn’t need to be exactly correct
 doesn’t suffer from excessive numerical
dissipation
Overview
 Simulation
 Compressible/Imcompressible Equation
 Vortex particle method
 Using octree data structure
 Rendering
 Thick smoke: plain particles
 Thin smoke: adaptive particles
 Using Compensated Ray Marching
Compressible Fluids
 Yngve, G. D., O'Brien, J. F., Hodgins, J. K., 2000, Animating Explosions.
The proceedings of ACM SIGGRAPH 2000, New Orleans, July 23-28,
pp. 29-36.
Operator Splitting
 Stam used the technique in his Stable Fluids
paper, 1999.
 Allows us to solve the Navier-Stokes equation
in Parts.
 As long as each part is stable the technique
will be stable.
Semi-Lagrangian Convection
 Trace each point p in the field backwards in
time. The new velocity at x is therefore the
velocity that the particle had a time step
ago at the old location.
Smoke Viscous Diffusion
 In the simulation of smoke, it is reasonable to
consider the fluid inviscid. Therefore this
term is zero and need not be solved for.
 In fact, the implicit solver that is used will
take energy away from the system anyway,
so there is a numerical dampening that can
look like a non-zero viscosity.
Body Forces
 Gravity, user forces, and object interaction.
 The visible smoke is from a density field.
 Areas of high density fall in the direction of
gravity.
 Heat moves against gravity (hot air rises).
Incompressibility
 At each time step we start with a velocity
field that is divergence free. We need this to
be true at the end of the time step because
the fluid is incompressible.
 After solving for convection, and body forces
the velocity field is not divergence free.
Incompressibility
 Fedkiw, R., Stam, J. and Jensen, H.W.,
"Visual Simulation of Smoke",
SIGGRAPH 2001, 23-30 (2001).
Incompressible Euler Equations
self-advection
Forces
incompressible
(Navier-Stokes without viscosity)
Additional Equations
We now know all the finite differences we need to add
the forces for heat and density…
smoke’s
density
temperature
Vorticity Confinement
 The numerical dissipation, and the coarse
grid size, cause the fine scale detail of
turbulent swirling smoke to vanish.
 Identify where the curl is highest, and add
back in a rotational force there.
 “Vorticity Confinement” force preserves
 swirling nature of fluids.
What is vorticity?
 A measure of the local rotation in a fluid flow.
Pressure Boundary Conditions
 A Neumann boundary condition is a
restriction on the derivative of a function.
Velocity Boundary Condition
 A Dirichlet boundary condition is a restriction
on the value of a function.
Vorticity Confinement
Vorticity Confinement
Vorticity Confinement
Solving the System
 Need to calculate:
 Start with initial state
 Calculate new velocity fields
 New state:
Smoke Simulation
 While (simulating)
 Get external forces (if any) from UI
 Get density/heat sources (from UI or init grid cells)
 Update velocity
 Update density
 Update temperature
 Display density
Smoke Simulation
 While (simulating)
 Get external forces (if any) from UI
 Get density/heat sources (from UI or init grid cells)
 Update velocity
 Update density
 Update temperature
 Display density
Update Velocity
 Equation:
 First term:
 Advection
 Move the fluid through its velocity field (Du/Dt=0)
 Second term:
 external forces
 Final term:
 pressure update
Update Velocity
 Add external forces (fbuoy + forces from UI +
fconf)
 Advection (semi-lagrangian step – trace
particles back)
 Pressure update (solve linear system)
Smoke Simulation
 While (simulating)
 Get external forces (if any) from UI
 Get density/heat sources (from UI or init grid cells)
 Update velocity
 Update density
 Update temperature
 Display density
Update density
 Equation
 First term:
 Advection
 Move the temperature through velocity field
 Second term:
 Diffusion
 Can skip this term
 Second term:
 external sources
Update density
 Add Sources (pick grid cells or from UI)
 Advection (semi-lagrangian step – trace
particles back)
 Diffusion (solve linear system – can skip this
step)
Smoke Simulation
 While (simulating)
 Get external forces (if any) from UI
 Get density/heat sources (from UI or init grid cells)
 Update velocity
 Update density
 Update temperature
 Display density
Update temperature
 Equation
 First term:
 Advection
 Move the temperature through velocity field
 Second term:
 Diffusion
 Can skip this term
Update Temperature
 Add Sources (grid cells or objects or UI)
 Advection (semi-lagrangian step – trace
particles back)
 Diffusion (solve linear system – can skip this
step)
Smoke Simulation
 While (simulating)
 Get external forces (if any) from UI
 Get density/heat sources (from UI or init grid cells)
 Update velocity
 Update density
 Update temperature
 Display density
Display density
 Use any approach you want
 Visualize the density field:
 just opengl render a bunch of cubes
(corresponding to grid cells) that have alpha
values based on how dense the smoke is.
Numerical Dissipation
 ‘Stable Fluids’ method dampens the flow
 Typical with semi- Lagrangian methods
 Improve using
 “Vorticity Confinement” force
Total Forces
 User supplied fields
 Buoyancy force
 New confinement force
Results
Results
Other Methods
 Vortex particle method
 Using octree data structure
Vortex particle method
-Lagrangian primitives
v  
ω  ( p  x)
4 p  x
3
dx
v
ω  ( p  x )
4 p  x
3
dl
 Curves carry the vorticity
 Each local vortex induces a weighted rotation
Vortex particle method
-Lagrangian primitives
 Curves carry the vorticity
 Each local vortex induces a weighted rotation
Method of simulation


Vortex particles (for motion)
organized as curves. = tangent
Smoke particles (for visualisation)

Curves carry vortices

Vortices induce a velocity field
velocity field deforms curves & smoke

At every step:
 Advect the curves
 Stretch
 Advect the smoke
Method of simulation


Vortex particles (for motion)
organized as curves. = tangent
Smoke particles (for visualisation)

Curves carry vortices

Vortices induce a velocity field
velocity field deforms curves & smoke

At every step:
 Advect the curves
 Stretch
 Advect the smoke
Method of simulation


Vortex particles (for motion)
organized as curves. = tangent
Smoke particles (for visualisation)

Curves carry vortices

Vortices induce a velocity field
velocity field deforms curves & smoke

At every step:
 Advect the curves
 Stretch
 Advect the smoke
Video
Smoke Rendering
 Thick smoke: plain particles
 Thin smoke: adaptive particles [AN05]
 accumulate stretching
JTOT  Jn  ...J1  J0
Smoke Rendering
 Thin smoke behaves like a surface
l
n
e

T
1

n  J J e
[ William Brennan ]
Smoke Rendering
 Using Compensated Ray Marching
References