FIRE

For anyone who's interested in the technical side of Houdini, here's the technical process behind this project. Behind creating a fire simulation in Houdini—from preparing the source geometry and generating simulation fields to running the Axiom Solver, caching the volumes, and rendering the final result.

This project focused on creating fire simulation workflow using the GPU-accelerated Axiom Solver in Houdini(iterate quickly without waiting a long time after every change).

Begins with box , providing the basic physical boundary or "emitter zone" for source points.The simulation begins by converting the emitter geometry into volumetric source fields. Then, Scatter points give points that can carry data.

pyrosource node

It takes those scattered points and creates initialized attributes specifically meant for smoke, fire, or explosion simulations. It sets up standard attributes like fuel temperature and v on the points.

Using three separate attribute noise nodes to inject randomness into specific fields:

  • temperature: Creates hotter and cooler zones across points.
  • fuel: Randomizes where active burning or ignition happens.
  • v (Velocity): Adds turbulent vector directional force to the points so the smoke/fire doesn't just rise perfectly straight up when the simulation starts.

In nature, nothing is completely uniform. Adding noise to these point attributes ensures your final simulation looks organic, patchy, and dynamic rather than like a flat, artificial block.

vdbfromparticle: Takes scattered, noisified points and rasterizes them. It examines the attributes associated with those points (such as density, temperature, and velocity) and converts them into 3D voxel grids (VDB volumes).

Fluid and smoke solvers (such as sparse pyro or Axiom) cannot compute points directly; they require a voxel-grid container. vdbfromparticles bridges the gap by turning your point cloud data into actual volumetric fields that the solver can read as a source.

Axiom Source Shape node**:**

Used to create a ground plane that prevents the fire simulation from passing below the floor.

A simple box geometry is connected as the reference shape and set to Collision. The node automatically generates the required collision attributes, including temperature and velocity, allowing the solver to interact correctly with the geometry without additional setup.This will create stable collision boundaries and keep the simulation physically grounded.

Axiom solver:

It takes in source VDBs (density, fuel, temperature, and velocity) and source shapes (for collisions or ground planes) to define the initial state and boundaries of the simulation, then calculates combustion, buoyancy, and fluid motion to generate natural flame behavior. Built-in turbulence and disturbance add fine-scale detail, while its GPU-based architecture enables fast, efficient iterations for high-resolution simulations.

filecache1: This bakes the simulation data directly onto hard drive as .vdb files frame-by-frame.

The cached VDBs are shaded and rendered to refine the final appearance of the fire. Lighting, emission, and volume shading are adjusted to achieve a believable and visually appealing result.

rslightsun:

Directional lighting and realistic shading across the volumetric simulation. This helped define the smoke structure, improve depth, and integrate the fire into a natural outdoor lighting environment while preserving the fire's own emission.

Breaking down each stage made it easier to understand how every component contributes to the final result.

← Back to Portfolio