The noise I use for most rock shaping is Worley F2-F1. This noise combination is one of the best for blocky, cellular shapes. The Y frequency of the 3d Worley noise has been scaled up to give the appearance of vertically stretched cells. The ‘voxelmesh’ node from my main graph is a Houdini Digital asset created by SideFX Labs gamedev team. These are great tools for speeding up workflows. This particular asset is basically a VDB to a polygon conversion tool that voxelizes a mesh to a certain density and converts the mesh back to polygons, very similar to Dynamesh in ZBrush.

The next part of the tool slices up the mesh into different strata layers. This can be accomplished in a hundred different ways in Houdini (boolean, clip, VDB fracture, etc). The particular method I chose was to copy planes to points and slice the mesh into parts based on those planes. There is a very good explanation of the technique from Gatis Kurzemnieks - Creating procedural game assets with Houdini. Part 1. I’m using a similar method to the breakdown covered on his Youtube channel.

Gatis also talks about how he added different thickness values to each layer. While I didn’t choose this method, it’s certainly a viable approach. The issue I had with my mesh was that when displacing the points along their normals, they eventually overlap one another and begin to interpenetrate. There are some techniques to blur the normals by a large amount and then displace, but all of these methods result in soft, mushy edges and I wanted to maintain sharp strata layers.

I came up with a solution of creating my own local transform for each layer and scaling on X and Z randomly for each layer. This consisted of generating an oriented bounding box on each layer and constructing a transform matrix. That gave me the local rotations of each strata layer so I could align my TransformSOP node's pivot in order to scale in local space. There is a really nice video on Houdini Matrices and Local Transforms over at VFXHive’s Youtube channel. (https://www.youtube.com/watch?v=t9yoUkFzInA)

Using expressions is where Houdini really starts to shine. In the X and Z scale values of a Transform SOP I am able to supply a random value.