Do you find yourself staring at a blank Houdini scene, eager to craft that smooth, melting wax effect of a signature Diptyque candle?
Perhaps your wax simulation collapses unnaturally, or your flame simulation flickers like a faulty signal. You tweak values endlessly and still can’t capture that organic flow.
It’s frustrating when node setups, pyro settings, and material parameters seem locked behind a wall of jargon. Every adjustment feels like a shot in the dark.
Here, we’ll demystify the process in Houdini, guiding you through a clear, practical workflow. You’ll learn how to balance realism and performance without guesswork.
Get ready to master emitter placement, vellum-based melting, pyro customization, and render optimization—so your Diptyque-inspired candle comes to life with convincing wax and flame.
What reference images, scene scale, and assets should I collect before starting?
Gathering high-quality reference images is the first step to a convincing wax simulation and flame simulation. Capture stills of melting candles at various stages, focusing on drips, wax pooling and wick charring. Supplement with high-speed video of flame behavior under indoor lighting to observe flicker frequency, color gradients and turbulence patterns. Use multiple angles and exposures to understand how light interacts with semi-translucent wax.
Establishing a consistent scene scale in Houdini ensures your simulation units map to real-world dimensions. Decide early whether one unit equals one meter or one centimeter—candle diameters typically span 5–7 cm, wick radius around 1–2 mm. Accurate scale lets you set pyro voxel sizes, collision subsampling and time steps so fluid dynamics behave predictably. Maintain this scale from geometry creation through lighting and rendering.
Prepare a library of essential assets before diving into the network. This minimizes interruptions and maintains focus on procedural workflows:
- Base geometry: hollow glass jar, interior wax block and a thin wick curve
- Texture sets: subsurface wax maps, rim-light and transmission HDRIs
- Pyro presets: custom flame color ramps, turbulence noise clips
- Reference video clips: high-speed flame footage, slow-motion melting shots
How do I model the candle, wick, and diptych scene layout for simulation-friendly topology?
Before diving into simulation, structure your candle geometry with rounded caps and evenly distributed quads. In Houdini’s Geometry node, start from a low-res cylinder, bevel top edges by 2–3 divisions using the PolyBevel SOP, then subdivide with Subdivide SOP set to “Catmull-Clark” only once. This yields a clean quad mesh that deforms predictably as wax melts.
For the wick, build a small curve aligned along the candle center, extrude it into a narrow cylinder (radius ~0.02 units). Keep its division count low (8–12 sides) to reduce collision overhead. Group its tip prims as “pyro_source” to feed into the flame solver and mark its body prims as “collision” for wax simulation.
Lay out the diptych panels with precise spacing: create two simple planes at 0.2 units apart. Use a Transform SOP to adjust their rotation by 90° on Y to face the camera. Encapsulate all geometry in a single Geometry node, then inside subdivide into three packed RBD packed primitives: one for the candle, one for the wick, and one for the panels. This grouping strategy simplifies referencing in DOP networks.
- Use a Name SOP to tag each piece (“candle_geo”, “wick_geo”, “panel_geo”).
- Generate collision VDBs from Polygons with VDB From Polygons SOP for both candle and panels.
- Create a bounding box volume around the wick curve with Box SOP + IsoOffset SOP to drive flame emission.
By maintaining low-poly, quad-dominant topology on candle surfaces and minimal segments on the wick, you ensure efficient SDF generation and stable Vellum or Flip-based wax melting. Packing primitives and naming groups upfront also streamlines referencing in your Pyro DOP for flame and SOP Solver or Vellum DOP for wax dynamics, creating a simulation-friendly foundation.
Which simulation strategy (Vellum, FLIP, or hybrid) best replicates wax behavior and how do I set it up?
Wax exhibits both solid-like shape retention and viscous flow when melted. A pure Vellum setup holds form but lacks realistic fluid dynamics; a pure FLIP solver delivers fluid motion but can’t maintain the candle geometry at rest. A hybrid approach—using Vellum FEM for the intact candle and FLIP for the melting liquid—provides the most convincing results.
Begin by modeling your candle as a poly cylinder and create an internal temperature volume that tracks heat from the flame. Inside a DOP network, use Vellum Configure FEM on the cylinder, raising Young’s modulus and damping to lock in the solid form. Attach your temperature field to the Vellum object so regions exceeding the wax’s melt point will be flagged for emission.
- Emit FLIP particles via a Volume Source node whenever the temperature value surpasses your melt threshold.
- In the FLIP Solver, enable “Viscosity” and drive its parameter with a VEX expression that maps temperature to viscosity values.
- Use a SOP Solver within DOPs to subtract the emitted FLIP volume from the Vellum geometry, simulating material loss.
- Tune particle separation to balance detail and performance, aiming for smaller particles near drips.
- Convert FLIP particles into a smooth continuous surface using Particle Fluid Surface for the final melt geometry.
By procedurally ramping viscosity through the temperature field, the wax retains rigidity until it truly reaches its melting point, then transitions into a realistic fluid. This hybrid workflow leverages the strengths of both Vellum and FLIP, resulting in a candle simulation that accurately mimics real‐world wax behavior.
How do I create the flame (pyro) and couple heat, buoyancy, and collisions to influence the wax?
Set up pyro fuel/temperature sources and basic flame shaping
Begin by emitting your flame from a fuel source geometry. In SOPs, add a Volume Source node to define fuel and temperature fields. Import these into DOPs via a Pyro Solver, then inside the DOP Network use a Gas Source DOP to inject density, fuel, and temperature volumes per frame.
- In the Gas Source DOP, set Operation to “Add” and enable Temperature and Fuel fields.
- Drive flame color and height by remapping the temperature field using a Gas Field VOP; apply a temperature ramp for artistic control.
- Enhance small-scale detail with a Pyro Post-Process SOP (vorticity confinement and sub-grid turbulence).
Transfer heat, buoyant forces, and collision impulses into the wax solver
To influence the wax solver, export pyro fields—Temperature, Velocity, and Divergence—from the Pyro Solver. Inside your wax DOP Network, use a Volume Rasterize Attributes to bring in these volumes. Then drive wax viscosity and melting rates via a Gas Field VOP: sample Temperature to modulate wax viscosity parameter.
- Use a Gas Analysis DOP to compute buoyant force vectors from the pyro Velocity field, then feed into the wax solver as External Forces.
- For collision coupling, convert pyro’s flame container SDF to Dynamic Object and add it to the wax solver’s Collision List; wax particles inherit impulse at contact.
- Balance forces by adjusting the Wax Solver’s Force Scale parameter so heat lift doesn’t overly destabilize the wax pool.
What shading, lighting, and look-development techniques reproduce the Diptyque visual style?
To capture the iconic Diptyque aesthetic, start with a robust wax shader in Houdini’s Principled Shader. Enable Subsurface Scattering (SSS) with a scattering radius of 0.1–0.2 units and a reddish-yellow tint. Drive the SSS parameters by the thickness of the geometry using a “measure” SOP so thinner areas glow more intensely. Add a high-frequency noise on the roughness input to mimic microscopic surface irregularities.
Flame look-dev relies on volumetric shading. Use the Pyro Shader with a temperature ramp: map cool blue at the base and warm yellow-white at the core. Control opacity with a density field, then apply anisotropic scattering to simulate light trapping. For extra realism, composite a thin “glow” layer using a volume light emission pass in Karma or Mantra, adjusting falloff to recreate soft candle halos.
Lighting must emphasize contrast and warmth. Place a primary area light behind the candle at low intensity—this backlight enhances wax translucency. Supplement with a faint warm fill light (<10% key intensity) to gently illuminate foreground shadows. Use a real-world Kelvin temperature of 1,800K for authenticity. Optionally, add an environment sphere with subtle HDRI reflections to lift background detail without overpowering candle glow.
In look-development, apply ACEScg tone mapping and a slight filmic curve. Introduce a controlled vignette to focus on the candle, and add subtle grain or chromatic aberration to simulate analog capture. Finally, animate slight fluctuations in light color and intensity (<5% amplitude) to mimic the natural flicker of a flame—this micro-variation seals the Diptyque-inspired mood.
How do I render, optimize, and composite the final shot — key AOVs, denoising, and performance tips?
When your wax & flame sim is locked, switch focus to rendering with Mantra or Karma. Begin by defining your essential AOVs: emission for flame luminosity, direct_diffuse and indirect_diffuse for wax shading, sss_transmission for subsurface scattering through the candle, and depth for z-based compositing. In Karma XPU use the Render Settings LOP to add Light Path Expressions (LPEs) if you need custom splits.
To denoise efficiently, leverage Houdini’s Denoise ROP or export to an external tool like Intel OIDN. For volumes, enable the “Volume Denoiser” and increase Volume Samples rather than brute-forcing Pixel Samples. In Mantra, set PixelVariance to a moderate 0.005 and enable Pixel Filter to reduce speckle without oversampling.
Performance tips:
- Reduce volume resolution: down-res VDBs with Volume Reduce SOP, then use shading velocity to preserve motion blur.
- Use instancing for repeated geometry like wax drips—turn on Packed Primitives and point to one high-res proxy.
- Tune ray limits: in Mantra, set Diffuse and Reflection Ray Limit to 2; for Karma, limit Secondary Rays under the Sampling tab.
- Cache large sims: write out pyro & flip caches in SOPs, then reference them via File SOP to avoid reloading from memory.
- Bucket or tile size: in Karma XPU, choose 64×64; in Mantra, try 16×16 for GPU or 8×8 for CPU heavy scenes.
In compositing (Nuke, Fusion or Houdini COPs), rebuild your final shot by layering AOVs: start with the diffuse, add your emission pass on Add or Screen, blend your sss_transmission over a curved ramp for warmth. Use the depth AOV to pull subtle fog or chromatic dispersion. Finally, track your flame brightness across time with a Grade node to ensure consistency under denoise smoothing.