Digital Image Synthesis, Fall 2012

Jump to...

project #1
project #3
final project

project #2: Realistic Camera Model

Assigned: 2012/10/25
Due: 11:59pm 2012/11/14

Project description

Most computer graphics algorithms assume pin-hole camera model. However, it can't capture some important characteristics of lens system used in most modern cameras, usch as depth of field, distortion, vignetting and sptaillay varying exposure. In this project, you will implement the realistic camera model proposed by Kolb et. al. in SIGGRAPH 1995. You can also refer to the slides from the TA of a previous class, Shan-Yung Yang.

Please download the template files, data files and scene files here. The archive file contains
  • A stub C++ file, realistic.cpp, in which you will implement the class
  • Four .dat lens files
  • Four pbrt scene files
  • Various textures used by the scene files
  • Reference images
To add the realistic camera class into the pbrt system, you need to modify the function "MakeCamera" in the file, api.cpp by adding the following lines:
    else if(name == "realistic" )
        camera = CreateRealisticCamera(paramSet, animatedCam2World, film);
The following is the suggested approach to finish this asignment, but feel free to do it other ways.
  • build an appropriate data structure for the lens system
  • build code to trace rays through this stack of lens. It is suggested to use a full simulation rather than thick lens approximation.
  • Write the RealisticCamera:GenerateRay function to trace randomly sampled rays through the lens system by firing rays at the back element of the lens.
  • Render images for the test scenes. Decrease the noise by changing the "integer pixelsamples" parameter.

Bells and whistls

You will get bonus points if you vary pixels' weights according to the radiometry fomula listed in the paper.


Please turn in the source code files that you have created or modified and a html report on what you have accomplished. In the report, you should at least show the following results:
  • The renderings of the scene, dof-dragons.*.pbrt, for four different types of lens systems at 4 samples per pixel.
  • The renderings of the scene, dof-dragons.*.pbrt, for four different types of lens systems at 512 samples per pixel.
For submission, please refer to this post.