Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft Research Princeton University Microsoft Research Princeton University Microsoft Research
l Name your favorite things… almost all of them are fuzzy. Real-Time CG Needs Fuzzy Objects
MotivationMotivation
Tarantula Demo
Previous work on fur l Particle systems [Reeves 83] l Volume textures [Kajiya & Kay 86] l Special surface shader [Goldman 97] l Geometry [Van Gelder & Wilhelms 97] l Volume textures using CG Hardware [Meyer and Neyret 98] [Lengyel 00] l Particle systems [Reeves 83] l Volume textures [Kajiya & Kay 86] l Special surface shader [Goldman 97] l Geometry [Van Gelder & Wilhelms 97] l Volume textures using CG Hardware [Meyer and Neyret 98] [Lengyel 00]
Geometric Models l Cones too slow on current hardware l Lines interactive for sparse fur l Poor filtering l Cones too slow on current hardware l Lines interactive for sparse fur l Poor filtering [Van Gelder, Wilhelms 97]
Previous work on fur l Volume textures using CG hardware [Meyer and Neyret 98] l Shell textures [Lengyel 00] l Volume textures using CG hardware [Meyer and Neyret 98] l Shell textures [Lengyel 00]
Shell textures [Lengyel 00]
Generating the Textures 1.Geometric model – Seed surface with curl starting points. – Grow as particle system. 1.Geometric model – Seed surface with curl starting points. – Grow as particle system. [Lengyel 00]
Generating the Textures – Interpolate to generate more seed points. – Ignore hair-to-hair collision. – Interpolate to generate more seed points. – Ignore hair-to-hair collision. [Lengyel 00]
Generating the Textures 2. Sample volume Keep: – color – opacity – ( normal) 2. Sample volume Keep: – color – opacity – ( normal) [Lengyel 00]
Generating the Textures Wide range of fur possible with different seed colors and curl parameters [Lengyel 00]
Problems with shell textures (1) Surface parametrization (given arbitrary surface)? (given arbitrary surface)? (2) Texture memory usage (several shells, over entire surface, at hair resolution!) (several shells, over entire surface, at hair resolution!) (1) Surface parametrization (given arbitrary surface)? (given arbitrary surface)? (2) Texture memory usage (several shells, over entire surface, at hair resolution!) (several shells, over entire surface, at hair resolution!) lapped volume textures
Problems with shell textures (3) Poor silhouettes (shells break apart at oblique angles) (shells break apart at oblique angles) (3) Poor silhouettes (shells break apart at oblique angles) (shells break apart at oblique angles) fin textures
Review of Lapped Textures texture patch surface
Key Idea: Patch Pasting texture patch surfacesurface lapped textures
Stone Bunny Demo
Stone Bunny Result 25 frames per sec! 256 x 256 texture (282 times) 256 x 256 texture (282 times) 15,000 faces
Lapped volume textures l Simple idea: each shell is a lapped texture. opaque skin transparent shells composite
Bunny Demo
IssuesIssues l Rendering order n innermost outermost shell l Directional texture vs. isotropic texture l Texture alpha n Lapped textures: splotch outline n Volume is semi-transparent alpha = splotch outline × volume alpha alpha = splotch outline × volume alpha l Rendering order n innermost outermost shell l Directional texture vs. isotropic texture l Texture alpha n Lapped textures: splotch outline n Volume is semi-transparent alpha = splotch outline × volume alpha alpha = splotch outline × volume alpha
Poor silhouette
FinsFins
Fin Texture l Single fin texture l Interval region for each edge. l Single fin texture l Interval region for each edge. edge2edge1
Fin rendering l Rendering order: skin – shells – fins n shells, fins – no Z buffer write! l Fade based on viewing angle l Rendering order: skin – shells – fins n shells, fins – no Z buffer write! l Fade based on viewing angle
Fin Demo
Interactive Controls l Hair color l Hair length l Hair direction (combing) l Hair color l Hair length l Hair direction (combing)
Combing Demo
DemosDemos