Upload
destiny-bruce
View
220
Download
0
Tags:
Embed Size (px)
Citation preview
Texture-MappingTexture-MappingProgressive MeshesProgressive Meshes
Texture-MappingTexture-MappingProgressive MeshesProgressive Meshes
Pedro V. SanderPedro V. SanderSteven J. GortlerSteven J. GortlerPedro V. SanderPedro V. SanderSteven J. GortlerSteven J. Gortler
John SnyderJohn SnyderHugues HoppeHugues Hoppe
John SnyderJohn SnyderHugues HoppeHugues Hoppe
SIGGRAPH 2001SIGGRAPH 2001
Harvard UniversityHarvard UniversityHarvard UniversityHarvard University Microsoft ResearchMicrosoft ResearchMicrosoft ResearchMicrosoft Research
Texture-MappingTexture-MappingProgressive MeshesProgressive Meshes
Texture-MappingTexture-MappingProgressive MeshesProgressive Meshes
Pedro V. SanderPedro V. SanderSteven J. GortlerSteven J. GortlerPedro V. SanderPedro V. SanderSteven J. GortlerSteven J. Gortler
John SnyderJohn SnyderHugues HoppeHugues Hoppe
John SnyderJohn SnyderHugues HoppeHugues Hoppe
SIGGRAPH 2001SIGGRAPH 2001
Harvard UniversityHarvard UniversityHarvard UniversityHarvard University Microsoft ResearchMicrosoft ResearchMicrosoft ResearchMicrosoft Research
progressive meshprogressive meshprogressive meshprogressive mesh
69,00069,000facesfaces
15,00015,000facesfaces
600600facesfaces
progressive meshprogressive meshprogressive meshprogressive mesh600600
facesfaces
simplified mesh + normal mapsimplified mesh + normal mapConveys detail of original geometryConveys detail of original geometry
simplified mesh + normal mapsimplified mesh + normal mapConveys detail of original geometryConveys detail of original geometry
69,00069,000facesfaces
15,00015,000facesfaces
600600facesfaces
““Texture mapping”Texture mapping”““Texture mapping”Texture mapping”
Authoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surface
““Texture mapping”Texture mapping”““Texture mapping”Texture mapping”
Authoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surfaceAuthoring: map a texture image onto a surface
Our problem: sample an existing surface signalOur problem: sample an existing surface signalOur problem: sample an existing surface signalOur problem: sample an existing surface signal
Our problemOur problemOur problemOur problem
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
demodemodemodemo
Our problemOur problemOur problemOur problem
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
Simple approach: chart-per-faceSimple approach: chart-per-faceSimple approach: chart-per-faceSimple approach: chart-per-face
Define texture for Define texture for single-LODsingle-LOD mesh. mesh.
Cannot use texture for any simpler mesh!Cannot use texture for any simpler mesh!
Define texture for Define texture for single-LODsingle-LOD mesh. mesh.
Cannot use texture for any simpler mesh!Cannot use texture for any simpler mesh!
500 faces500 faces atlas of 500 trianglesatlas of 500 triangles
[Soucy 96, Cignoni 98, Sander 00][Soucy 96, Cignoni 98, Sander 00]
Our approach: multi-face chartsOur approach: multi-face chartsOur approach: multi-face chartsOur approach: multi-face charts
Partition mesh into charts.Partition mesh into charts.
Simplify respecting chart topology. Simplify respecting chart topology. [Cohen 98][Cohen 98]
Same texture still applicable.Same texture still applicable.
Partition mesh into charts.Partition mesh into charts.
Simplify respecting chart topology. Simplify respecting chart topology. [Cohen 98][Cohen 98]
Same texture still applicable.Same texture still applicable.
Chart constraint 1:Chart constraint 1:Faces cannot span chart boundariesFaces cannot span chart boundaries
Chart constraint 1:Chart constraint 1:Faces cannot span chart boundariesFaces cannot span chart boundaries
Chart constraint 2:Chart constraint 2:Texture boundaries must be straightTexture boundaries must be straight
Chart constraint 2:Chart constraint 2:Texture boundaries must be straightTexture boundaries must be straight
coarse meshcoarse meshcoarse meshcoarse mesh
fine meshfine meshfine meshfine mesh
texture maptexture maptexture maptexture map
Our problemOur problemOur problemOur problem
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
Sample the surface signal into a texture:Sample the surface signal into a texture: (e.g. normal, displacement, BRDF, …)(e.g. normal, displacement, BRDF, …)
Goals:Goals:
single texture for entire PM sequencesingle texture for entire PM sequence
quality metricsquality metrics minimize appearance changes over PMminimize appearance changes over PM efficiently distribute the texture samplesefficiently distribute the texture samples
Parametrization quality metricsParametrization quality metricsParametrization quality metricsParametrization quality metrics(1) Minimize (1) Minimize texture deviationtexture deviation(1) Minimize (1) Minimize texture deviationtexture deviation
(stricter than geometric error)(stricter than geometric error) [Cohen et al 98][Cohen et al 98]
demodemodemodemo
Parametrization quality metricsParametrization quality metricsParametrization quality metricsParametrization quality metrics(2) Minimize (2) Minimize texture stretchtexture stretch(2) Minimize (2) Minimize texture stretchtexture stretch
high stretch high stretch low stretch low stretch 2D texture2D texture
undersamplingundersampling
Parametrization quality metricsParametrization quality metricsParametrization quality metricsParametrization quality metrics(2) Minimize (2) Minimize texture stretchtexture stretch(2) Minimize (2) Minimize texture stretchtexture stretch
high stretch high stretch low stretch low stretch
blurringblurring
Contributions: Texture mapping PM’sContributions: Texture mapping PM’sContributions: Texture mapping PM’sContributions: Texture mapping PM’s
Chartification algorithmChartification algorithm (considers simplification quality)(considers simplification quality)
Texture stretch metricTexture stretch metric (penalizes undersampling)(penalizes undersampling)
Parametrization algorithm Parametrization algorithm (minimizes stretch)(minimizes stretch)
PM optimizationPM optimization
Chartification algorithmChartification algorithm (considers simplification quality)(considers simplification quality)
Texture stretch metricTexture stretch metric (penalizes undersampling)(penalizes undersampling)
Parametrization algorithm Parametrization algorithm (minimizes stretch)(minimizes stretch)
PM optimizationPM optimization
470 faces470 faces 700 faces700 faces 1,200 faces1,200 faces 10,000 faces10,000 faces
ApproachApproachApproachApproach
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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) parametrize charts(2) parametrize charts(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
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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
Partition: chart mergingPartition: chart mergingPartition: chart mergingPartition: chart merging
Assign each face to its own region.Assign each face to its own region. Merge regions in greedy fashion based on Merge regions in greedy fashion based on
planarityplanarity distancedistance22 to best-fitting plane to best-fitting plane compactnesscompactness perimeter lengthperimeter length22
Preserves mesh connectivity.Preserves mesh connectivity.
[Maillot 93], [Eck 95], [Lee 98], [Garland 01][Maillot 93], [Eck 95], [Lee 98], [Garland 01]
Assign each face to its own region.Assign each face to its own region. Merge regions in greedy fashion based on Merge regions in greedy fashion based on
planarityplanarity distancedistance22 to best-fitting plane to best-fitting plane compactnesscompactness perimeter lengthperimeter length22
Preserves mesh connectivity.Preserves mesh connectivity.
[Maillot 93], [Eck 95], [Lee 98], [Garland 01][Maillot 93], [Eck 95], [Lee 98], [Garland 01]
Partition: boundary straighteningPartition: boundary straighteningPartition: boundary straighteningPartition: boundary straightening
Improves parametrizationImproves parametrization (boundary will be straight in texture domain)(boundary will be straight in texture domain)
Improves parametrizationImproves parametrization (boundary will be straight in texture domain)(boundary will be straight in texture domain)
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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
2D texture domain2D texture domain surface in 3Dsurface in 3D
linear maplinear map
singular values: singular values: γγ , , ΓΓ
ParametrizationParametrizationParametrizationParametrization
length-preserving (length-preserving (isometricisometric)) γγ = = ΓΓ = 1= 1 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
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: γγ , , ΓΓ
LL∞∞(T) = (T) = ΓΓ
LL22(T) = √((T) = √(γγ22 + + ΓΓ22)/2)/2
LL∞∞(M) = max(M) = maxTT L L∞∞(T)(T)
LL22(M) = √ (M) = √ TT (L (L22(T))(T))22 A(T) A(T)
Stretch-minimization algorithmStretch-minimization algorithmStretch-minimization algorithmStretch-minimization algorithm
Start with uniform parametrization.Start with uniform parametrization. Perform several optimization iterations:Perform several optimization iterations:
for each vertex, try random line searches.for each vertex, try random line searches.
Start with uniform parametrization.Start with uniform parametrization. Perform several optimization iterations:Perform several optimization iterations:
for each vertex, try random line searches.for each vertex, try random line searches.
demodemodemodemo
Parametrization exampleParametrization exampleParametrization exampleParametrization example
Conformal Conformal parametrizationparametrization
((≈ MIPS, Floater)≈ MIPS, Floater)
L2 = 2.28 L = 10.07
LL22 stretch stretch minimizationminimization
L2 = 1.22 L = 2.13
ComparisonComparisonComparisonComparison
ComparisonComparisonComparisonComparison
Uniform Uniform parametrizationparametrization
L2 = 2.60 L = 12.52
LL22 stretch stretch minimizationminimization
L2 = 1.22 L = 2.13
Area-preserving Area-preserving parametrizationparametrization
L2 = 1.57 L = 4.19
LL22 stretch stretch minimizationminimization
L2 = 1.22 L = 2.13
ComparisonComparisonComparisonComparison
Example of stretch minimizationExample of stretch minimizationExample of stretch minimizationExample of stretch minimization
ignoring stretchignoring stretch minimizing stretchminimizing stretch
demodemodemodemo
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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
Half-edge collapsesHalf-edge collapses ordered by deviation ordered by deviation
Constrained simplificationConstrained simplification
Half-edge collapsesHalf-edge collapses ordered by deviation ordered by deviation
Constrained simplificationConstrained simplification
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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
Parametrization optimizationParametrization optimizationParametrization optimizationParametrization optimization
Min Min ∑∑M in PMM in PM stretch(M) + deviation(M) stretch(M) + deviation(M)
Improves deviation over entire range.Improves deviation over entire range.
Improves stretch at coarser LOD’sImproves stretch at coarser LOD’s(stretch was ignored during simplification).(stretch was ignored during simplification).
Min Min ∑∑M in PMM in PM stretch(M) + deviation(M) stretch(M) + deviation(M)
Improves deviation over entire range.Improves deviation over entire range.
Improves stretch at coarser LOD’sImproves stretch at coarser LOD’s(stretch was ignored during simplification).(stretch was ignored during simplification).
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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
Pack chart polygonsPack chart polygonsPack chart polygonsPack chart polygons
NP-Hard problem.NP-Hard problem. We designed a heuristic.We designed a heuristic.
NP-Hard problem.NP-Hard problem. We designed a heuristic.We designed a heuristic.
Packing HeuristicPacking HeuristicPacking HeuristicPacking Heuristic
Calculate the minimum bounding rectangle.Calculate the minimum bounding rectangle.
Rotate chart to make rectangle vertical.Rotate chart to make rectangle vertical.
Calculate the minimum bounding rectangle.Calculate the minimum bounding rectangle.
Rotate chart to make rectangle vertical.Rotate chart to make rectangle vertical.
Chart placementChart placementChart placementChart placement Sort chart rectangles by height.Sort chart rectangles by height. Sequentially place left-to-right and right-to-left. Sequentially place left-to-right and right-to-left.
Sort chart rectangles by height.Sort chart rectangles by height. Sequentially place left-to-right and right-to-left. Sequentially place left-to-right and right-to-left.
~[Igarashi 01]~[Igarashi 01]~[Igarashi 01]~[Igarashi 01]
Approach: DetailsApproach: DetailsApproach: DetailsApproach: Details
(1) partition original mesh into charts(1) partition original mesh into charts(2) parametrize charts(2) parametrize charts(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!
ResultsResults(Measurements)(Measurements)
ResultsResults(Measurements)(Measurements)
Scale charts to meet low-stretch requirement.Scale charts to meet low-stretch requirement.
Stretch efficiencyStretch efficiency3D surface area / 2D chart area3D surface area / 2D chart area
Packing efficiencyPacking efficiency2D chart area / texture domain area2D chart area / texture domain area
Texture efficiencyTexture efficiencystretch efficiency * packing efficiencystretch efficiency * packing efficiency3D area / texture domain area3D area / texture domain area
Scale charts to meet low-stretch requirement.Scale charts to meet low-stretch requirement.
Stretch efficiencyStretch efficiency3D surface area / 2D chart area3D surface area / 2D chart area
Packing efficiencyPacking efficiency2D chart area / texture domain area2D chart area / texture domain area
Texture efficiencyTexture efficiencystretch efficiency * packing efficiencystretch efficiency * packing efficiency3D area / texture domain area3D area / texture domain area
////
////
////
ResultsResultsResultsResults
Efficiencies on fine meshes:Efficiencies on fine meshes:Efficiencies on fine meshes:Efficiencies on fine meshes:
Models bunny parasaur horse hand
# faces in Mn 69,630 43,866 96,956 60,856
# charts 75 75 120 60
uniform param. stretch efficiency
0.63 0.003 0.61 0.11
our stretch efficiency 0.84 0.63 0.80 0.68
packing efficiency 0.67 0.63 0.70 0.62
texture efficiency 0.56 0.40 0.56 0.42
Results across PMResults across PMResults across PMResults across PM
0
10
20
30
40
50
60
70
80
100 1000 10000 100000
number of facesst
retc
h er
ror
01
23
45
67
89
100 1000 10000 100000
number of faces
devi
atio
n er
ror
uniform uniform
min-stretchmin-stretch
min-stretch+optimmin-stretch+optim
demodemodemodemo
stretchstretchstretchstretchdeviationdeviationdeviationdeviation
DemosDemosDemosDemos
demodemodemodemo demodemodemodemo
SummarySummarySummarySummary
Automatic PM parametrization scheme.Automatic PM parametrization scheme.
Optimizes both deviation and stretch.Optimizes both deviation and stretch.
Novel stretch metric prevents undersampling Novel stretch metric prevents undersampling at all locations and in all directions.at all locations and in all directions.
Robust parametrization algorithm.Robust parametrization algorithm.
Automatic PM parametrization scheme.Automatic PM parametrization scheme.
Optimizes both deviation and stretch.Optimizes both deviation and stretch.
Novel stretch metric prevents undersampling Novel stretch metric prevents undersampling at all locations and in all directions.at all locations and in all directions.
Robust parametrization algorithm.Robust parametrization algorithm.
Future workFuture workFuture workFuture work
Use hierarchical parametrization.Use hierarchical parametrization.
Constrain anisotropy.Constrain anisotropy.
Consider content of texture signal.Consider content of texture signal.
Address mip-mapping problems.Address mip-mapping problems.
Use hierarchical parametrization.Use hierarchical parametrization.
Constrain anisotropy.Constrain anisotropy.
Consider content of texture signal.Consider content of texture signal.
Address mip-mapping problems.Address mip-mapping problems.