3D Bezier Terrain Generator

Final project for MAT300 Curves and Surfaces class.

This course introduced parameterized polynomial curves and surfaces, focusing on both theory and practical applications in computer graphics. Topics included polynomial bases, interpolation, polar forms, and key algorithms like de Casteljau and de Boor. We also explored parametric surfaces and multivariate splines.

Small Introduction

This was a team-based project with four members. The 3D framework for the project was built from scratch using C++ and OpenGL. We developed the framework around the concept of Bézier patches to enable terrain editing.

Summary of the Process

We started by designing how the framework was going to work and how we could define and implement the terrain and patches. First, I implemented and built the graphics pipeline and the structure/workflow of the application. Once we had lines and a cube on screen, the team member responsible for the mathematical aspects created the patches. Other members were responsible for loading the heightmap onto the control points of the Bézier patches, while another worked on the functionality for controlling those points in the application. Once that was completed, we implemented extra features such as camera distance-based patch resolution and a river that adapts its geometry to the surface of the mesh.