Nathan Koch

Procedural Systems: Week 1

Monday, June 11th 2018

Sketch 1: Tile sets

This was one of my first experiments with working with hand-assembled tilesets. I created a set of 256x256 tiles manually in Sketch and layed them out in Tiled. Sketch 1

Sketch 2: UV-mapped tiles

My next experiment with manually creating tiles, was attempting to make those tiles smoothly map onto a 3D object. I UV-unwrapped a cube in Cinema 4D and then wrapped this tiled texture (created in Photoshop) on top of it. Sketch 2

Sketch 3: Random values in Houdini

I decided to execute the remainder of this week's sketched in Houdini rather than a more conventional tool for creative coding like Unity. Houdini uses entirely different paradigms, and learning the fundamentals of modeling and rendering in Houdini, on top of using procedural techniques, turned out to be quite challenging. This example is simply a row of boxes, each one with a random height.

Sketch 3

Part of Houdini's power comes from its node-based interface, but it also comes from the ability to execute HScript expressions in place of any conventional parameter, particularly numeric parameters.

Sketch 3 Screenshot

Sketch 4: Low-bias distribution

This sketch uses a mix of purely random distributions for height, and a low-bias distribution for the z-axis. I also began to experiment with Houdini's lighting and rendering system. I was beginning to be able to tease out some interesting atmospheres.

Sketch 4

Sketch 5: Normal distribution

For this sketch, I used a normal distribution to manipulate the height of each box. I also applied Houdini stock materials and continued to dig further into light and render settings, adding an HDRI sky and environment lighting.

Originally I used a single-line Houdini HScript expression, with no variables or data structures, but it was very difficult to write and even harder to read.

I moved to Houdini Python for the second iteration of this sketch, which allowed for named variables, iteration, and the Python standard library.

Sketch 5

Sketch 6: Decks vs Random

For Sketch 6 I used an algorithm modeled after a deck of cards, rather than a set of pure random numbers.

Sketch 6

Executing a "deck" in pure-HScript without more sophisticated tools like Python or Houdini VEX required getting inventive. Each Tube was laid out on the points of a Grid node, and because the color of each Tube was driven by the index of the point, the best way to simulate shuffling an array was to re-sort the points of the grid.. By keyframing the random seed that drives the order of points, I could animate it.

Sketch 6 Screenshot

Week 1 code

Code for this week is available on GitHub.