Model-Modifier is my C++17 and OpenGL implementation of an interactive mesh renderer/viewer for .obj files, with various algorithms to apply to the meshes, and various shading techniques.
- Objects
- Custom .obj parser
- Triangulation
- Minimum cost polygon triangulation
- Dynamic object selection
- Simple geometric objects
- Complex test objects
- Automatic rescaling
- Caching
- Mesh modification algorithms
- Subdivision surface
- Simplification surface
- Shading options
- Flat shading (Per-face normals)
- Smooth shading (Per-vertex normals)
- Mixed shading (Per-Corner normals)
- Shader options
- Material controls
- Ambient
- Diffuse
- Specular
- Shine
- Lighting controls
- Position
- Color
- Multiple lights
- Render modes
- Mesh polygons
- Wireframe
- Point cloud
- Interactivity
- Rotate model
- Move camera
- Rotate camera
- Information
- Framerate counter
- Number of polygons in current mesh
- Screenshot to PNG
Comparison of different shading techniques
Armadillo mesh, Blinn-Phong shader, not smoothened
Armadillo mesh, Cook-Torrance shader, not smoothened
Armadillo mesh, Cel shader, not smoothened
Comparison of different subdivision surface algorithms
Cow mesh, Normal shader, not smoothened
Cow mesh, Normal shader, smoothened 1 time with Catmull-Clark subdivision
Cow mesh, Normal shader, smoothened 1 time with Doo-Sabin subdivision
Cow mesh, Normal shader, smoothened 1 time with Loop subdivision
GLFWGLMDear ImGui
Here I try to list all sources wherever possible.
| Model Name | Source |
|---|---|
| Crumpled | Keenan Crane |
| Cube | Me |
| Double Torus | Geometry Collective |
| Fandisk | CAD part Pratt & Whitney/Hughes Hoppe |
| Icosahedron | John Burkardt |
| Octahedron | John Burkardt |
| Oloid | Keenan Crane |
| Sphere | Geometry Collective |
| Star | Unknown |
| T-shape | Me |
| Torus | Geometry Collective |
| Tubes | Me |
| Model Name | Source |
|---|---|
| Ankylosaurus | Unknown |
| Armadillo | Stanford |
| Bob | Keenan Crane |
| Bunny | Stanford |
| Cow | Viewpoint Animation Engineering / Sun Microsystems |
| Cow head | Geometry Collective |
| Face | Geometry Collective |
| Gargoyle | Geometry Collective |
| Kitten | Geometry Collective |
| Shuttle | John Burkardt |
| Suzanne | Blender |
| Teapot | Martin Newell |
| Teddy | Unknown |
Create the solution file by running:
cmake .
open the solution file however you like.







