Wund
Unity R&D Review
Sebastian’s Journal
Breakdown of Barbican Systems
For the purposes of this research, we focused on Particle Systems and how we might best reproduce them in Unity using data exported from Houdini.
Splines
We chose to use splines because they are a fundamental part of many MLF experiences, including WUND. They are also likely the most complex system to attempt to reproduce in Unity.
Differences from Eden and Evolver Projects
Main differences between the Barbican/Sanctuary simulation and the Eden simulation is the absence of a pulse force affecting speed and colour of particles, and using a separate set of spline data for xylem and phloem.
Main differences between the Barbican/Sanctuary simulation and the lungs in Evolver (aside from interactivity), are that no “neighbor” information is used.
Splines - Motion
Particles interpolate from one spline point to the next.
Splines - Colour
Particles select their colour by sampling multiple 3D Perlin noises at the position of their spline’s root.��One noise is used to select the base colour from a colour ramp.
A second noise is used to slightly nudge that colour up or down the colour ramp.
A third noise is used to define certain particles as “gold”, setting their colour to gold/white.
Beyond that, a fog color is applied based on the particle’s distance from the camera.
Splines - Scale
Particles scale in as they spawn and scale out as they die (or reach the end of the spline).
Particles also scale down as the camera gets closer to them.
Splines - Spawning at Roots
One major complication was attempting to export data from Houdini about where each spline’s root was.
The solution we landed on was exporting the following data for each spline point:
Splines - Spawning at Roots
Splines - Spawning at Roots
Splines - Houdini Export Data
The attributes we need are computed in a “for each loop”.
Then attributes are exported on different channels (R,G,B,A) on Exr files using the COPs environment
Splines - Houdini Export Data
Point Position and Point Journey Gradient Data
Point Count, Point ID, Point Radius, and Distance to Next Point Data
Splines - Spawning at Roots
Splines - Lighting
Tricking Unity into creating semi-accurate shadows by rotating the particles to face the camera in the update loop before the render loop.
Putting it All Together
10 Million particles
Future Work
Fix issues with Texture Sampling that are causing particles to fly into strange positions.
Use top-right pixel for system-wide data like max points.
Export xylem/phloem Colour ramps as textures.
Debug tools, unique splines and pixels analyse with python to check the export data
Potential different way to get starting points with “if blocks” in Houdini
Test with new splines from Wund assets
Impostor spheres for the particles
Better colour sampling to match Barbican better, especially “gold” particles
Baked lighting?