This project was part of my Advanced Computer Graphics course. The goal was to gain experience with low-level manipulations of triangular meshes by implementing algorithms to simplify (reduce number of triangles), subdivide (increase number of triangles), and denoise (smooth without losing important features).
I wrote all the code for this project in C++. Both the input and output to the program is an .obj file (where the input has to be a manifold, closed mesh).
Simplification
Implemented using the quadric error simplification method.


Subdivision
Implemented using the Loop subdivision algorithm.


Denoising
Implemented by using a bilateral denoising filter on the mesh.

