Terrain Generator - NDA Project - SparkXR
As part of the second SparkXR project we needed to create a massive plot of land that could be seen both at ground level and from high above. The entire area needed was roughly 36 square miles so we opted for a procedural terrain generator rather than crafting everything by hand. As the newly crowned studio tech artist, I was given the task of figuring out how to make that happen.
This trial by fire entry into procedural art started with an in depth investigation of every piece of terrain generation software I could get my hands on. By the end of it Houdini stood out as the most powerful by far. I started the process by pulling satellite data to recreate the area we needed. Then I imported that into Houdini as a starting point for a height map. Trying to do everything in one giant system turned out to be a bad idea so I split the process into several separate systems, each focused on a specific terrain type(mountains, sand dunes, scatter, erosion, etc.)
I used a combination of noise generation, hand painted masks, rule based masks, etc. to generate the terrain needed for each climate. Rather than generating everything in Houdini and importing to Unity, I used Houdini Engine to streamline the process and generate terrain tiles inside of the game engine.
This was done through creating separate PDG systems for each type of terrain. The separation allowed me to generate each climate type one at a time and add changes in between steps without redoing the whole process. It also helped minimize the amount of time lost every whenever Unity crashed in the middle of generating... which was way too often.
The final terrain system consisted of a mega low res distant terrain, a mid res semi-processed terrain ,and a high res close up terrain. Houdini was used for the initial asset scattering and texture placement. We then touched up the scatter, heightmap, and the textures on the high res terrain chunks by hand to end up with something game ready.