• Facebook - Grey Circle
  • LinkedIn - Grey Circle
  • Vimeo - Grey Circle
  • SideFX Gallery
Snow Train

Title: Snow Train

Programs: Houdini

Modeled: Semi-Procedural Houdini

SIM: Houdini

Lighting: Houdini

Texture: Houdini

Rendering: Mantra

Description:

A project with the intention of designing a system in order to replicate a real-life reference as closely as possible.

As of September 13, 2020 (9/13/20) this project is a work in progress. All the work shown so far is not an accurate depiction of the final results until stated otherwise.

Render
websiteComingSoon.jpg
Animation
websiteComingSoon.jpg
Observation
  • The snow the train first comes into contact with instantly breaks apart into a fine powder. Which is then thrown into the air and swirls along the air currents.

  • As the force from the initial impact is transferred along, the snow chunks begin to break apart prior to contact.

    • Which in turn gets thrown into the air and becomes powder.

  • Larger clumps of wet compacted snow are thrown into the air but do not immediately fall apart. Instead, they break into smaller pieces and slowly disintegrate along the outer and trailing edges of the clumps.

Reference
System Design
  • Problem: The designed system needs to be able to take animated collision geometry and accurately handle the interpolation/transfer of force to sim objects.

    • Option 1: Rigid Body Dynamic (RBD) Simulation. Handles collisions rapidly and fairly accurately, depending on setup. However, RBD is limited to only previously fractured geo and only solves for the convex hull of objects, not individual points.

    • Option 2: POP Grain Solution. Solves collisions on a per-particle basis based on Pscale. Drawbacks include an older and less efficient system. 

    • Option 3: Vellum Grain. Similar to POP grain in concept, but runs on a much faster algorithm and can handle a much larger quantity of particles. It also includes features of constraint control for clumping. However, for such a large region needed, sim times would grow exponentially with desired detail.

  • Chosen Solution: Use RBD simulation to solve the larger chunk/clumping region. Feed-in animation from RBD and use as sourcing for Vellum grain solver to handle smaller particles clumps only in the desired area. Therefore, increasing the overall solver efficiency.

RBD Source
0001_rbdSource.JPG

RBD sim prep/geo creation. Points are scattered inside a volume with the majority centered around the train's path. The points are then used in a vornoi fracture to create the RBD pieces. 

RBD Constraints
0002_rbdCTS.JPG

RBD constraint creation. The packed geo is unpacked to allow constraint connections. Three main constraints are made.

Glue_Fixed: Used to freeze geometry until needed.

Pin: Allows geometry to bend prior to fully breaking.

Glue_Cluster: Focused upon smaller volume piece to create small random clumps.

RBD SIM
0003_rbdSIM.JPG

POP Speed Limit and POP Drag ensure that pieces don't receive an unrealistic velocity at any point in time.

SIM Settings
0004_rbdSIM.JPG
Grain Source Prep
0005_grainPrep.JPG

The train geometry is given an attribute which is transferred to the newly created packed RBD geo. The sim is frozen and each piece's volume is measure, fit between 0-1 and then transferred back to the animated sim.

Grain Source
0006_grainPrep02.JPG

The selected source is passed to a configure vellum grain node. Each frame the animated geo calculates it's centroid and is then transferred to the newly created grains. The particles are culled based on the camera and Y position to optimize the scene. Afterwards a new vel is created based on noise and the centroid, which is then added back onto the original vel.

Grain Source Constraints
0007_grainPrep03.JPG

Create constraints from clusters (class). Next the name attribute is transferred to the create primitives. Any primitives that have two conflicting names/classes are removed and then grouped.

The grain points generate an attraction weight based on AA noise. Finally the points are set as active and combined with constraints.

Grain Sim
0008_grainSim.JPG

Near identical setup to RBD Sim.

  • Problem: The larger pieces and area close to the train need to generate a large amount of material to fill and interact with the air of the scene.

    • Option 1: Particle Operator (POP) Simulation. Capable of generating millions of individual particles, each can be affected by forces such as wind, gravity, and custom fields. Also extremely efficient to solve. The drawback is the number of particles needed to generate the desired effect is beyond substantial (initial guess exceeds 70 million).

    • Option 2: Pyro Simulation. Solved as a fluid and voxels instead of individual particles. When rendered as a volume can cover much larger areas requiring far lower resolutions. Also received a massive update to include sparse solution in Houdini 18. Drawbacks include simulation times are slower due to being three-dimensional instead of points, also less control is available over certain aspects of the simulation.

  • Chosen Solution: Create Sparse Pyro source based on RBD and Vellum Grain results. Results will provide better outcome and more control in the final composite than attempting large particle simulation.

Pyro Source
0009_pyroPrep.JPG

Timeshift RBD to frame 1 and transfer the used group plus the trigger time from animated sim. Scatter points onto this frozen geo and create ID. Move the points based on name from SIM. Blast the points based on velocity and the dot product between the velocity and normal.

Get and add points from grain sim to newly created points.

Pyro Source
0010_pyroPrep.JPG

Trail by length of one. Create primitives based on id (Add node). Resample resolution. Create uv along spline. Use spline to create ramp along length. Convert particles to vdb and back into polygon.

Use new sparce pyro (pyro source) method. Transfer back vel to points. Add noise to vel. Refine density by ramp and area. Finally volume rasterize attributes.

Sparse Pyro Sim
0011_pyroSIM.JPG
Sparse Settings
0012_pyroSIM_02.JPG

**Ensure to turn on "Enlarge Fields to Contain Source" on the volume source node.**

0013_pyroSIM_03.JPG
0014_pyroSIM_04.JPG
0015_pyroSIM_05.JPG
  • Problem: Due to the choice of using sparse pyro to generate the larger mass of airborne snow when rendered the volume will not have the fine specular reflection gained from particle (point) rendering.

  • Chosen Solution: Create a POP simulation to generate airborne particles that are driven by pyro simulation. When rendered and layered together final result will be visually more appealing.

POP Source
0016_popPrep.JPG

Near identical to Pyro source just without the volume creation.

POP Sim
0017_popSIM.JPG
POP Sim Settings
0018_popSIM.JPG
System Design Tests
RBD Test

All Rights Reserved as intellectual property

by Luke Vuilliomenet