The Cornell box is a test aimed at determining the accuracy of rendering software by comparing the rendered scene with an actual photograph of the same scene, and has become a commonly used 3D test model [wikipedia].
Build your own Cornell box to explore the challenges of photorealistic rendering. Programming assignments #2, #4, and #5 are sequentially connected:
Assignment #2 requires constructing a physical environment that serves as a reference for your scene model. You will build a scene consisting of multiple geometric models, such as boxes and spheres, to closely match your reference environment.
Assignment #4 involves rendering the scene from Assignment #2 using OpenGL and shaders, then comparing the rendered scene with an actual photograph of the reference environment.
Assignment #5 focuses on rendering the scene using ray tracing.
[5 point] Build your own physical environment by placing objects of your choice in a box.
The standard model consists of one light source in the center of a white ceiling, a green right wall, a red left wall, a white back wall, and a white floor. The light source will be necessary for Assignment #4 and #5.
Measure the dimensions of the box and objects to use as a reference for your scene model.
Using a solid-colored object alongside an object with a texture image is also recommended. Capture photographs of the object from multiple angles to obtain texture images, which will be useful for Assignments #4 and #5.
Capture a photograph of your scene and submit it in your report.
[5 points] Build your own scene model to render on the screen and compare the scene with your photograph side-by-side.
Rendering quality and texture usage will not be considered in the evaluation of this assignment. Make it simple, yet effective for visualizing the geometry.
[5 points] Measure the camera location when capturing a photograph and set the camera parameters in the rendered scene to closely match the reference. You also need to check the focal length of your camera and convert it to set the field of view (FOV) for the viewing transformation. Additionally, integrate the trackball viewer from the code examples to enable viewpoint adjustments.
[5 points] Write a report describing
what you implemented and how it aligns with the specifications.
a detailed instruction on how to run and use your program
photographs capturing your Cornell box and screenshots of its rendering
any reference you referred and any 3rd party material/code/model you used
Submit a single ZIP file through ETL. The ZIP should include your code, data, report, and all necessary files to run your code.
[optional] The use of boxes and spheres is recommended for easier modeling. However, you may optionally try something more challenging. 3D scanning apps are available on iOS and Android, allowing you to reconstruct triangular meshes from photographs. Keep in mind that using complex triangular meshes will make Assignments #4 and #5 more challenging.
3D scanner apps: https://www.youtube.com/watch?v=9dyAj9gXIms
[optional] Measuring the dimensions and camera parameters can sometimes be cumbersome. Alternatively, it is possible to automatically estimate the dimensions and camera parameters from a photograph. This process requires some knowledge of computer vision and camera calibration, which will not be covered in this course. However, you may optionally attempt to estimate the dimensions and camera parameters to automate the scene modeling process. This additional functionality is recommended for students who have ample free time, passion, and enthusiasm.