Hard at work: By Hyun Gu Lee & Murad Akhter
We were motivated by the desire to render the intricate and fine detail of human skin texture and multi-layered reflection and sub-surface scattering properties.
Skin Texture & Fine Detail (Murad Akhter)
Hand Modeling, Rigging and Posing
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
Acquiring Skin Moulds
We plan on creating skin textures and procedurally generating normals for per-pixel bump-mapping to model the fine-scale and rough outer surface of the skin. We will be using the approach used to grow normal map textures from different skin regions as outlined by Haro et. all's Eurographics 2000 paper. In their work, they used reference normal maps collected from different skin regions around the face. We are hoping these regions will workl well for skin around the hand as well. If this turns out to not be true in practice, we will try to acquire our own normal maps.
Generating Normal Maps
I assumed that the normals across the hand surface varied stochastically and so grew the normal maps I had acquired via shape from shading above using texture synthesis. A few regions were selected to grow the normals across and the synthesized textures were stiched together in Photoshop. The texture synthesis algorithm I implemented was based on the extension to Li-Yi Wei & Marc Levoy's "Fast Texture Synthesis using TSVQ" paper by Ashikhmin ("Synthesizing Natural Textures) which works well for natural textures, only requires small neighbourhoods, & doesn't require TSVQ or multi-resolution acceleration. Here are some sample textures synthesized with this code.
And here is the final normal map that was generated from skin moulds, shape from shading, texture synthesis and texture stiching:
Bells & Whistles
Subsurface Scattering (Hyun Gu Lee)
I tried to implement subsurface scattering using the “A Rapid Hierarchical Rendering Technique for Translucent Materials” by Henrik Wann Jensen and Juan Buhler. Unfortunately, I could not get it to work correctly. This is how I tried to implement it. First, to sample the points on the mesh, I tried using the point repulsion method described in the “Generating Textures on Arbitrary Surfaces Using Reaction-Diffusion” and “Re-Tiling Polygonal Surfaces” by Greg Turk. This method proved to be hard to implement, difficult to debug, and time consuming. After talking with some classmates who were using the same paper, I found that you can just use the vertices of the polygon mesh weighted by the area. The second part of the algorithm, evaluating the diffusion approximation, was done by using a modified octree class. The values of the parameters for skin were taken from “Reflection from Layered Surfaces due to Subsurface Scattering” by Pat Hanrahan and Wolfgang Krueger. In retrospect, I probably should have consulted others and asked for more help. I also shouldn’t have tried to design it in the most general way possible, but concentrate on making it work on one specific case at a time.
- "Real-time, Photo-realistic, Physically Based Rendering of Fine Scale Human Skin Structure",
A. Haro, B. Guenter, and I. Essa, Proceedings 12th Eurographics Workshop on Rendering, London, England, June 2001.
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.