Real-Time FurReal-Time Furon Arbitrary Surfaceson Arbitrary Surfaces
Real-Time FurReal-Time Furon Arbitrary Surfaceson Arbitrary Surfaces
Jed LengyelJed Lengyel
Emil PraunEmil Praun
Adam FinkelsteinAdam Finkelstein
Hugues HoppeHugues Hoppe
Jed LengyelJed Lengyel
Emil PraunEmil Praun
Adam FinkelsteinAdam Finkelstein
Hugues HoppeHugues Hoppe
Microsoft ResearchMicrosoft Research
Princeton UniversityPrinceton University
Princeton UniversityPrinceton University
Microsoft ResearchMicrosoft Research
Microsoft ResearchMicrosoft Research
Princeton UniversityPrinceton University
Princeton UniversityPrinceton University
Microsoft ResearchMicrosoft Research
Name your Name your favorite things… favorite things… almost all of them almost all of them are fuzzy.are fuzzy.
Real-Time CG Needs Fuzzy ObjectsReal-Time CG Needs Fuzzy ObjectsReal-Time CG Needs Fuzzy ObjectsReal-Time CG Needs Fuzzy Objects
MotivationMotivationMotivationMotivation
Tarantula DemoTarantula DemoTarantula DemoTarantula Demo
Previous work on furPrevious work on furPrevious work on furPrevious work on fur
Particle systems Particle systems [Reeves ’83][Reeves ’83]
Volume textures Volume textures [Kajiya & Kay ’86][Kajiya & Kay ’86]
Special surface shader Special surface shader [Goldman ’97][Goldman ’97]
Geometry Geometry [Van Gelder & Wilhelms ’97][Van Gelder & Wilhelms ’97]
Volume textures using CG HardwareVolume textures using CG Hardware[Meyer and Neyret ‘98][Meyer and Neyret ‘98]
[Lengyel ’00][Lengyel ’00]
Particle systems Particle systems [Reeves ’83][Reeves ’83]
Volume textures Volume textures [Kajiya & Kay ’86][Kajiya & Kay ’86]
Special surface shader Special surface shader [Goldman ’97][Goldman ’97]
Geometry Geometry [Van Gelder & Wilhelms ’97][Van Gelder & Wilhelms ’97]
Volume textures using CG HardwareVolume textures using CG Hardware[Meyer and Neyret ‘98][Meyer and Neyret ‘98]
[Lengyel ’00][Lengyel ’00]
Geometric ModelsGeometric ModelsGeometric ModelsGeometric Models
Cones Cones too slow on current hardware too slow on current hardware Lines Lines interactive for sparse fur interactive for sparse fur Poor filteringPoor filtering
Cones Cones too slow on current hardware too slow on current hardware Lines Lines interactive for sparse fur interactive for sparse fur Poor filteringPoor filtering
[Van Gelder, Wilhelms ’97][Van Gelder, Wilhelms ’97]
Previous work on furPrevious work on furPrevious work on furPrevious work on fur
Volume textures using CG hardwareVolume textures using CG hardware[Meyer and Neyret ‘98][Meyer and Neyret ‘98]
Shell textures Shell textures [Lengyel ’00][Lengyel ’00]
Volume textures using CG hardwareVolume textures using CG hardware[Meyer and Neyret ‘98][Meyer and Neyret ‘98]
Shell textures Shell textures [Lengyel ’00][Lengyel ’00]
Shell texturesShell texturesShell texturesShell textures
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Generating the TexturesGenerating the TexturesGenerating the TexturesGenerating the Textures
1.1. Geometric modelGeometric model
– – Seed surface with “curl” Seed surface with “curl” starting points.starting points.
–– Grow as particle system.Grow as particle system.
1.1. Geometric modelGeometric model
– – Seed surface with “curl” Seed surface with “curl” starting points.starting points.
–– Grow as particle system.Grow as particle system.
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Generating the TexturesGenerating the TexturesGenerating the TexturesGenerating the Textures
–– Interpolate to generate Interpolate to generate more seed points.more seed points.
– – Ignore hair-to-hair Ignore hair-to-hair collision.collision.
–– Interpolate to generate Interpolate to generate more seed points.more seed points.
– – Ignore hair-to-hair Ignore hair-to-hair collision.collision.
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Generating the TexturesGenerating the TexturesGenerating the TexturesGenerating the Textures
2. Sample volume2. Sample volumeKeep:Keep:
– – colorcolor
–– opacityopacity
–– ((normal)normal)
2. Sample volume2. Sample volumeKeep:Keep:
– – colorcolor
–– opacityopacity
–– ((normal)normal)
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Generating the TexturesGenerating the TexturesGenerating the TexturesGenerating the Textures
Wide range of furWide range of fur possible with different possible with different seed colors and curl seed colors and curl parameters parameters
Wide range of furWide range of fur possible with different possible with different seed colors and curl seed colors and curl parameters parameters
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Problems with shell texturesProblems with shell texturesProblems with shell texturesProblems with shell textures
(1)(1) Surface parametrization Surface parametrization
(given arbitrary surface)?(given arbitrary surface)?
(2)(2) Texture memory usage Texture memory usage
(several shells,(several shells,over entire surface,over entire surface,at hair resolution!)at hair resolution!)
(1)(1) Surface parametrization Surface parametrization
(given arbitrary surface)?(given arbitrary surface)?
(2)(2) Texture memory usage Texture memory usage
(several shells,(several shells,over entire surface,over entire surface,at hair resolution!)at hair resolution!)
lappedlappedvolumevolumetexturestextures
Problems with shell texturesProblems with shell texturesProblems with shell texturesProblems with shell textures
(3)(3) Poor silhouettes Poor silhouettes
(shells break apart(shells break apart at oblique angles) at oblique angles)
(3)(3) Poor silhouettes Poor silhouettes
(shells break apart(shells break apart at oblique angles) at oblique angles)
fin texturesfin textures
Review of Lapped TexturesReview of Lapped TexturesReview of Lapped TexturesReview of Lapped Textures
texture patchtexture patch
surfacesurface
Key Idea: Patch PastingKey Idea: Patch PastingKey Idea: Patch PastingKey Idea: Patch Pasting
texture patchtexture patchtexture patchtexture patch
surfacesurfacesurfacesurface““lapped textures”lapped textures”
Stone Bunny DemoStone Bunny DemoStone Bunny DemoStone Bunny Demo
Stone Bunny ResultStone Bunny ResultStone Bunny ResultStone Bunny Result
25 frames25 framesper sec!per sec!
256 x 256256 x 256texturetexture
(282 times)(282 times)
256 x 256256 x 256texturetexture
(282 times)(282 times)
15,000 faces15,000 faces
Lapped volume texturesLapped volume texturesLapped volume texturesLapped volume textures
Simple idea: each shell is a lapped texture.Simple idea: each shell is a lapped texture. Simple idea: each shell is a lapped texture.Simple idea: each shell is a lapped texture.
opaque skinopaque skin transparent shellstransparent shells compositecomposite
Bunny DemoBunny DemoBunny DemoBunny Demo
IssuesIssuesIssuesIssues
Rendering orderRendering order innermost innermost outermost shell outermost shell
Directional texture vs. isotropic textureDirectional texture vs. isotropic texture
Texture alphaTexture alpha Lapped textures: splotch outlineLapped textures: splotch outline Volume is semi-transparentVolume is semi-transparent
alpha = splotch outline alpha = splotch outline ×× volume alpha volume alpha
Rendering orderRendering order innermost innermost outermost shell outermost shell
Directional texture vs. isotropic textureDirectional texture vs. isotropic texture
Texture alphaTexture alpha Lapped textures: splotch outlineLapped textures: splotch outline Volume is semi-transparentVolume is semi-transparent
alpha = splotch outline alpha = splotch outline ×× volume alpha volume alpha
Poor silhouettePoor silhouettePoor silhouettePoor silhouette
offset shells
original mesh
offset shells
original mesh extruded
fin
FinsFinsFinsFins
Fin TextureFin TextureFin TextureFin Texture
Single fin textureSingle fin texture Interval region for each edge.Interval region for each edge.
Single fin textureSingle fin texture Interval region for each edge.Interval region for each edge.
edge2edge2
edge1edge1
Fin renderingFin renderingFin renderingFin rendering
Rendering order: skin – shells – fins Rendering order: skin – shells – fins shells, fins – no Z buffer write!shells, fins – no Z buffer write!
Fade based onFade based onviewing angleviewing angle
Rendering order: skin – shells – fins Rendering order: skin – shells – fins shells, fins – no Z buffer write!shells, fins – no Z buffer write!
Fade based onFade based onviewing angleviewing angle
Fin DemoFin DemoFin DemoFin Demo
Interactive ControlsInteractive ControlsInteractive ControlsInteractive Controls
Hair colorHair color
Hair lengthHair length
Hair direction (combing)Hair direction (combing)
Hair colorHair color
Hair lengthHair length
Hair direction (combing)Hair direction (combing)
Combing DemoCombing DemoCombing DemoCombing Demo
DemosDemosDemosDemos