View
213
Download
0
Tags:
Embed Size (px)
Citation preview
Surface ParametrizationsSurface ParametrizationsSurface ParametrizationsSurface Parametrizations
Hugues HoppeHugues HoppeMicrosoft ResearchMicrosoft Research
IMA Workshop on Computer GraphicsIMA Workshop on Computer GraphicsMay 18, 2001May 18, 2001
Hugues HoppeHugues HoppeMicrosoft ResearchMicrosoft Research
IMA Workshop on Computer GraphicsIMA Workshop on Computer GraphicsMay 18, 2001May 18, 2001
MotivationMotivationMotivationMotivation
Powerful rasterization hardwarePowerful rasterization hardware normal maps, …normal maps, … multi-texturingmulti-texturing pixel shaderspixel shaders mainstreammainstream
Need to associate textures with surfaceNeed to associate textures with surface
Need to parametrize surfaceNeed to parametrize surface
Powerful rasterization hardwarePowerful rasterization hardware normal maps, …normal maps, … multi-texturingmulti-texturing pixel shaderspixel shaders mainstreammainstream
Need to associate textures with surfaceNeed to associate textures with surface
Need to parametrize surfaceNeed to parametrize surface
Two approachesTwo approachesTwo approachesTwo approaches
Lapped parametrizationLapped parametrization overlapping patchesoverlapping patches instancinginstancing
Lapped parametrizationLapped parametrization overlapping patchesoverlapping patches instancinginstancing
Global parametrizationGlobal parametrization atlas of chartsatlas of charts distinct domainsdistinct domains
Global parametrizationGlobal parametrization atlas of chartsatlas of charts distinct domainsdistinct domains
2D texture2D texturemesh surfacemesh surface
Projects in this talkProjects in this talkProjects in this talkProjects in this talk
Lapped parametrizationLapped parametrization Lapped texturesLapped textures
[SIGGRAPH 2000][SIGGRAPH 2000]
Real-time furReal-time fur[I3D 2001][I3D 2001]
Real-time hatchingReal-time hatching[SIGGRAPH 2001][SIGGRAPH 2001]
Lapped parametrizationLapped parametrization Lapped texturesLapped textures
[SIGGRAPH 2000][SIGGRAPH 2000]
Real-time furReal-time fur[I3D 2001][I3D 2001]
Real-time hatchingReal-time hatching[SIGGRAPH 2001][SIGGRAPH 2001]
Global parametrizationGlobal parametrization Silhouette clippingSilhouette clipping
[SIGGRAPH 2000][SIGGRAPH 2000]
Texture mappingTexture mapping progressive meshes progressive meshes [SIGGRAPH 2001][SIGGRAPH 2001]
Global parametrizationGlobal parametrization Silhouette clippingSilhouette clipping
[SIGGRAPH 2000][SIGGRAPH 2000]
Texture mappingTexture mapping progressive meshes progressive meshes [SIGGRAPH 2001][SIGGRAPH 2001]
with:with: Emil Praun,Emil Praun,Adam Finkelstein (Princeton),Adam Finkelstein (Princeton),Jed Lengyel (Microsoft)Jed Lengyel (Microsoft)
with:with: Pedro Sander,Pedro Sander,Steven Gortler (Harvard),Steven Gortler (Harvard),John Snyder (Microsoft)John Snyder (Microsoft)
[Sander, Gu, Gortler, Hoppe, Snyder. SIGGRAPH 2000][Sander, Gu, Gortler, Hoppe, Snyder. SIGGRAPH 2000]
Silhouette clippingSilhouette clippingSilhouette clippingSilhouette clipping
Mesh simplificationMesh simplificationMesh simplificationMesh simplification
original meshoriginal mesh+ texture/bump map+ texture/bump map
poorpoorsilhouettesilhouette
poorpoorsilhouettesilhouette
simplified meshsimplified mesh
silhouette clippedsilhouette clipped
Silhouette clippingSilhouette clippingSilhouette clippingSilhouette clipping
original meshoriginal mesh simplified meshsimplified mesh+ texture/bump map+ texture/bump map
silhouette clippedsilhouette clipped
Silhouette clippingSilhouette clippingSilhouette clippingSilhouette clipping
original meshoriginal mesh simplified meshsimplified mesh+ texture/bump map+ texture/bump map
Texturing the simplified mesh Texturing the simplified mesh Texturing the simplified mesh Texturing the simplified mesh
original mesh
simplified mesh
texture atlas
rendered
70K faces 500 faces
[Soucy et al 96][Soucy et al 96][Cignoni et al 98][Cignoni et al 98]
Atlas of trianglesAtlas of trianglesAtlas of trianglesAtlas of triangles
meshmesh (500 faces) (500 faces)
(8 x 32 x 2 (8 x 32 x 2 trianglestriangles, 256 x 1024 texels), 256 x 1024 texels)
texture typetexture type
normal mapnormal map
color mapcolor map
Texture samplingTexture samplingTexture samplingTexture sampling
closest-pointclosest-point[Cignoni et al 98][Cignoni et al 98]
originaloriginal
simplifiedsimplified vertex normalsvertex normals
normal-shootingnormal-shooting(our technique)(our technique)
Summary: atlas of triangles Summary: atlas of triangles Summary: atlas of triangles Summary: atlas of triangles
original mesh
simplified mesh
texture atlas
rendered
70K faces 500 faces
non-uniform sampling!non-uniform sampling!non-uniform sampling!non-uniform sampling!
[Sander, Snyder, Gortler, Hoppe. SIGGRAPH 2001][Sander, Snyder, Gortler, Hoppe. SIGGRAPH 2001]
Texture mapping progressive meshesTexture mapping progressive meshesTexture mapping progressive meshesTexture mapping progressive meshes
43,00043,000facesfaces
Progressive mesh representationProgressive mesh representationProgressive mesh representationProgressive mesh representation
refinement streamrefinement streamrefinement streamrefinement streambase meshbase meshbase meshbase mesh
4343facesfaces
1,0001,000 2,0002,000
level-of-detail controllevel-of-detail control
43,00043,000
ChallengeChallengeChallengeChallenge
So far, texture atlas defined for So far, texture atlas defined for singlesingle mesh. mesh.
What if desire mesh with 1000, 2000 faces?What if desire mesh with 1000, 2000 faces?
Store additional texture atlases ? Store additional texture atlases ?
So far, texture atlas defined for So far, texture atlas defined for singlesingle mesh. mesh.
What if desire mesh with 1000, 2000 faces?What if desire mesh with 1000, 2000 faces?
Store additional texture atlases ? Store additional texture atlases ?
500 faces500 faces atlas of 500 trianglesatlas of 500 triangles
SolutionSolutionSolutionSolution
Construct texture atlas valid for Construct texture atlas valid for allall MM00……MMnn.. Construct texture atlas valid for Construct texture atlas valid for allall MM00……MMnn..
470 faces470 faces 700 faces700 faces 1,200 faces1,200 faces 10,000 faces10,000 faces
GoalsGoalsGoalsGoals(1) Minimize (1) Minimize texture stretchtexture stretch(1) Minimize (1) Minimize texture stretchtexture stretch
GoalsGoalsGoalsGoals(1) Minimize texture stretch(1) Minimize texture stretch
(2) Minimize (2) Minimize texture deviationtexture deviation
(1) Minimize texture stretch(1) Minimize texture stretch
(2) Minimize (2) Minimize texture deviationtexture deviation
(stricter than Hausdorff error)(stricter than Hausdorff error) [Cohen et al 98][Cohen et al 98]
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
straight boundaries!straight boundaries!straight boundaries!straight boundaries!
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
mipmap artifacts!mipmap artifacts!mipmap artifacts!mipmap artifacts!
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) form initial chart parametrizations(2) form initial chart parametrizations(3) resize chart polygons(3) resize chart polygons(4) simplify mesh(4) simplify mesh(5) optimize parametrization(5) optimize parametrization(6) pack chart polygons(6) pack chart polygons(7) sample texture images(7) sample texture images
ParametrizationParametrizationParametrizationParametrization
angle-preserving (angle-preserving (conformalconformal))γγ = = ΓΓ area-preservingarea-preserving γγ ΓΓ = 1= 1 length-preserving (length-preserving (isometricisometric)) γγ = = ΓΓ = 1= 1
angle-preserving (angle-preserving (conformalconformal))γγ = = ΓΓ area-preservingarea-preserving γγ ΓΓ = 1= 1 length-preserving (length-preserving (isometricisometric)) γγ = = ΓΓ = 1= 1
2D texture domain2D texture domain surface in 3Dsurface in 3D
linear maplinear mapTTTT
singular values: singular values: γγ , , ΓΓ
Stretch-minimizingStretch-minimizing parametrization parametrizationStretch-minimizingStretch-minimizing parametrization parametrization
2D texture domain2D texture domain surface in 3Dsurface in 3D
linear maplinear mapTTTT
singular values: singular values: γγ , , ΓΓ
LL22(M) = (M) = TT (L (L22(T))(T))2 2 A(T)A(T)
LL∞∞(M) = max(M) = maxTT L L∞∞(T)(T)
LL22(T) = (T) = ½√ ½√ γγ22 + + ΓΓ22
LL∞∞(T) = (T) = ΓΓ
high stretch!high stretch!
Stretch-minimizing parametrizationStretch-minimizing parametrizationStretch-minimizing parametrizationStretch-minimizing parametrization
Floater parametrizationFloater parametrization ( (≈ harmonic map)≈ harmonic map)
L2 = 2.26 L = 9.86
LL22 stretch minimization stretch minimization
L2 = 1.22 L = 2.13
Example of stretch minimizationExample of stretch minimizationExample of stretch minimizationExample of stretch minimization
ignoring stretchignoring stretch minimizing stretchminimizing stretch
Summary: global parametrizationSummary: global parametrizationSummary: global parametrizationSummary: global parametrization
Good for normal mapsGood for normal maps Large textureLarge texture Resampling artifactsResampling artifacts
Good for normal mapsGood for normal maps Large textureLarge texture Resampling artifactsResampling artifacts
atlas of trianglesatlas of triangles atlas of chartsatlas of charts
[Praun, Finkelstein, Hoppe. SIGGRAPH 2000][Praun, Finkelstein, Hoppe. SIGGRAPH 2000]
Lapped texturesLapped texturesLapped texturesLapped textures
ExampleExampleExampleExample
“example” image“example” image
textured surfacetextured surface
mesh geometrymesh geometry
?
Key idea: patch pastingKey idea: patch pastingKey idea: patch pastingKey idea: patch pasting
texture patchtexture patchtexture patchtexture patch
surfacesurfacesurfacesurface““lapped textures”lapped textures”
Direction field: user-specifiedDirection field: user-specifiedDirection field: user-specifiedDirection field: user-specified
Improve alignment to direction fieldImprove alignment to direction fieldImprove alignment to direction fieldImprove alignment to direction field
texture patchtexture patch
surfacesurface
Tangential vector fieldTangential vector fieldTangential vector fieldTangential vector field
TTTT SSSS
Optimizing the parametrizationOptimizing the parametrizationOptimizing the parametrizationOptimizing the parametrization
TTTTSSSS
BBBB
CCCC
AAAA
((TT))((TT))
((SS))((SS))
((AA))((AA))
((BB))((BB))
((CC))((CC))
face in 3Dface in 3Dface in 3Dface in 3D 2D texture space2D texture space2D texture space2D texture space
Optimizing the parametrizationOptimizing the parametrizationOptimizing the parametrizationOptimizing the parametrization
Sparse linear least squares problemSparse linear least squares problem fast solutionfast solution
Sparse linear least squares problemSparse linear least squares problem fast solutionfast solution
Texture storage and renderingTexture storage and renderingTexture storage and renderingTexture storage and rendering
Traditional approach: Traditional approach: Global texture atlasGlobal texture atlas Pre-composite into a texture map.Pre-composite into a texture map.
-- OR ---- OR --
Novel approach: Novel approach: Runtime pastingRuntime pasting Composite at runtime using hardware.Composite at runtime using hardware.
Traditional approach: Traditional approach: Global texture atlasGlobal texture atlas Pre-composite into a texture map.Pre-composite into a texture map.
-- OR ---- OR --
Novel approach: Novel approach: Runtime pastingRuntime pasting Composite at runtime using hardware.Composite at runtime using hardware.
Traditional: Traditional: Global texture atlasGlobal texture atlasTraditional: Traditional: Global texture atlasGlobal texture atlas
Novel: Novel: Runtime pastingRuntime pastingNovel: Novel: Runtime pastingRuntime pasting Store vertex parametrizations for each patchStore vertex parametrizations for each patch Composite at run-time using hardwareComposite at run-time using hardware
(triangles may be rendered several times) (triangles may be rendered several times)
Store vertex parametrizations for each patchStore vertex parametrizations for each patch Composite at run-time using hardwareComposite at run-time using hardware
(triangles may be rendered several times) (triangles may be rendered several times)
Pros & ConsPros & ConsPros & ConsPros & Cons• Global atlasGlobal atlas
+ Faster rendering, more portableFaster rendering, more portable+ Easy to paint unique details (eyes, nose)Easy to paint unique details (eyes, nose)– Sampling artifactsSampling artifacts
• Runtime pastingRuntime pasting– Increases model complexity (Increases model complexity (1.6 –3)1.6 –3)+ Huge effective resolutionHuge effective resolution+ Reuse parametrization for many texturesReuse parametrization for many textures
• Global atlasGlobal atlas+ Faster rendering, more portableFaster rendering, more portable+ Easy to paint unique details (eyes, nose)Easy to paint unique details (eyes, nose)– Sampling artifactsSampling artifacts
• Runtime pastingRuntime pasting– Increases model complexity (Increases model complexity (1.6 –3)1.6 –3)+ Huge effective resolutionHuge effective resolution+ Reuse parametrization for many texturesReuse parametrization for many textures
DemosDemosDemosDemos
bunny (& paint)bunny (& paint) parasaur parasaur holes3holes3 stonebunnystonebunny
bunny (& paint)bunny (& paint) parasaur parasaur holes3holes3 stonebunnystonebunny
Results: splotchesResults: splotchesResults: splotchesResults: splotches
(completely automatic: no direction field)(completely automatic: no direction field)
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
Controlling direction and scaleControlling direction and scaleControlling direction and scaleControlling direction and scale
LimitationsLimitationsLimitationsLimitations
low-frequencylow-frequencycomponentscomponents
boundaryboundarymismatchesmismatches
direction field direction field singularitiessingularities
[Lengyel, Praun, Finkelstein, Hoppe. I3D 2001][Lengyel, Praun, Finkelstein, Hoppe. I3D 2001]
Real-time fur on arbitrary surfacesReal-time fur on arbitrary surfacesReal-time fur on arbitrary surfacesReal-time fur on arbitrary surfaces
volumetricvolumetriclapped texturelapped texture
Previous work: geometric hairPrevious work: geometric hairPrevious work: geometric hairPrevious work: geometric hair
Lines Lines interactive for sparse fur interactive for sparse fur Challenge: aliasingChallenge: aliasing
Lines Lines interactive for sparse fur interactive for sparse fur Challenge: aliasingChallenge: aliasing
[Van Gelder, Wilhelms ’97][Van Gelder, Wilhelms ’97]
Shell texturesShell texturesShell texturesShell textures
[Lengyel ’00][Lengyel ’00][Lengyel ’00][Lengyel ’00]
Shell texturesShell texturesShell texturesShell textures
Problem: required texture memory is huge!Problem: required texture memory is huge!
Solution: use lapped texture for each shell.Solution: use lapped texture for each shell.
Problem: required texture memory is huge!Problem: required texture memory is huge!
Solution: use lapped texture for each shell.Solution: use lapped texture for each shell.
opaque skinopaque skin transparent shellstransparent shells compositecomposite
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.
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.
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)
Generating the texturesGenerating the texturesGenerating the texturesGenerating the textures
Using differentUsing differentparticle parameters,particle parameters,wide range of fur wide range of fur possible.possible.
Using differentUsing differentparticle parameters,particle parameters,wide range of fur wide range of fur possible.possible.
Fin renderingFin renderingFin renderingFin rendering
Fade based on viewing angleFade based on viewing angle Fade based on viewing angleFade based on viewing angle
[Praun, Hoppe, Webb, Finkelstein. SIGGRAPH 2001][Praun, Hoppe, Webb, Finkelstein. SIGGRAPH 2001]
Real-time hatchingReal-time hatchingReal-time hatchingReal-time hatching
1-D (tonal) array1-D (tonal) arrayof texturesof textures
help convey shape!help convey shape!
OverviewOverviewOverviewOverview
- Real-time rendering- Real-time rendering
- Strokes with temporal - Strokes with temporal && spatial coherence spatial coherence
- Real-time rendering- Real-time rendering
- Strokes with temporal - Strokes with temporal && spatial coherence spatial coherence
Challenges:Challenges:Challenges:Challenges:
Solution:Solution:Solution:Solution:
- Exploit hardware - Exploit hardware multimulti-texturing-texturing
- Coherence:- Coherence: tonal art mapstonal art maps (TAMs) (TAMs) 6-way6-way blend on each triangle blend on each triangle
- Exploit hardware - Exploit hardware multimulti-texturing-texturing
- Coherence:- Coherence: tonal art mapstonal art maps (TAMs) (TAMs) 6-way6-way blend on each triangle blend on each triangle
Tonal art mapTonal art mapTonal art mapTonal art map
Mip-mapped texture imagesMip-mapped texture images Stroke nesting propertyStroke nesting property
Mip-mapped texture imagesMip-mapped texture images Stroke nesting propertyStroke nesting property
tone tone
s
cale
sc
ale
tonetone
tonetone
vv11 vv22 vv33
6-way blend 6-way blend finalfinal
Multitexture blendingMultitexture blendingMultitexture blendingMultitexture blending
Lapped parametrizationLapped parametrizationLapped parametrizationLapped parametrization
texture patchtexture patchtexture patchtexture patch
surfacesurfacesurfacesurface
Direction fieldDirection fieldDirection fieldDirection field
Based on surface principal curvaturesBased on surface principal curvatures
Optimized to be smoothOptimized to be smooth [Hertzmann & Zorin 2000][Hertzmann & Zorin 2000]
Symmetry: 180Symmetry: 180ºº instead of 90 instead of 90ºº
Based on surface principal curvaturesBased on surface principal curvatures
Optimized to be smoothOptimized to be smooth [Hertzmann & Zorin 2000][Hertzmann & Zorin 2000]
Symmetry: 180Symmetry: 180ºº instead of 90 instead of 90ºº
Summary: lapped parametrizationsSummary: lapped parametrizationsSummary: lapped parametrizationsSummary: lapped parametrizations
InstancingInstancing reduce memory reduce memory permits volume textures & 1D functions permits volume textures & 1D functions
Avoids resampling artifactsAvoids resampling artifacts
InstancingInstancing reduce memory reduce memory permits volume textures & 1D functions permits volume textures & 1D functions
Avoids resampling artifactsAvoids resampling artifacts
256 x 256 texels256 x 256 texels 256 x 256 x 16256 x 256 x 16 256 x 256 x 6256 x 256 x 6
Overall summaryOverall summaryOverall summaryOverall summary
Lapped parametrizationLapped parametrization overlapping patchesoverlapping patches patches share datapatches share data
Lapped parametrizationLapped parametrization overlapping patchesoverlapping patches patches share datapatches share data
Global parametrizationGlobal parametrization atlas of chartsatlas of charts all charts uniqueall charts unique
Global parametrizationGlobal parametrization atlas of chartsatlas of charts all charts uniqueall charts unique