Image Synthesis Fur Rendering
Motivation Hair & Fur Human hair ~ 100.000 strands Animal fur ~ 6.000.000 strands
Real-Time CG Needs Fuzzy Objects Name your favorite things almost all of them are fuzzy!
Motivation
Previous work on fur Particle systems [Reeves 83] Volume textures [Kajiya & Kay 86] Special surface shader [Goldman 97] Geometry [Van Gelder & Wilhelms 97] Volume textures using CG Hardware [Meyer and Neyret 98] [Lengyel 00]
Geometric Models Cones too slow on current hardware Lines interactive for sparse fur Poor filtering
Previous work on fur Volume textures using CG hardware [Meyer and Neyret 98] Shell textures [Lengyel 00]
Shell Textures
Shell Textures Shells: Extrude model outwards and texture each shell it with progressively higher slices from a 3D fur texture
Generating the Textures Geometric model Seed surface with curl starting points. Grow as particle system
Generating the Textures Interpolate to generate more seed points. Ignore hair-to-hair collision.
Generating the Textures Sample volume Keep: Color Opacity (normal)
Generating the Textures Wide range of fur possible with different seed colors and curl parameters
Problems with shell textures (1) Surface parametrization (given arbitrary surface)? (2) Texture memory usage (several shells, over entire surface, at hair resolution!) lapped volume textures
Problems with shell textures (3) Poor silhouettes (shells break apart at oblique angles) fin textures
Review of Lapped Textures surface texture patch
Key Idea: Patch Pasting surface texture patch
Lapped volume textures Simple idea: each shell is a lapped texture. opaque skin transparent shells composite
Issues Rendering order innermost outermost shell Texture alpha Lapped textures: splotch outline Volume is semi-transparent alpha = splotch outline volume alpha
Poor silhouette offset shells original mesh
Fins offset shells original mesh extruded fin
Fin Textures skin & shells fins skin, shells & fins
Fin Texture Single fin texture Interval region for each edge. edge2 edge1
Fin rendering Rendering order: skin fins shells shells, fins : no Z buffer write! alpha blending Fade static fins based on viewing angle (or use a geometry shader to create fins on the fly)
Results