Nathan Koch

Procedural Systems: Week 2

Monday, June 18th 2018

Sketch 1: Parameterizing game objects with Houdini Engine

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. Sketch 1

Sketch 2: Animating Substance Designer textures in Unity

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. Sketch 2

Sketch 3: Animating noise landscapes in Houdini

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.

Sketch 3

Sketch 4: Using noise to alter heights and colors via Houdini HScript expressions

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.

Sketch 4

Sketch 5: Creating 2D perlin noise point fields in Houdini

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 noise() or floattovec().

The animation in this sketch shows the results of playing with frequency, amplitude, and offset values on the noise operator.

Sketch 5

Sketch 5 Screenshot

Sketch 6: Making a writhing sphere of particles in Houdini using VEX expression code

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.

Sketch 6

Sketch 7: Making animated tori in Houdini using a customized random function

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.

Sketch 7

Week 2 code

Code for this week's Procedural Systems sketches is available on GitHub