Voxel Terrain Generation





This project was made for a module in which we were tasked with creating some form of procedural tool within the Unity Game Engine. We were required to make a video tutorial covering a topic of our choice within some form of procedural Generation (that was approved by the teachers).

Since this assignment was so vague it left alot of room to experiment with different procedural generation techniques before I finally landed on the marching cubes algorithm. A technique to generate voxel terrain.



When deciding what I wanted to do for this assignment I knew I wanted to do some form of terrain generation, however I didn't want to do the simple adjusting a plain by a heightmap that so many terrains do. This led me into researching how voxel terrain generation (like Minecraft or games like Space Engineers).

The best technique I found for this was the marching cubes algorithm. I won't get into the technical detail here (as I explain how it works in detail in the linked video), however I will say it was designed to convert medical scanning data into a 3D model that could then be visualised by a computer.



Using all of these systems I designed a tool that allowed any developer or designer to add a script that would generate a fully 3-Dimensional terrain with chunks and multi-threading to speed up the generation of the terrain.

To make it as designer friendly as possible I added the following features using unity custom editor scripts:

1. Noise settings that affect the shape of the terrain.
2. Chunk settings that can effect how fast it generates.
3. Level of detail settings that affect how detailed the mesh will be.
4. Buttons to start generation of the level and destroy the level.