Pipeline
A modular, scalable approach using procedural workflows
and automation for asset creation and engine integration.
A modular, scalable approach using procedural workflows
and automation for asset creation and engine integration.
Developed for internal teams.
Automating batch LOD generation and asset preparation through headless Houdini PDG.
Automating batch LOD generation and asset preparation through headless Houdini PDG.
I designed a batch automation pipeline that connects a lightweight Python job-submission interface with headless Houdini processing, allowing non-technical team members to trigger asset processing without opening Houdini.
A custom Python interface is used as the entry point for batch requests. Users define high-level processing intent, and the tool generates a structured job file containing all required inputs for headless execution. These job files are dropped into a shared queue directory on a virtual machine.
A watchdog service monitors the queue for new jobs, manages execution order, and launches headless Houdini runs. Each job file is consumed by the pipeline to drive procedural processing inside Houdini, feeding the necessary inputs into the asset preparation workflow without manual intervention.
The pipeline is designed to be resilient and self-regulating. The scheduler enforces execution limits so long-running or failing tasks do not stall the batch, keeping the system stable and allowing other assets to continue processing without interruption.
This pipeline removes the need for manual Houdini interaction by turning asset preparation into a fully automated, file-driven process. By allowing structured job requests to drive headless execution, it enables scalable batch processing, consistent results, and reliable throughput, even when individual assets fail or take longer to process.
Procedural pipeline using Houdini PDG to prepare Gaussian splat data.
Procedural pipeline using Houdini PDG to prepare Gaussian splat data.
I developed a procedural pipeline using Houdini PDG to prepare Gaussian splat data for real-time streaming across multiple levels of detail. The system focuses on cleaning, structuring, and organizing large splat datasets so they can be efficiently streamed and managed at runtime.
Captured splat data is first processed to remove outliers and unstable points, improving visual consistency and runtime performance. Each level of detail provided by the capture process is then spatially aligned and divided into a volumetric grid, allowing the data to be handled in smaller, independent regions rather than as a single dataset.
The volumetric grids are generated consistently across all levels of detail and are associated with simple descriptive metadata, such as spatial context and LOD classification. This information is used by the runtime system to support distance-based level-of-detail selection and dynamic loading in Unity, ensuring higher-density splats are shown near the user while lower-density representations are used farther away.
As the user moves or teleports through the environment, grid cubes are loaded and unloaded dynamically, maintaining visual quality where it matters most while keeping performance predictable in large-scale scenes.
This approach makes large Gaussian splat environments practical for real-time use by reducing visual noise, adapting detail based on distance, and streaming only the data needed around the user.
Real-time Gaussian splat playback with timeline control in Unity.
Real-time Gaussian splat playback with timeline control in Unity.
I built a Unity prototype player that supports both static Gaussian splats and time-based “4D” Gaussian splat sequences. The player includes playback controls for forward and reverse playback, frame-by-frame, and timeline scrubbing via a slider.
Content selection is dynamic, the player scans available splat assets and populates a menu automatically so different datasets can be loaded without rebuilding the app. For headset playback, I built a Unity-based workflow that supports both single-file Gaussian splats and time-based sequences, enabling smooth playback on Apple Vision Pro.
This prototype makes Gaussian splat content explorable in a spatial environment, with interactive playback, scrubbing, and dynamic loading on Apple Vision Pro. It enables early validation of spatial quality, motion, and performance, bridging offline captures and real-time immersive experiences