Low Poly Terrain
C# Unity project that generates a procedural terrain from a noise texture using an MIT Licensed implementation of Marching Cubes.
WASD to move around
Left Shift to move up
Left Ctrl to move down
Right click to delete voxel
Left click to create voxel
Width/Length must be the same as the number of pixels in the noise texture. Noise is expected to be clamped between 0 and 1.
All three dimensions are packed into a single float array to represent voxels, using the formula
- [x + y * width + z * width * height]
To check whether a voxel is full:
- Sample noise texture at (width, length);
- Multiply above value by height
heightVal = noise.sample(x.z) * height
if(currentVoxel.y < (int)heightVal) voxelValue = 1;
- If the height is between the floored heightVal and heightVal, set the voxel to the difference between the two instead of 1.
float diff = heightVal - (int)heightVal; if(diff < 1 && height > (int)heightVal && height < heightVal) voxelValue = diff;