Final Project

Due date: May 13th

Full points : 100
 

Refer to the documenting and submitting a homework section.

 

Project Description: 3D model viewer

Implement a program that can load and render 3D models. The UI should be implemented with Qt.

Key Features:
 

1. Modeling

Your program should be able to load standard 3ds file format geometric models.

Free 3ds models are available from

http://3dsmodels.com

http://www.3dtotal.com/  

http://www.hongkiat.com/blog/60-excellent-free-3d-model-websites/

 

Refer to this tutorials and 
source code spacesimulator.net-tutorial4.zip

For additional parsing information, refer to this page.

Since the sample 3ds file loader only works with a basic polygons and textures (a single object without material, light, etc) some 3ds files may not work.

Here are working 3ds files to use for this final project.  I will use these files and some other compatible files for grading purposes.

 

2. Rendering

Basic OpenGL Fixed function lighting:

Users should be able to add up to three lights in a scene. Each light should be controlled independently. Light control parameters are RGB ambient, diffuse, and specular intensity, point/directional light,  lighting direction, spotlight, and attenuation.

Create menu or appropriate GUI for material parameters. Users should be able to manipulate the parameters for material; ambient, diffuse, specular in each RGB channel and shininess. 

Custom Shaders:

Your program should be able to render your custom vertex shaders and fragment shaders. Shaders can be developed just like any other code (using a text editor) but shader authoring tools you've researched would be helpful since they often provide IDE environments. Include some default shaders introduced in the following list of web tutorials: normal mapping, per-pixel lighting, phong shading. These three shaders must be included. Additionally include your own two custom shaders.  The quality of shaders will be an important factor for grades. 

Minimum of 2 custom shaders (vertex and fragment shaders) of your own should be submitted.

Here are some GLSL tutorials and these tutorials include some common shaders such as normal mapping, per-pixel shading, and phong shading, etc.

http://www.lighthouse3d.com/tutorials/glsl-tutorial/

http://www.swiftless.com/glsltuts.html

https://cgvr.cs.uni-bremen.de/research/shader_maker/

 

3. User Interface and Control

Users should be able to pan, rotate (just like the trackball.h) and zoom in/out the camera.

Users should be able to translate and rotate light source in 3D space.

You need to use Qt UI for menu, dialog box, radio button, slider etc.

 

4. Extra Credit (upto 20%)

Users should be able to load and apply different textures on 3D model.

Users should be able to choose a basic image for the entire 3D model, or uv map and custom texture designed for the sepecific model.

 

 

For 5565 students, In addition to the project described above, I would like you to submit a 1 page proposal within the general areas of texture mapping, global illumination, shaders, etc. by 4/12/2021. I will be happy to schedule a zoom appointment with you if you have an idea that you want to confirm. By the final project due date, complete the research and submit the final version of the research report roughly around 8~10 pages.

Here are a couple of sample ideas:

1. Raytracer using external APIs

  • research on available ray tracing APIs (Povray, Vulcan, etc) and compare pros and cons in features and performance, parallel grid vs single computer etc.

2. Radiosity and global illumination

  • research on Luxcore renderer's core API features and document how to connect it to an external program.
  •  

Deliverables:

Final report by May 13th

  • Introduction
  • Description of your 3d model viewer and renderer
  • Description on your Shaders
  • Basic User's guide
  • Source code
  •