Rendering
Digital Image Synthesis, Fall 2008

Jump to...

project #1
project #2
final project
assignments


project #3: Reflection Models

Assigned: 2008/11/26
Due: 11:59pm 2008/12/16

Project description

This project intends to get you familiar with pbrt's reflection models. In this project, you are asked to add plugins for data-driven reflection models to pbrt. We provide two reflection models measured by MERL, blue-rubber and green-metallic-paint, for this project. For reading these models, please refer to this file. You can use read_brdf() to read a BRDF file and use lookup_brdf_val() to find the corresponding value for a pair of incoming direction and outgoing direction. Please read this paper for how the reflection models were measured and this paper for a factorized representation for reflection models. For this project, you need to implement two types of parameterization for data-driven reflection models, tabulated and factorized. The former treats the reflection model as a big 4D table and the later takes it as a product of two 2D functions. For the later, you need to use the non-negative matrix factorization method. Here is an implementation that you can use.

Reflection models are parts of the pbrt core. To avoid modify the core, for the tabulated materials, I would suggest that you add a source file Tabulated.cpp for the material plug-in called Tabulated. In the same file, add the source code for the BxDF class, TabulatedBxDF. In the Tabulated material, you only add one BxDF, TabulatedBxDF. Thus, the material simply follows the data-driven model. We have provided a template file that you can base on. For the factorized models, you need to devise your own file format and create another material class accordingly. It is your own design. You can then include the material into the pbrt scene to test the data-driven model. We have provided a sample scene file that you can modify and use for testing your own materials. Here is a note provided by TA, that hopefully would be helpful for this project. Finally, importance sampling is not required for this project, but you are welcome to implement it as a bonus.

Below are sample renderings for the two materails without importance sampling. They were rendered with path tracing with depth=2 and 1024 samples per pixel. Note that we may still have some artifacts in the factorized materials. We are not sure whether it is a bug or a feature yet. Anyway, your results should look at least close to the ones we have provided.


blue-rubber, the left is the tabulated material and the right is the factorized one.


green-metallic-paint, the left is the tabulated material and the right is the factorized one.

Submission

Please send TA (sula -A-T- cmlab.csie.ntu.edu.tw) the source code files that you have created or modified, the scene files and a html report on what you have accomplished. The report should include renderings for all materials we provided with both tabulated and factorized formats.

Reference