This repository contains my C++17
and OpenGL
implementation of a mesh viewer for .obj
files, with various algorithms for interacting with 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
GLFW
GLM
Dear 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 |