Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ore Renderer

GitHub license Build Status

Ore Renderer is a C++17 and OpenGL implementation of an interactive mesh renderer/viewer for .obj files, with various various shading techniques.

Features

  • Objects
    • Custom .obj parser
  • Dynamic object selection
    • Simple geometric objects
    • Complex test objects
    • Automatic rescaling
    • Caching
  • 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

Image Gallery

Comparison of different shading techniques

Sample armadillo rendering 1

Armadillo mesh, Blinn-Phong shader, not smoothened

Sample armadillo rendering 2

Armadillo mesh, Cook-Torrance shader, not smoothened

Sample armadillo rendering 3

Armadillo mesh, Cel shader, not smoothened

Dependencies

  • GLFW
  • GLM
  • Dear ImGui

List of 3D Models Used

Here I try to list all sources wherever possible.

Geometric models

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

Test models

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

Build

Ensure that python and jinja 2 are installed as GLAD requires them. Create the solution file by running:

mkdir build
cd build
cmake ..

Open the solution file however you like.