Draft!!
Hard at work: A Work in progress
Hyun Gu Lee (hglee@stanford.edu)
Murad Akhter (murad@cs.stanford.edu)
Project Goal and motivation
Rendering realistic human characters is considered the holy grail of 3D games and computer animation. One of the central challenges in shading 3D characters is the appearance and modeling of healthy-looking, life-like skin due to its sub-surface scattering and semi-translucent, non-homogenius, multi-layered structure. The different layers of skin exhibit a range of reflectance, transmission and absorption properties which need to be accounted for with a specific physical model. The rough surface layer of the skin also needs to be accounted for, otherwise the characters can look like plastic. On top of this, human skin often has a clumps of short, thin hairs without which rendered characters can look too clean and uninspired. Incorporating hair is a challenge because it greatly increases the geometric complexity of the scene.
Our project's goal is to incorporate all of the aforementioned enhancements necessary in PBRT to render realistic-looking human skin and hair. For reference we will be emulating the following picture of a studious CS348B student hard at work.
Key technical challenges
Outline of Implementation
Hand Modeling
In order to build a realistic thin model we need a surface to bind it to. We are planning on deriving the hand and elbow 3D mesh by editing the CGHuman male model based on the Absolute Character Tools plugin for 3D Studio Max. This should allow us to export the 3D mesh as an OBJ file into Maya where we will pose it, add the shapes for the pen and notebook and probably use Mark Colbert's maya-pbrt plugin to generate the pbrt file to render our scene. Here's what our mesh currently looks like when loaded into Alias Motion Builder
Skin texturing
=== Sub-surface scattering Using the ideas from Hanrahan and Krueger's Siggraph '93 paper and Phasrr Hanrahan's Siggraph 2000 paper, we will implement subsurface scattering, simulating the multiple skin layers. These layers will consist of the outer oily, the epidermis, dermis and hypodermis layer as shown in the figure below
Hair
One way to model hair is by incorporating spatially inhomogeneous atmospheric attenuation and creating solid textures to define the color and opacity for each interval. However, this approach is probably unnecessary in our case since the amount of hair present on the hand is small and so we will simply model hair strands
Start by implementing spatially inhomogeneous atmospheric attenuation. Divide each ray into intervals. For each interval, interpolate between the ray's color and some constant fog color based on a procedurally computed opacity for that location in space. Experiment with opacity functions. Once you get this working, try defining a solid texture (probably procedurally) that gives color and opacity for each interval. See Perlin and Hoffert's Siggraph '89 paper on solid texture synthesis and Kajiya and Kay's teddy bear paper for ideas. If you want to make your volume renderer fast, use hierarchical spatial subdivision (e.g. an octree). Volumetric photon mapping is currently not implemented in pbrt. You could add it.
Illustrative images showing another hand pose and the effect of pigmentation on skin color, and translucency.
|
|
|
References
Hanrahan, P., and Krueger, W. 1993. Reflection from layered surfaces due to subsurface scattering. In Proceedings of the ACM Siggraph 1999, ACM Press / Addision-Wesley Publishing Co., New York, Computer Graphics Proeedings, 164-174.
Pharr, M., and Hanrahan, P. 2000. Monte carlo evaluation of non-linear scattering equations for subsurface reflection.
http://www.turbosquid.com/FullPreview/index.cfm/ID/194044
http://graphics.cs.ucf.edu/mayapbrt/index.php