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

Preview:

Citation preview

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

Recommended