Levelsets in Production : Spider-Man 3
What are levelsets? Implicit surface representation SDF (signed distance function) in a regularly sampled grid.
Sandstorm Rich toolset Includes levelset-based modeling and animation tools. Geometry to Field Field to Geometry Field Attribute transfer / lookup Snap to levelset etc
Benefits of Levelsets Distance to the surface Inside or Outside Boolean operations Surface modification (noise) etc
Examples : Combining two fields
Examples : boolean union - max(A,B) intersection - min(A,B)
Examples : boolean cut - max(A,-B) adding noise to the result
Procedural noise variations Examples : Procedural noise variations
Case 1 :: Geometry Blending Create two identical fields Convert geometry into levelsets detect the places where the two objects intersect in the field with a certain threshold
Case 1 :: Geometry Blending Calculate the resultant levelset with:
Case 2 :: Erosion Work in a still frame Distribute particles uniformly in the geometry Particles will store the erosion amount Convert the geometry into a levelset Modify the levelset (amount attibute + spatial noise) Apply the erosion to the moving geometry
Erosion - Examples
Case 2 :: Erosion Primitives will be triggered when containing particles with a positive erosion value Non-triggered primitives will generate the sand particles in render time.
Erosion - Examples
Case 3 :: Particle trajectory correction Geometry Normal is stored in the levelset Normal component is passed to the particle Particle velocity vector is updated every frame using the levelset normal component to avoid penetrations.
Case 3 :: Particle trajectory correction
Examples : Forming Shape
Case 4 :: Levelset Collision Uses levelset for collision detection Fast Positive field(Φ>0) ⇔ Inside geometry Robust Closed & Non-intersecting w/o multi sampling Obviously we simulated tons of particles, and having robust collision detection was very important for sand effects.
Case 5 :: Polygonization Compute Normal and Curvature for Instancer tool
Thank you!