Final Project
Group Members
Andrew Yen
Laurie Kim
Intro
For our project, we intended to render a realistic image of soap, accurately capturing its subsurface scattering properties and surface geometry.
Techniques Implemented
Subsurface Scattering
In order to model the subsurface scattering of light through soap, we followed the implementation outlined in "A Rapid Hierarchical Rendering Technique for Translucent Materials" by Jensen et al. The basic approach was to do a two-pass rendering process. The first pass was to calculate irradiance samples on locations over the subsurface scattering object. On the final rendering pass, the irradiance sample values are used to calculate a dipole approximation of light scattering through the translucent material.
We added a Subsurface class to pbrt to represent a subsurface scattering object. The Subsurface class stored references to all the primitives that made up the object, as well as maintained an octree to efficiently store irradiance samples over the object. The octree was used to quickly approximate far away samples when the solid angle subtended by the samples was less than a specified threshold. We took uniform samples using stratified sampling over the primitives that made up each object. The number of samples was first determined by the area of the primitive divided by a disk with diameter of the mean free path. We then increased the number of samples as necessary in the final images to eliminate artifacts.
In calculating the exitant radiance at a point on the subsurface scattering object, the Subsurface class omitted the single scattering term since for highly scattering objects with albedo close to 1, the multiple scattering term dominates. We also assumed a diffuse radiance at the surface as light exits the material. We modified the SurfaceIntegrator interface to allow various surface integrator classes to implement how to calculate the irradiance at points on a surface. The irradiance samples were calculated during the preprocessing step prior to rendering. In particular, we modified the DirectLighting integrator to uniformly sample all lights to approximate the irradiance at a point. We also modified the PhotonMap integrator to calculate irradiance by taking into account the global illumination in the scene.
During the rendering pass, each integrator needed to be modified to react differently when encountering a subsurface scattering primitive. The diffuse term came from the dipole approximation described above, but the glossy and specular terms in the BRDF functioned as before.
Early test of a subsurface scattering block using "skim milk" parameters |
A thin block exhibiting no subsurface scattering |
The same thin block exhibiting subsurface scattering |
|
|
|
Models and Geometry
Technical Challenges
Results/Conclusions
Work Breakdown
References
Pat Hanrahan and Wolfgang Kreuger: "Reflection from Layered Surfaces due to Subsurface Scattering". Computer Graphics (Proceedings of SIGGRAPH 1993), July 1993.
Henrik Wann Jensen, Stephen R. Marschner, Marc Levoy and Pat Hanrahan: "A Practical Model for Subsurface Light Transport". Proceedings of SIGGRAPH 2001.
Realistic Image Synthesis Using Photon Mapping by Henrik Wann Jensen