Vortex Fluid Structure For Smoke Control SCA 2006 Alexis Angelidis Alexis Angelidis (1) Fabrice Neyret Fabrice Neyret (2) Karan Singh Karan Singh (1) Derek Nowrouzezahrai Derek Nowrouzezahrai (1) (1): DGP, U of Toronto (2): Evasion-GRAVIR / IMAG-INRIA
Motivation Fluid Animation: smoke, clouds, fire, explosion, splashes, sea…Fluid Animation: smoke, clouds, fire, explosion, splashes, sea… Simulation vs AnimationSimulation vs Animation [ Areté Entertainment, inc. 96] [ LOTR ]
Motivation Fluid Animation: smoke, clouds, fire, explosion, splashes, sea…Fluid Animation: smoke, clouds, fire, explosion, splashes, sea… Simulation vs AnimationSimulation vs Animation Approaches to control:Approaches to control: –Phenomenological, limited –Fake forces –Control by keyframing ‘shapes’ [ Areté Entertainment, inc. 96] [ LotR ]
Motivation Most related work Density field given at keyframesDensity field given at keyframes Solver between framesSolver between frames What we want No hand-drawn smokeNo hand-drawn smoke Natural controlNatural control [Treuille et al. 03],[McNamara et al. 04],[Fattal et al. 04] [McNamara et al. 04] key1 key2
Background [AN05] Background [AN05] Eulerian VorticityVelocity Lagrangian movingquantity representation ourmethod ‘‘Chart of methods for numerical fluid simulation’’ popular
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation velocity v translation in m s -1 Rotation in rad s -1 vorticityvorticitypopular 3Dfield
Curl Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation velocity v vorticityvorticitypopular
BIOT-SAVART Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation vorticityvorticitypopular
Background Eulerian VorticityVelocity Lagrangian movingquantity representation ourmethod Eulerian Lagrangian The flow modifies quantities held at static positions The flow carries floaters that hold the quantities Dynamics : popular
Background Eulerian VorticityVelocity Lagrangian movingquantity representation ourmethod LagrangianLagrangianEulerianEulerian at particle in grid popular
Background Eulerian VorticityVelocity Lagrangian movingquantity popular ourmethod NAVIER-STOKES ( incompressible ) representation
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation popular
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod VORTICITY EQUATION representation ( inviscid ) popular
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation popular Easy boundary conditions Easy extra differential eqn … No diffusion Implicit incompressibility compact compactUnbounded…
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod VORTICITY EQUATION representation popular Vorticity: Vortex particle advected, vector stretched vorticity moves as material lines
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation popular Vorticity: Our primitive = curves = tangent = tangent
Background Eulerian VorticityVelocity Lagrangian movingquantity ourmethod representation Density: a quantity at nodes a quantity at nodes Density: Dedicated particles Dedicated particles - passive floaters - passive floaters - for rendering - for rendering - only where smoke is - only where smoke is popular
Lagrangian primitives Curves carry the vorticityCurves carry the vorticity Each local vortex induces a weighted rotationEach local vortex induces a weighted rotation
Lagrangian primitives Curves carry the vorticityCurves carry the vorticity Each local vortex induces a weighted rotationEach local vortex induces a weighted rotation
Method of simulation Vortex particles (for motion) organized as curves. = tangentVortex particles (for motion) organized as curves. = tangent Smoke particles (for visualisation)Smoke particles (for visualisation) Curves carry vorticesCurves carry vortices Vortices induce a velocity fieldVortices induce a velocity field velocity field deforms curves & smokevelocity field deforms curves & smoke At every step: Advect the curvesAdvect the curves StretchStretch Advect the smokeAdvect the smoke
Method of simulation Vortex particles (for motion) organized as curves. = tangentVortex particles (for motion) organized as curves. = tangent Smoke particles (for visualisation)Smoke particles (for visualisation) Curves carry vorticesCurves carry vortices Vortices induce a velocity fieldVortices induce a velocity field velocity field deforms curves & smokevelocity field deforms curves & smoke At every step: Advect the curvesAdvect the curves StretchStretch Advect the smokeAdvect the smoke
Method of simulation Vortex particles (for motion) organized as curves. = tangentVortex particles (for motion) organized as curves. = tangent Smoke particles (for visualisation)Smoke particles (for visualisation) Curves carry vorticesCurves carry vortices Vortices induce a velocity fieldVortices induce a velocity field velocity field deforms curves & smokevelocity field deforms curves & smoke At every step: Advect the curvesAdvect the curves StretchStretch Advect the smokeAdvect the smoke
A new representation of vortex curvesA new representation of vortex curves Compact, stable, controlable motion primitives Controls of the motion primitivesControls of the motion primitives Fast ‘‘noise’’ for fake turbulence detailsFast ‘‘noise’’ for fake turbulence details Contributions
A new representation of vortex curvesA new representation of vortex curves Compact, stable, controlable motion primitives Controls of the motion primitivesControls of the motion primitives Fast ‘‘noise’’ for fake turbulence detailsFast ‘‘noise’’ for fake turbulence details Contributions
Deformation of curves previous approach [AN05] If refined: too complex Polygon If not refined: undersampling Strategy to control complexity
New representation Solution: harmonic analysis of coordinatesSolution: harmonic analysis of coordinates x = in y z Reference frame: best ellipsoidReference frame: best ellipsoid a pair of coefficients for each harmonic Curves described by :Curves described by : –Frame o e x e y e z –Frequencies 1..N SynthesisAdvectionAnalysis Complexity control …
New representation Solution: harmonic analysis of coordinatesSolution: harmonic analysis of coordinates x = in y z Reference frame: best ellipsoidReference frame: best ellipsoid a pair of coefficients for each harmonic Curves described by :Curves described by : –Frame o e x e y e z –Frequencies 1..N SynthesisAdvectionAnalysis Complexity control exexexex eyeyeyey ezezezez o …
New representation Solution: harmonic analysis of coordinatesSolution: harmonic analysis of coordinates x = in y z Reference frame: best ellipsoidReference frame: best ellipsoid a pair of coefficients for each harmonic Curves described by :Curves described by : –Frame o e x e y e z –Frequencies 1..N SynthesisAdvectionAnalysis Complexity control exexexex eyeyeyey ezezezez o …
New representation Solution: harmonic analysis of coordinatesSolution: harmonic analysis of coordinates x = in y z Reference frame: best ellipsoidReference frame: best ellipsoid a pair of coefficients for each harmonic Curves described by :Curves described by : –Frame o e x e y e z –Frequencies 1..N SynthesisAdvectionAnalysis Complexity control exexexex eyeyeyey ezezezez o …
Meaning of description e z points towards moving direction e z points towards moving direction exexexex eyeyeyey ezezezezo Frequencies c x c y c z give texture to the flowFrequencies c x c y c z give texture to the flow … ThicknessThickness
Video: representation
A new representation of vortex curvesA new representation of vortex curves Compact, stable, controlable motion primitives Controls of the motion primitivesControls of the motion primitives Fast ‘‘noise’’ for fake turbulence detailsFast ‘‘noise’’ for fake turbulence details Contributions
direction: align e z with tangentdirection: align e z with tangent Targets:Targets: Twisting smoke: spin vortices around e zTwisting smoke: spin vortices around e z Edit, delete …Edit, delete … Modulate c x c y c z to texture the flowModulate c x c y c z to texture the flow Control without with exexexex eyeyeyey ezezezezo … 1..N +
direction: align e z with tangentdirection: align e z with tangent Targets:Targets: Twisting smoke: spin vortices around e zTwisting smoke: spin vortices around e z Edit, delete …Edit, delete … Modulate c x c y c z to texture the flowModulate c x c y c z to texture the flow Control without with exexexex eyeyeyey ezezezezo … 1..N +
direction: align e z with tangentdirection: align e z with tangent Targets:Targets: Twisting smoke: spin vortices around e zTwisting smoke: spin vortices around e z Edit, delete …Edit, delete … Modulate c x c y c z to texture the flowModulate c x c y c z to texture the flow Control without with exexexex eyeyeyey ezezezezo … 1..N +
How to control One cannot just translate the curves: the smoke does not followOne cannot just translate the curves: the smoke does not follow exexexex eyeyeyey ezezezez o Solution: paddle (servoing )Solution: paddle (servoing )
Video: control
A new representation of vortex curvesA new representation of vortex curves Compact, stable, controlable motion primitives Controls of the motion primitivesControls of the motion primitives Fast ‘‘noise’’ for fake turbulence detailsFast ‘‘noise’’ for fake turbulence details Contributions
[AN05]: noise = extra vortex particles advected in the flow, no stretch Costly (needs a lot) Source, sampling Tiled vortex noise: noise layer = separate simulation, in toroidal space Tiled in space Additional evolving velocity field Noise: fake turbulence details
[AN05]: noise = extra vortex particles advected in the flow, no stretch Costly (needs a lot) Source, sampling Tiled vortex noise: noise layer = separate simulation, in toroidal space Tiled in space Additional evolving velocity field Noise: fake turbulence details
[AN05]: noise = extra vortex particles advected in the flow, no stretch Costly (needs a lot) Source, sampling Tiled vortex noise: noise layer = separate simulation, in toroidal space Tiled in space Additional evolving velocity field Noise: fake turbulence details
Video: noise
A new representation of vortex curvesA new representation of vortex curves Compact, stable, controlable motion primitives Controls of the motion primitivesControls of the motion primitives Fast ‘‘noise’’ for fake turbulence detailsFast ‘‘noise’’ for fake turbulence details Velocity cache, renderingVelocity cache, rendering Contributions
Octree cache Velocity computed at every smoke particle & every vorticity curve sampleVelocity computed at every smoke particle & every vorticity curve sample Velocity computed at octree leaves + inbetween interpolationVelocity computed at octree leaves + inbetween interpolation
Octree cache Velocity computed at every smoke particle & every vorticity curve sampleVelocity computed at every smoke particle & every vorticity curve sample Velocity computed at octree leaves + inbetween interpolationVelocity computed at octree leaves + inbetween interpolation
Rendering Thick smoke: plain particlesThick smoke: plain particles Thin smoke: adaptive particles [AN05]Thin smoke: adaptive particles [AN05] –accumulate stretching
Rendering Thin smoke behaves like a surfaceThin smoke behaves like a surface [ William Brennan ] e n l
Results - video fps Forest fire Genie&lamp Walkthrough Fly Modeler quality Final rendering quality
Vorticity filaments: Compact, high-res, fastCompact, high-res, fast Good handles to manipulate a fluidGood handles to manipulate a fluid Can be manipulated interactively or post-Can be manipulated interactively or post- Future work: Split/mergeSplit/merge High-quality collisionsHigh-quality collisions 2-phase, buoyancy, …2-phase, buoyancy, … Conclusion Coupling with grids
Thanks!
Video: collisions
Video: thickness
Rendering Thin smoke behaves like a surfaceThin smoke behaves like a surface Diffuse off Diffuse on e n l
Rendering Thin smoke behaves like a surfaceThin smoke behaves like a surface
Lagrangian primitives Curves carry the vorticityCurves carry the vorticity Each vortex induces a weighted rotationEach vortex induces a weighted rotation Effect of one vortex on a shape :
Control currents Without controlWithout controlWith control L ezezezez L
Checkpoint With controlWith control