In this project I wanted to make a floating island generator using Houdini and Unreal. The inspiration for this project was Avatar: Frontiers of Pandora. The purpose of the tool was for artists to create floating islands, that could be baked and be used as background assets for games, quickly in engine. My thought was that players would not be able to interact with them so I mainly focused on creating shape of the islands. For this project I gave myself 4 weeks.
Video breakdown of procedural Island generation in Unreal.
The tool samples shapes from unreal and uses them as a base volume to start carving the island. The final island will always match the size of the input shapes, but the issue with this was that bigger shapes took a long time to generate, so I solved it by scaling the base shape to a set volume at the beginning of the process and then scaling it back up to its original size, for more consistent cook-times.
HDA being used in unreal and adjusting parameters.
Vertex Color mask to blended materials and tints.
In order to make the rocks look more unique I baked curvature and slope data as vertex colors onto the mesh and use them as masks to apply different textures and colors. Green for the grass, red is for concave areas and blue is for convex areas.

Vertex color in Unreal.
Material tint settings to change color of different masks

Vertex color in houdini.
Tree scatter breakdown.
The user has controls for the foliage that spawns on the mesh. The trees are placed randomly on any upward facing surface, then they are scaled in a way that makes the trees slope, eg. the oldest/tallest trees are in the middle of the cluster and get shorter the further away they are from the center of that cluster. This gives the treeline a nice silhouette similar to forests. The vines are placed in the same way as the trees but for downward facing surfaces.

The rock formations I had as a refrence were layered, so to recreate this I split the mesh into segments with planes. Then I ordered them from the bottom up and looped through them scaling them down every increment to get a tapered look. Then to make the rocks look like the have slid and settled in that position, I offset them randomly along the XZ axis. This gives the rock more ledges and overhangs for trees and haning vines to spawn on.


Image from unreal of rock formation shape next to input mesh.
Breakdown of full houdini workflow.

To get a rough shape on the Rock I squash it down and fracture it. Then I stretch it back to its original size, which gives me long verticle fractures. Then I make a copy of the mesh's sides and extrude them inwards and delete any fractured chunks it touches. This makes the rock look like large chunks of it have fallen off overtime.
I wanted the islands to look like they had been ripped out fo the ground. For this I used a noise to extrude the bottom of the shape. The amount the faces extrude are determined by the measured thickness of the area.
Video of inverted peak in houdini.
This project was exciting to me because it was the first time I used houdini. The project taught me a lot about iterating and experimenting with new or alternative solutions. Every major version of the Island generator I worked on taught me something new that I would carry on to the next itteration. This project has also taught me a lot about how to utilize Houdini’s Surface Operators (SOPs), as well as programming in Vex for very particular use cases, such as the sorting of the Island slices.
I also learned the importance of references. In the beginning I often found myself never being satisfied with the appearance until I was encouraged to gather real world references. By looking into how certain natrual phenomenon occur, it gave me clarity on how the islands should look. In essence, I learnt how to tell the story of the islands through the islands themselves.
In the beginning of the project, I was asked "who is this for?" which really helped me scope the project out correctly. By thinking of the project as a tool for someone else to use, it helped me plan and structure my workflow around the user's needs, how much control they should have, how much it would vary from the original input shape, how user friendly the tool was, and keeping cook-times short.
I would refine the material used on the islands more by blending multiple tiling normals to get more variation, and I also got feedback to make use of vertex displacments with height maps to get more variation in the islands silhouettes. I would also go deeper in procedual UV mapping in houdini because I feel like I only scratched the surface of it. One idea I had was to UV map it based on a rock texture that has different details at different coordinates, similar to a trim sheet or an atlas but tiling. With this I could apply appropriate details based on mesh data, such as the size of UV islands or a blend of the existing curvature data with noise.