= Draft!! = = Hard at work: A Work in progress by Hyun Gu Lee & Murad Akhter = === 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 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. [[BR]] attachment:pat_rocks_small.png ---- === 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 [[BR]][[BR]] attachment:han.png [[BR]] === 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 === 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. [[BR]] ---- || attachment:coffee_mug_small.png || attachment:dark-toned_small.png || attachment:light_toned_small.png || === 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. [[BR]] 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 [[BR]] http://graphics.cs.ucf.edu/mayapbrt/index.php [[BR]]