top of page
Planet Simulations.jpg

Planet Generator

I focused on trying to create a system that would allow me to indulge into more depth on a topic that I frequently visit, that being terrain generation using Noise. This was also tied to a module for my course where we had to implement aspects of the engine ourselves such as transforms and Quaternions.

 

​I researched what shape would be best to used and what methods that I would implement for the system, creating a grid a squares that were wrapped into the shape of a sphere. These could then have occlusion and LoDs applied to them to create an efficient terrain generation system.

Github

C#

Unity

Background.png

Project Overview

Features

Background.png

Project Details

Mesh Generation

Sphere tYPE

1 of 3 ideas were trialled for the shape of the overall sphere. 

Each had their own advantages and disadvantages.

Cube Sphere was just a Cube (making it simple mathematically) but had clumps at the corners.

Sphere has similar clumping issues at the poles and would tile really poorly (centring at the points at the poles at higher detail)

Icosphere would work but was harder mathematically and higher detail would increase the mesh poly count rapidly.

Eventually went with the Cube Sphere for the Mathematical simplicity.

image (3).png
image (1).png
image (2)_edited.jpg

Perlin Noise

Perlin Noise was used to create the random terrain for the planet surface. 

This was combined with Octaves to get a more varied and detailed surface plane. 

This then created a black and white image that would smoothly change between values surrounding it.

LoDs would then also sample this texture at different rates depending on the detail needed.

image.png

UVs & Collisions

UVs and Collision data was then generated along side the mesh, creating the environment for the textures and lighting to be generated on the planet.

This would use the position of the vertex as a base and create the necessary value from that.

bottom of page