Generating Terrains via Marching Cube Algorithm for Games Kethan Tellis Adam Smith Chris Barakian Ravi Vaishnav
How can we create more interesting game terrains?
Game Terrains Methods Height maps
Procedurally Generated Game Terrains Methods Height maps Procedurally Generated
Procedurally Generated Game Terrains Methods Height maps Procedurally Generated Via Geometry Shaders
Procedurally Generated Game Terrains Methods Height maps Procedurally Generated Via Geometry Shaders Scanning Models
Game Terrains Methods Drawbacks Heightmaps Lack of complexity in environment (No caves / tunnels) Procedurally Generated Can’t be saved and reused. Gameplay is inconsistent Geometry Shaders Difficulty in collision detection High computational costs Scanning Models Difficult to create Costly in time and resources
Marching Cubes Algorithm Complex, Reusable, Cheap Terrains Perlin Noise Marching Cubes Algorithm
Perlin Noise Implementation Octaves Number of octaves increases the amount of the jitter around the lowest frequency Alpha Increases / Decreases amplitude of certain frequencies, bigger changes in terrains Beta Changes how much weight is granted to higher frequencies, more sharp deviations in terrain Frequency Amplifies the fluctuations in the amount of jitter
Perlin Noise Implementation Octaves Number of octaves increases the amount of the jitter around the lowest frequency Alpha Increases / Decreases amplitude of certain frequencies, bigger changes in terrains Beta Changes how much weight is granted to higher frequencies, more sharp deviations in terrain Frequency Amplifies the fluctuations in the amount of jitter
Perlin Noise Implementation Octaves Number of octaves increases the amount of the jitter around the lowest frequency Alpha Increases / Decreases amplitude of certain frequencies, bigger changes in terrains Beta Changes how much weight is granted to higher frequencies, more sharp deviations in terrain Frequency Amplifies the fluctuations in the amount of jitter
Marching Cubes Implementation Algorithm / Look-Up Table Actually algorithmically described all 256 cases Face Normals / Winding Order Correctly had face normals face away from bounded density areas Vertex Normals Achieved weight averaged normals for verticies by comparing to neighbors OBJ Export Allowed surface to be exported as OBJ file for loading into Maya and eventually games
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Progression Images
Marching Cubes Implementation Mesh Construction Built lookup table of each case Built final mesh by adding position OpenGL Implementation Used Vertex Arrays for speed increase GLSL for custom shading
Q & A Demo
Q & A Questions?