CS348b2007

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

We modeled our soaps after the Marseille style Bonne Mere soaps from L'Occitane:

We originally modeled our soap as a relatively simple block using Maya. We intended to use bump mapping to show the surface details. However, we found that using bump maps didn't generate as dramatic and interesting surface details as we had hoped for. Subsurface scattering tends to smooth out small bumps on the surface, thus making bump mapping a less effective technique.

Original subsurface scattering block

With bump map and no subsurface scattering

With bump map and subsurface scattering

sss.png

bumpmap.png

bumpmap-sss.png

Color Matching

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

last edited 2007-06-13 01:00:29 by AndrewYen