30
Real-Time Fur Real-Time Fur on Arbitrary Surfaces on Arbitrary Surfaces Jed Lengyel Jed Lengyel Emil Praun Emil Praun Adam Adam Finkelstein Finkelstein Hugues Hoppe Hugues Hoppe Microsoft Research Microsoft Research Princeton University Princeton University Princeton University Princeton University Microsoft Research Microsoft Research

Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Embed Size (px)

Citation preview

Page 1: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 2: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 3: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

MotivationMotivationMotivationMotivation

Page 4: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Tarantula DemoTarantula DemoTarantula DemoTarantula Demo

Page 5: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 6: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 7: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 8: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Shell texturesShell texturesShell texturesShell textures

[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]

Page 9: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 10: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 11: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 12: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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]

Page 13: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 14: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 15: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Review of Lapped TexturesReview of Lapped TexturesReview of Lapped TexturesReview of Lapped Textures

texture patchtexture patch

surfacesurface

Page 16: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Key Idea: Patch PastingKey Idea: Patch PastingKey Idea: Patch PastingKey Idea: Patch Pasting

texture patchtexture patchtexture patchtexture patch

surfacesurfacesurfacesurface““lapped textures”lapped textures”

Page 17: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Stone Bunny DemoStone Bunny DemoStone Bunny DemoStone Bunny Demo

Page 18: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 19: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 20: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Bunny DemoBunny DemoBunny DemoBunny Demo

Page 21: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 22: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Poor silhouettePoor silhouettePoor silhouettePoor silhouette

offset shells

original mesh

Page 23: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

offset shells

original mesh extruded

fin

FinsFinsFinsFins

Page 24: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 25: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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

Page 26: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Fin DemoFin DemoFin DemoFin Demo

Page 27: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

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)

Page 28: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

Combing DemoCombing DemoCombing DemoCombing Demo

Page 29: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft

DemosDemosDemosDemos

Page 30: Real-Time Fur on Arbitrary Surfaces Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Jed Lengyel Emil Praun Adam Finkelstein Hugues Hoppe Microsoft