This is a rasterizer for drawing scenes composed of 3D polygons.
This assignment focuses on building a custom rasterizer capable of rendering both 2D and 3D polygons using C++ and the Qt library. The project begins by implementing a 2D triangle rasterization algorithm to handle simple 2D polygons. Once this foundation is built, the challenge extends into 3D polygon rendering by introducing a perspective projection camera, which projects 3D objects into 2D space for rasterization. By using custom-built classes for both rasterization and camera functionalities, the assignment also introduces the Qt framework for handling graphical interfaces.
In addition to rasterization tasks, the project emphasizes key computer graphics concepts like barycentric interpolation, perspective-correct interpolation, and Lambertian reflection.
These techniques ensure proper rendering of 3D scenes, including accurate lighting and texture mapping. The camera system also supports interactive controls for translation and rotation, allowing a naive scene manipulation.
The photo above shows the rasterizer display with a model that I created in Maya, inspired by Salvador Dali’s “The Elephants” painting.