Prepare video!!!Prepare video!!!
Simulation of SmokeSimulation of Smokebased on based on
Vortex Filament PrimitivesVortex Filament PrimitivesAlexis AngelidisAlexis Angelidis
Graphics & Vision Research LabGraphics & Vision Research Lab
Otago - New ZealandOtago - New Zealand
Fabrice NeyretFabrice NeyretGRAVIR / IMAG - INRIAGRAVIR / IMAG - INRIA
Grenoble - FranceGrenoble - France
Tangled-SpaghettisTangled-SpaghettisAlexis AngelidisAlexis Angelidis
Graphics & Vision Research LabGraphics & Vision Research Lab
Otago - New ZealandOtago - New Zealand
Fabrice NeyretFabrice NeyretGRAVIR / IMAG - INRIAGRAVIR / IMAG - INRIA
Grenoble - FranceGrenoble - France
BackgroundBackgroundBackgroundBackgroundFluid animation approaches: Fluid animation approaches: Lagrangian vs EulerianLagrangian vs Eulerian
Popular: Eulerian velocity gridPopular: Eulerian velocity grid
Fluid animation approaches: Fluid animation approaches: Lagrangian vs EulerianLagrangian vs Eulerian
BackgroundBackgroundBackgroundBackground
[McNamara et al.04][McNamara et al.04] [Fattal et al.04][Fattal et al.04][Fedkiw et al.01][Fedkiw et al.01] [Pighin et al.04][Pighin et al.04]
A.A. Velocity grid Velocity grid B.B. Update rules Update rules
ijkv
0
1
)( 2
v
gvvvv
p
t
0
1
)( 2
v
gvvvv
p
t
Fluid animation approaches: Fluid animation approaches: Lagrangian vs EulerianLagrangian vs Eulerian
Popular: Eulerian velocity gridPopular: Eulerian velocity grid
BackgroundBackgroundBackgroundBackground
[McNamara et al.04][McNamara et al.04] [Fattal et al.04][Fattal et al.04][Fedkiw et al.01][Fedkiw et al.01] [Pighin et al.04][Pighin et al.04]
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
vω vω CurlCurl
vorticity vorticity vorticity vorticity velocity vvelocity vvelocity vvelocity v
vωω
)( dt
dvω
ω)(
dt
d
0
1)(
v
vvv
pt
0
1)(
v
vvv
pt
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
vω vω CurlCurl
vorticity vorticity vorticity vorticity velocity vvelocity vvelocity vvelocity v
vωω
)( dt
dvω
ω)(
dt
d
vv
0
1)(
v
vvv
pt
0
1)(
v
vvv
pt
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
vω vω
dx
xp
xpv 3
4
)(
dx
xp
xpv 3
4
)(
CurlCurl
vorticity vorticity vorticity vorticity velocity vvelocity vvelocity vvelocity v
vωω
)( dt
dvω
ω)(
dt
d
0
1)(
v
vvv
pt
0
1)(
v
vvv
pt
BIOT-SAVARTBIOT-SAVART
One Alternative – Vortex MethodsOne Alternative – Vortex MethodsOne Alternative – Vortex MethodsOne Alternative – Vortex Methods
What’s induced by these curves?What’s induced by these curves?What’s induced by these curves?What’s induced by these curves?
dxxp
xpv
3
4
)(
dxxp
xpv
3
4
)(
BIOT-SAVARTBIOT-SAVART
Fluid described with curvesFluid described with curvesFluid described with curvesFluid described with curves
Fine simulationsFine simulations• FilamentsFilaments• FeaturesFeatures
dxv
dxv
BIOT-SAVARTBIOT-SAVART
Geometric InterpretationGeometric InterpretationGeometric InterpretationGeometric Interpretation
34
)(
xp
xp
34
)(
xp
xp
dxv
dxv
BIOT-SAVARTBIOT-SAVART
)()(
xppfVORTEX
)()(
xppfVORTEX
VortexVortex
Geometric InterpretationGeometric InterpretationGeometric InterpretationGeometric Interpretation
34 xp 34 xp
34
)(
xp
xp
34
)(
xp
xp
34
1
xp 34
1
xp
dxv
dxv
BIOT-SAVARTBIOT-SAVART
)()(
xppfVORTEX
)()(
xppfVORTEX
VortexVortex
Rotation magnitudeRotation magnitude
Geometric InterpretationGeometric InterpretationGeometric InterpretationGeometric Interpretation
34 xp 34 xp
34
)(
xp
xp
34
)(
xp
xp
Lagrangian Vortex MethodsLagrangian Vortex MethodsLagrangian Vortex MethodsLagrangian Vortex Methods
CC00
CC22
CC33
• Entire fluid = curves of vortices !Entire fluid = curves of vortices !
DynamicsDynamics
• Curves induce movement Curves induce movement
• Curves are animated with this movementCurves are animated with this movement
CC11
ConsequenceConsequence• Cheap storageCheap storage• Dynamic-keyframed curveDynamic-keyframed curve
VideoVideo#2-5#2-5
VideoVideo#2-5#2-5
dxv
dxv
BIOT-SAVARTBIOT-SAVART
Geometric InterpretationGeometric InterpretationGeometric InterpretationGeometric Interpretation
34
)(
xp
xp
34
)(
xp
xp
• EfficiencyEfficiency• stable vortex + noisestable vortex + noise• closed-form integralclosed-form integral• O(O(NN22)), accelerated with LOD, accelerated with LOD• time integrationtime integration
• Define smoke particlesDefine smoke particles
ContributionsContributionsContributionsContributions
Sum of vortices along curvesSum of vortices along curvesSum of vortices along curvesSum of vortices along curvesA more convenient amplitudeA more convenient amplitude
Biot-SavartBiot-Savart CauchyCauchy
There are There are closed-formsclosed-forms for the Cauchy kernel for the Cauchy kernel integral along a integral along a circlecircle and a and a segmentsegment
3 4
1
d 3 4
1
d )/1(
122 rd )/1(
122 rd
Discrete segmentsDiscrete segments
[MS.98][MS.98]
Large time steps: high order schemeLarge time steps: high order schemeLarge time steps: high order schemeLarge time steps: high order scheme
• Traditional forward Euler , BSTraditional forward Euler , BStrajectory = sum of velocities of rotationtrajectory = sum of velocities of rotation
• Biot-Savart tells more than velocityBiot-Savart tells more than velocity
• Our schemeOur schemetrajectory = sum of Rotationtrajectory = sum of Rotation
Levels of detailLevels of detailLevels of detailLevels of detail
• We define a bound to the error We define a bound to the error between a segment and split segmentsbetween a segment and split segments
• We precompute a binary tree for each filamentWe precompute a binary tree for each filament
Too detailedToo detailed Too coarseToo coarseAlrightAlright
ppqq
pp
ijkLODijkLOD
• 3 types of noise vortices :3 types of noise vortices :– Tangent vortexTangent vortex
– Normal vortexNormal vortex
– Binormal vortexBinormal vortex
Divergence-free NoiseDivergence-free NoiseDivergence-free NoiseDivergence-free Noise
tt J' tt J'
nn 1 ' JT nn 1 ' JT
)()(' 1 ntb JJ T )()(' 1 ntb JJ T
Good distribution Good distribution of directionsof directions
Noise
FilamentsSmoke
SmokeSmokeSmokeSmoke• ParticlesParticles
– accumulate deformationaccumulate deformation– split when accumulated deformation too bigsplit when accumulated deformation too big
• Rendering Rendering – 2D ellipses2D ellipses– Self-shadowingSelf-shadowing
VideoVideoVideoVideo
• Filaments induce movement (everywhere)Filaments induce movement (everywhere)
• Filaments are animated with the movementFilaments are animated with the movement
• Smoke-particles are animated with LOD- Smoke-particles are animated with LOD- filaments and divergence-free noisefilaments and divergence-free noise
Smoke solver overviewSmoke solver overviewSmoke solver overviewSmoke solver overview
ImprovementsImprovementsImprovementsImprovements
• Smoke particle mergingSmoke particle merging
• Curve split/collapse or resamplingCurve split/collapse or resampling
• Currently, limited boundary conditionsCurrently, limited boundary conditions
ConclusionConclusionConclusionConclusion• Separated dynamics & renderingSeparated dynamics & rendering
• Efficient & hi-resolutionEfficient & hi-resolution
• Not bounded in spaceNot bounded in space
• Compact: easy to load and saveCompact: easy to load and save
• Dynamics or keyframesDynamics or keyframes
THANK YOUQuestions ?THANK YOUQuestions ?
A new integration schemeA new integration schemeA new integration schemeA new integration scheme
• Traditional forward EulerTraditional forward Eulerptpvtpp '
pv
• With our closed form, induced velocity is With our closed form, induced velocity is given by a 4x4 matrixgiven by a 4x4 matrix
• Our schemeOur scheme... ) exp(' ptpptp
a translation is a translationa translation is a translationa rotation is a rotationa rotation is a rotationa twista twist is a twistis a twist
M
M
M M
Simple rotation algebraSimple rotation algebraSimple rotation algebraSimple rotation algebra
• Rotation of center c around axis Rotation of center c around axis of angle of anglegiven by the magnitude of given by the magnitude of
0000
0
0
0
logxyzxxy
zxyzxz
yzxyyz
cc
cc
cc
R
cR ,log
MotivationMotivationMotivationMotivation
A fluid is A fluid is not an actornot an actor
Existing fluid-directing techniques areExisting fluid-directing techniques areslowslow OR OR tedioustedious
A technique for keyframing fluid animationA technique for keyframing fluid animation• Not boundedNot bounded in a cube in a cube
• Predictable fluid-editing Predictable fluid-editing primitivesprimitives
• FastFast//RobustRobust
AimAimAimAim
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
One Alternative – Vortex MethodsOne Alternative – Vortex Methodsvelocityvelocity vs. vorticityvs. vorticity
vω
dx
xp
xpv 3
4
)(
CurlCurl
vorticity vorticity vorticity vorticity
Biot-SavartBiot-Savart
velocity vvelocity vvelocity vvelocity v
vωω
)( dt
d
To get the motion: computeTo get the motion: compute velocity from vorticityvelocity from vorticity
pt
1)(
0
vvv
v
What does the Biot-Savart Law mean?What does the Biot-Savart Law mean?What does the Biot-Savart Law mean?What does the Biot-Savart Law mean?
34
1)(
xpxpBS
34
)()(
xp
xppfVORTEX
BIOT-SAVARTBIOT-SAVART
VortexVortex
Rotation magnitudeRotation magnitudevortexvortex
dx
xp
xpv 3
4
)(
vorticesvortices
The domain of the BS integralThe domain of the BS integralThe domain of the BS integralThe domain of the BS integral
CC
C
C dxxp
xpv 3
4
)(
2.2. Integral over a curveIntegral over a curve of a slice :of a slice :
3. Integral on many curves3. Integral on many curves
iCTOTAL vv
In 3D, vortices concentrate along In 3D, vortices concentrate along tubestubes(with a distribution profile around axis)(with a distribution profile around axis)
CC11
1.1. Integral over a slice of vortices :Integral over a slice of vortices :
change