Fluid Animation - Columbia University
Transcript of Fluid Animation - Columbia University
![Page 1: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/1.jpg)
Fluid Animation
Christopher Batty
November 17, 2011
![Page 2: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/2.jpg)
What distinguishes fluids?
![Page 3: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/3.jpg)
What distinguishes fluids?
β’ No βpreferredβ shape
β’ Always flows when force is applied
β’ Deforms to fit its container
β’ Internal forces depend on velocities, not
displacements
Watch fluid simulation clips
![Page 4: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/4.jpg)
Basic Theory
![Page 5: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/5.jpg)
Eulerian vs. Lagrangian
Lagrangian: Point of reference moves with
the material.
Eulerian: Point of reference is stationary.
e.g. Weather balloon (Lagrangian) vs.
weather station on the ground (Eulerian)
![Page 6: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/6.jpg)
Eulerian vs. Lagrangian
Consider an evolving temperature field.
β’ Lagrangian: Set of moving particles,
each with a temperature value.
![Page 7: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/7.jpg)
Eulerian vs. Lagrangian
Consider an evolving temperature field.
β’ Eulerian: A fixed grid of temperature
values, that temperature flows through.
![Page 8: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/8.jpg)
Consider the temperature π(π₯, π‘) at a point following a given path, π₯(π‘).
Two ways temperature changes: 1. Heating/cooling occurs at the current point.
2. Following the path, the point moves to a cooler/warmer location.
Relating Eulerian and Lagrangian
π₯(π‘0)
π₯(π‘1) π₯(π‘πππ€)
![Page 9: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/9.jpg)
Time derivatives
Mathematically:
Chain
rule!
Definition
of π»
Choose ππ₯
ππ‘= π’
π·
π·π‘π π₯ π‘ , π‘ =
ππ
ππ‘+ππ
ππ₯
ππ₯
ππ‘
=ππ
ππ‘+ π»π β
ππ₯
ππ‘
=ππ
ππ‘+ π β π»π
![Page 10: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/10.jpg)
Material Derivative
This is called the material derivative, and
denoted π·
π·π‘ .
Change at the
current (fixed) point.
π·π
π·π‘=ππ
ππ‘+ ππ»π
Change due
to movement.
Change at a point moving
with the velocity field.
![Page 11: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/11.jpg)
Advection
To track a quantity T simply moving (passively) through a velocity field:
This is the advection equation.
Think of colored dye or massless particles drifting around in fluid.
π·π
π·π‘= 0
ππ
ππ‘+ ππ»π = 0 or equivalently
Watch dye in fluid clip
![Page 12: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/12.jpg)
Equations of Motion
β’ For general materials, we have Newtonβs
second law: F = ma.
β’ Specialized for fluids:
βNavier-Stokes Equationsβ
![Page 13: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/13.jpg)
Navier-Stokes
Density Γ Acceleration = Sum of Forces
ππ·π
π·π‘= πππ
Expanding the material derivativeβ¦
πππ
ππ‘= βπ π β π»π + ππ
π
![Page 14: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/14.jpg)
What are the forces on a fluid? Primarily for now:
β’ Pressure
β’ Viscosity
β’ Simple βexternalβ forces β (e.g. gravity, buoyancy, user forces)
Also:
β’ Surface tension
β’ Coriolis
β’ Possibilities for more exotic fluid types: β Elasticity (e.g. silly putty)
β Shear thickening / thinning (e.g. βoobleckβ, ketchup)
β Electromagnetic forces
β’ Skyβs the limit... Watch oobleck clip
![Page 15: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/15.jpg)
In fullβ¦
πππ
ππ‘= βπ π β π»π + ππ
π
Advection
Change in
velocity at a
fixed point
Forces
(pressure,
viscosity
gravity,β¦)
![Page 16: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/16.jpg)
Operator splitting
Break the equation into steps:
1. Advection: πππ
ππ‘= βπ π β π»π
2. Pressure: πππ
ππ‘= πππππ π π’ππ
3. Viscosity: πππ
ππ‘= ππ£ππ πππ ππ‘π¦
4. External: πππ
ππ‘= πππ‘βππ
![Page 17: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/17.jpg)
1. Advection
![Page 18: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/18.jpg)
Advection
Previously, we considered advection of a passive scalar quantity, π, by velocity π.
In Navier-Stokes we saw:
Velocity π is advected by itself!
ππ
ππ‘= βπ β π»π
ππ
ππ‘= βπ β π»π
![Page 19: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/19.jpg)
Advection
i.e., The scalar components π’, π£ of the
vector π are each advected in the same
way.
We can reuse the same numerical method.
![Page 20: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/20.jpg)
2. Pressure
![Page 21: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/21.jpg)
Pressure
What does pressure do?
β Enforces incompressibility.
Typical fluids (mostly) do not compress.
β’ Exceptions: high velocity, high pressure, β¦
![Page 22: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/22.jpg)
Incompressibility
Compressible
velocity field Incompressible
velocity field
![Page 23: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/23.jpg)
Incompressibility
Intuitively, net flow into/out of a given region is zero (no sinks/sources).
Integrate the flow across the boundary of a closed region:
π β ππΞ©
= 0
π
![Page 24: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/24.jpg)
Incompressibility
π β ππΞ©
= 0
By divergence theorem:
π β π = 0
But this is true for any region, so π β π = π everywhere.
![Page 25: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/25.jpg)
Pressure
How does pressure enter in? β Pressure is the force required to ensure that
π» β π = 0.
β Pressure force has the following form:
ππ = βπ»π
![Page 26: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/26.jpg)
Helmholtz-Hodge Decomposition
= +
Input Velocity field Curl-Free
(irrotational)
Divergence-Free
(incompressible)
π’ = π»π + π» Γ π
π’πππ = πΉππππ π π’ππ + π’πππ€
![Page 27: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/27.jpg)
Aside: Pressure as Lagrange Multiplier
Interpret as an optimization:
Find the closest ππππ€ to ππππ where π» β ππππ€ = 0
minππππ€ππππ€ β ππππ
s. t. π» β ππππ€ = 0
A Lagrange multiplier to enforce the
constraint is exactly pressure.
![Page 28: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/28.jpg)
3. Viscosity
[Carlson et al.
2003]
![Page 29: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/29.jpg)
Viscosity
What characterizes a viscous liquid?
β’ βThickβ, damped behaviour
β’ Higher resistance to flow
Watch viscous honey clip
![Page 30: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/30.jpg)
Viscosity
Loss of energy due to internal friction between molecules moving at different velocities.
Interactions between molecules in different layers causes shear stress thatβ¦
β’ acts to oppose relative motion.
β’ causes an exchange of momentum
![Page 31: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/31.jpg)
Viscosity
Loss of energy due to internal friction between molecules moving at different velocities.
Interactions between molecules in different layers causes shear stress thatβ¦
β’ acts to oppose relative motion.
β’ causes an exchange of momentum
![Page 32: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/32.jpg)
Viscosity
Loss of energy due to internal friction between molecules moving at different velocities.
Interactions between molecules in different layers causes shear stress thatβ¦
β’ acts to oppose relative motion.
β’ causes an exchange of momentum
![Page 33: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/33.jpg)
Viscosity
Loss of energy due to internal friction between molecules moving at different velocities.
Interactions between molecules in different layers causes shear stress thatβ¦
β’ acts to oppose relative motion.
β’ causes an exchange of momentum
![Page 34: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/34.jpg)
Viscosity
Imagine fluid particles with general velocities.
Each particle interacts with nearby neighbours, exchanging momentum.
![Page 35: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/35.jpg)
Viscosity
Amount of momentum exchanged is proportional to:
β’ Velocity gradient, π»π.
β’ Viscosity coefficient, π
For any closed region, net in/out flow of momentum:
ππ»π β π = ππ β πππΞ©
So the viscosity force is: ππ£ππ πππ ππ‘π¦ = ππ β ππ
![Page 36: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/36.jpg)
Viscosity
The end result is a smoothing of the velocity.
This is exactly the action of the Laplacian
operator, π β π.
For scalar quantities, the same operator is
used to model diffusion.
![Page 37: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/37.jpg)
4. External Forces
![Page 38: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/38.jpg)
External Forces
Any other forces you may want.
β’ Simplest is gravity:
β πΉπ = ππ for π = (0,β9.81)
β’ Buoyancy models are similar,
β e.g., πΉπ = π½(πππ’πππππ‘ β ππππ)π
![Page 39: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/39.jpg)
Numerical Methods
![Page 40: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/40.jpg)
1. Advection
![Page 41: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/41.jpg)
Advection of a Scalar
β’ First, weβll consider advecting a scalar
quantity, π.
β temperature, color, smoke density, β¦
β’ The grid stores π and π.
![Page 42: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/42.jpg)
Eulerian
Approximate derivatives with finite differences. ππ
ππ‘+ π β π»π = 0
FTCS = Forward Time, Centered Space:
πππ+1 β ππ
π
βπ‘+ π’ππ+1
π β ππβ1π
2βπ₯= 0
Unconditionally
Unstable!
Conditionally
Stable!
Lax:
πππ+1 β (ππ+1
π + ππβ1π)/2
βπ‘+ π’ππ+1
π β ππβ1π
2βπ₯= 0
Many possible methods, stability can be a challenge.
![Page 43: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/43.jpg)
Lagrangian
β’ Advect data forward from grid points by integrating position according to grid velocity.
β’ Problem: New data position doesnβt necessarily land on a grid point.
?
![Page 44: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/44.jpg)
Semi-Lagrangian
β’ Look backwards in time from grid points,
to see where data is coming from.
β’ Interpolate data at previous time.
![Page 45: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/45.jpg)
Semi-Lagrangian - Details
1. Determine velocity ππ,π at grid point,.
2. Integrate position for a timestep of ββπ‘.
e.g. π₯ππππ = π₯π,π β βπ‘ππ,π
3. Interpolate π at π₯ππππ, call it πππππ.
4. Assign ππ,π = πππππ for the next time.
Unconditionally stable!
![Page 46: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/46.jpg)
Advection of Velocity
β’ This is great for scalars. What about velocity advection?
β’ Same method: β Trace back with current velocity
β Interpolate velocity (component) at that point
β Assign it to the grid point at the new time.
β’ Caution: Do not overwrite the velocity field youβre using to trace back!
ππ
ππ‘= βπ β π»π
![Page 47: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/47.jpg)
2. Pressure
![Page 48: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/48.jpg)
Recall⦠Helmholtz-Hodge
Decomposition
= +
Input Velocity field Curl-Free
(irrotational)
Divergence-Free
(incompressible)
π’ = π»π + π» Γ π
π’πππ = πΉππππ π π’ππ + π’πππ€
![Page 49: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/49.jpg)
Pressure Projection - Derivation
(1) πππ
ππ‘= βπ»π and (2) π» β π = 0
Discretize (1) in timeβ¦
ππππ€ = ππππ ββπ‘
ππ»π
Then plug into (2)β¦
π» β ππππ ββπ‘
ππ»π = 0
![Page 50: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/50.jpg)
Pressure Projection
Implementation:
1) Solve a linear system for p: βπ‘
ππ» β π»π = π» β ππππ
2) Update grid velocity with:
ππππ€ = ππππ ββπ‘
ππ»π
![Page 51: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/51.jpg)
Implementation
Discretize with finite differences:
e.g., in 1D:
βπ‘
π
ππ+1 β ππβπ₯
βππ β ππβ1βπ₯
βπ₯=π’π+1πππ β π’π
πππ
βπ₯
ππ+1 ππβ1 ππ
π’π+1 π’π
βπ‘
ππ» β π»π = π» β ππππ
![Page 52: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/52.jpg)
Solid Boundary Conditions
52
π
π
Free Slip: ππππ€β π = 0
![Page 53: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/53.jpg)
Staggered vs. Non-staggered
β’ Two choices for grids:
β Velocity and pressure co-located
β Velocity and pressure staggered
ππ+1 ππβ1 ππ
ππ+1 ππβ1 ππ
π’π+1 π’π
π’π+1 π’π π’πβ1
![Page 54: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/54.jpg)
Why prefer staggered?
β’ Finite differences line up nicely.
β π’ and π»π match, π and π» β π’ match
β’ β¦which improves stability!
ππ+1 ππβ1 ππ
π’π+1 π’π
![Page 55: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/55.jpg)
3. Viscosity
[Carlson et al.
2003]
![Page 56: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/56.jpg)
Viscosity
PDE: πππ
ππ‘= ππ» β π»π
Use finite differences.
Discretized in time:
ππππ = ππππ +βπ‘πππ» β π»πβ
![Page 57: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/57.jpg)
Viscosity β Time Integration
ππππ = ππππ +βπ‘ππ π» β π»πβ
Explicit integration, let πβ be ππππ: β Just estimate βπ‘π
ππ» β π»ππππ
β Add to current π. β Very unstable.
Implicit integration, let πβ be ππππ€: β Stable for high viscosities.
β Need to solve a system of equations.
![Page 58: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/58.jpg)
Viscosity β Implicit Integration
Solve for ππππ:
ππππ ββπ‘πππ» β π»ππππ€ = ππππ
Apply separately for each velocity component.
e.g. in 1D:
π’π ββπ‘π
π
π’π+1 β π’πβπ₯
βπ’π β π’πβ1βπ₯
βπ₯= π’ππππ
π’π+1 π’πβ1 π’π
![Page 59: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/59.jpg)
Solid Boundary Conditions
59
No-Slip: ππππ€= 0
Watch no-slip clip
![Page 60: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/60.jpg)
4. External Forces
![Page 61: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/61.jpg)
Gravity
Discretized form is: ππππ = ππππ + βπ‘π
Just add a downward acceleration to each
velocity, scaled by timestep.
![Page 62: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/62.jpg)
Gravity
β’ Note: in a closed fluid-filled container,
gravity (alone) wonβt do anything!
β Incompressibility cancels it out. β (Assuming constant density)
Start After gravity step After pressure step
![Page 63: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/63.jpg)
Simple Buoyancy
Look up πππ’πππππ‘ at grid point,
increment velocity based on difference
from a reference velocity.
ππππ = ππππ + βπ‘π½ πππ’πππππ‘ β ππππ π
π½ dictates the strength of the
buoyancy force.
See paper for a more elaborate model:
βVisual simulation of smokeβ, 2001.
![Page 64: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/64.jpg)
User Forces
Add whatever additional forces we want,
such as:
β’ near the mouse when the user clicks
β’ Paddle forces in Plasma Pong
Watch clip
![Page 65: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/65.jpg)
Ordering of Steps
Order turns out to be important.
Why?
1) Incompressibility is not guaranteed at
intermediate steps
2) Advecting with a compressible field
causes volume/material loss or gain!
![Page 66: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/66.jpg)
Ordering of Steps
Consider advection in this field:
Best ordering
1) Advection
2) Viscosity
3) Add Forces
4) Make incompressible (Pressure)
![Page 67: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/67.jpg)
Useful References
β’ Robert Bridsonβs SIGGRAPH 2007 Fluid
Course notes: http://www.cs.ubc.ca/~rbridson/fluidsimulation/
β’ βStable Fluidsβ [Stam 1999]
β’ βReal-Time Stable Fluid Dynamics for
Gamesβ [Stam, 2003]
![Page 68: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/68.jpg)
Liquids
![Page 69: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/69.jpg)
Liquids
Whatβs missing so far?
We need:
β’ A surface representation
β’ Boundary conditions at the surface
![Page 70: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/70.jpg)
The Big Picture
Velocity Solver
Advect Velocities
Add Viscosity
Add Gravity
Project Velocities
to be
Incompressible
![Page 71: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/71.jpg)
What about liquids?
Advect Velocities
Add Viscosity
Add Gravity
Project Velocities
to be
Incompressible
Surface Tracker
Velocity Solver
![Page 72: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/72.jpg)
Surface Tracker
Given: liquid surface geometry, velocity field,
timestep
Compute: new surface geometry by
advection.
ππ
ππ+1
ππ
![Page 73: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/73.jpg)
Surface Tracker
Ideally:
β’ Efficient
β’ Accurate
β’ Handles merging/splitting (topology changes)
β’ Conserves volume
β’ Retains small features
β’ Smooth surface for rendering
β’ Provides convenient geometric operations
β’ Easy to implementβ¦
Very hard (impossible?) to do all of these at once.
![Page 74: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/74.jpg)
Surface Tracking Options
1. Particles
2. Level sets
3. Volume-of-fluid (VOF)
4. Triangle meshes
5. Hybrids (many of these)
![Page 75: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/75.jpg)
Particles
[Zhu & Bridson 2005]
![Page 76: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/76.jpg)
Particles
Perform passive Lagrangian advection on
each particle.
For rendering, need to reconstruct a surface.
![Page 77: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/77.jpg)
Level sets
[Losasso et al.
2004]
![Page 78: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/78.jpg)
Level sets Each grid point stores signed distance to the
surface (inside <= 0, outside > 0).
Surface is interpolated zero isocontour.
> 0
<= 0
![Page 79: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/79.jpg)
Volume of fluid
[Mullen et al 2007]
![Page 80: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/80.jpg)
Volume-Of-Fluid
Each cell stores fraction f Ο΅ 0,1 indicating
how empty/full it is.
Surface is transition region, f β 0.5.
0
0
0
0
0
0
0
0
0
0
0
0.4
0.4
0
0
0.
8
1
1
0.8
0.5
1
1
1
1
1
1
1
1
1
1
![Page 81: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/81.jpg)
Meshes
[Brochu et al 2010]
![Page 82: Fluid Animation - Columbia University](https://reader034.fdocuments.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/82.jpg)
Meshes
Store a triangle mesh.
Advect its vertices, and correct for collisions.