Back to Houdini Work

Interactive Fireworks

Jan. 1, 2021

For this tool, I wanted to create an experience centered around direct viewport interaction—moving beyond parameter sliders so the artist can click directly on viewport geometry and immediately trigger responsive procedural animations. I built the interactive layer using Houdini Python states, SideFX's framework for crafting custom interactive viewport tools.


Viewport Python States & VEX Solvers

Leveraging Houdini's built-in Python state templates, I adapted the point-placement handler to support custom surface collision meshes. When the user clicks in the viewport, a point is instantiated with an attribute recording the current timeline frame. This birth-frame stamp enables each firework rocket to compute its trajectory, ascent velocity, and burst timing independently with consistent procedural playback.

Interactive point placement in Houdini viewport
Interactive Python states in the Houdini viewport: clicking surfaces to generate burst coordinates and timeline triggers.
Procedural particle dynamics and explosive spark cascades simulated across the night sky.

The remainder of the simulation runs in VEX, where ballistic launch arcs, particle detonation physics, drag, gravity dissipation, and color emission curves are evaluated. High-level controls such as arc curvature, launch speed, burst radius, spark density, and color palettes are exposed as user-friendly parameters on the HDA.