Rendering Oil and Moisture on Skin
CS348b Final Project
Sameh Kamel, 8 June 2004
Description
This report describes how I rendered images of wet and oily faces. Here is a
picture of my final rendering:
|
My rendering of an oily face |
Motivation
|
Reference Face (Viggo Mortensen) |
There are three physical characteristics that are important to the look of
peoples' faces:
- Subsurface scattering under the skin
- Skin texture (pores, follicles, etc.)
- Oil/moisture on and absorbed by the skin
You can spot the effect of each of the characteristics fairly easily in the
reference picture above. The last effect, oil and moisture, hasn't received as
much attention from the computer graphics community and so I wanted to explore
simulating oil and moisture on skin.
Although one can easily simulate the increased specularity of wet faces by
tweaking common specular parameters (like roughness), the overall darkening can
only be simulated correctly by considered the effects of refraction through
water or oil on the subsurface scattering contributions from the skin. The
inclusion of these refractive effects on subsurface scattering produce the
non-uniform darkening (a function of the surface normals and angles of
incidences of the rays) of objects that occurs in the real world.
Goals
I wanted to simulate two effects for this project:
- Subsurface Scattering. Implement a fast subsurface scattering
simulation as in [1].
- Oil/moisture. Simulate the increased specularity and darkening due
to total internal reflection as in [2].
Technical Challenges
Faces have complex geometry and thus quickly
varying radiance values, so the model has to be very finely sampled. This meant
that (a) I had to be careful with my photon map and (b) I had to use a high
resolution sampling grid to work with the techniques in [1]. I solved (a) simply
by using a spot light that subtends mostly the face (so that most of the photons
intersect the face). In the case of (b), most freely downloadable models are
lower resolution and so I used subdivision surface algorithms to generate a
finer mesh.
Results
Direct Lighting (Photon Map) |
Subsurface Scattering Included |
Wet + Subsurface Scattering |
Oily + Subsurface Scattering |
|
|
|
|
Conclusion
Overall, I am pleased with the quality of the images
produced. The wet renderings properly capture the increased specularity and
overall darkening of the faces. The specular spots are strongest around the
curves of the upper lip and nose, which is physical correct. The darkening also
appears to be correct and lends a great deal of realism to the pictures. Altough
I am pleased with these images, I do have some ideas for areas of further work:
- Non-uniform wetness. My rendering assume a uniform thin film of
water or oil. While this is a relatively valid assumption for oil, one often
wants to have non-uniform moisture like sweat on a character's brow. This
could be accomplished by defining a simple texture map that defines wet spots
on the surface, and assigning wetness to the triangles in the model based on
the map. One might interpolate to achieve smooth dropoffs in wetness.
- Parameters for sweat. I used the scattering parameters for water
instead of sweat -- measured data for sweat may increase accuracy.
- Combining oil and moisture effects. The techniques in [2] described
a single moisture layer, and so I only rendered oily and wet images
separately. The technique is probably easily extended to multiple layers, and
a multi-layer approach might work. But maybe just having a single layer and
calculating combined oil/water scattering parameters is more efficient.
Code and Scene Files
Here I provide my project source code and scene files. The first link
contains only the completely new files I wrote for pbrt. Because I made numerous
small changes to pbrt's core files, this won't run alone and therefore I also
provide here a gzip containing all of pbrt with my changes. As for the scene
files, bear in mind that these scenes take a long time (and a lot of memory) to
render because of the large number of sample points needed as discussed in the
"Technical Challenges" section.
final_proj.tar.gz
(just my new files)
pbrtsrc.tar.zip
(pbrt source files, modified by me)
she-spot-direct.pbrt
(face with direct lighting)
she-spot.pbrt
(face with subsurface scattering)
she-spot-wet.pbrt
(face wet with water)
she-spot-oil.pbrt
(face wet with oil)
she-spot-geometry3.lrt
(head model)
References
- [1] Jensen and Buhler. A Rapid Hierarchical Rendering Technique for
Translucent Materials. Proceedings of SIGGRAPH'2002.
- [2] Jensen, Legakis, and Dorsey. Rendering of Wet Materials. In
Rendering Techniques '99. Springer-Verlag, pages 273-282, 1999.
- [3] Jensen, Marchner, Levoy, and Hanrahan. A Practical Model for
Subsurface Transport. In Computer Graphics (SIGGRAPH 2001 Proceedings).
- [4] Jensen. Realistic Image Synthesis Using Photon Mapping. 2001.
Model Credit
The face model I used is credited to Anto Matkovic and was downloaded
freely from:
http://www.3dcafe.com/asp/anatomy.asp