Monday, June 18th 2018
I built a rounded cube as a Houdini Digital Asset, and exposed several parameters, including an offset amount and the amount of geometry to build into the corners. The result was that in Unity I could instantiate multiple rounded cube game objects, with different parameters.
This sketch involved using an animatable texture in Substance Designer (derived from a picture of a rare steak), and then scrolled through exposed noise parameters in Unity using the API exposed in the new Substance Designer Unity plugin for Unity 2018.1.
Sketches three through six each deal with four different approaches to using Perlin noise in Houdini, at differining levels of abstraction.
In sketch three, I used a Mountain node which lets you offset geometry in Houdini from a purely parametric level. This node produced beautiful effects, but using noise to displace geometry so effortlessly felt like cheating. The animation shows the results of manipulating the noise parameters exposed on the Mountain node.
In this sketch, I thought it would be interesting to manipulate individual instances of geometry created through a Copy to Points node. This technique is a modern version of copy-stamping as found in older versions of Houdini and Cinema 4D, where each time through the loop of copies the Tube and Color nodes grab "tubehue" and "tubeheight" attributes to set their color and height, respectively.
Now that I'm gaining familiarity with VEX expressions, this approach feels slow and clunky, with logic scattered across half a dozen expression boxes.
In sketch five, I moved down a level abstraction to VOPs. VOPs are a different node-based language within Houdini, that operate by default on individual geometry properties like Points and Primitives. Each VOP node generates a small chunk of VEX code automatically. Effectively, each VOP operator maps to a VEX function, be it
The animation in this sketch shows the results of playing with frequency, amplitude, and offset values on the noise operator.
In this sketch I wanted to work directly with manipulating point positions in code. I called Houdini's 4D
noise() method directly in VEX code (within an Attribute Wrangle node) rather than messing around with higher-level HScript code or VOP nodes. I enjoyed the available power and the familiar interface – its far more evocative of working with Perlin noise in Processing than the previous examples.
I experimented with creating a "smooth random" using Houdini's
smooth() function in another VEX attribute wrangle, and got unexpected results that led to an interesting sketch nonetheless: recursive tori.
Code for this week's Procedural Systems sketches is available on GitHub