Scalable, High-Quality Mesh Simplification Michael Garland Eric Shaffer University of Illinois at...

Preview:

Citation preview

Scalable, High-QualityMesh Simplification

Michael GarlandMichael Garland

Eric ShafferEric ShafferUniversity of Illinois at Urbana–University of Illinois at Urbana–ChampaignChampaign

Michael GarlandMichael Garland

Eric ShafferEric ShafferUniversity of Illinois at Urbana–University of Illinois at Urbana–ChampaignChampaign

Typical Simplification Problem

1,765,388 1,765,388 facesfaces 420,000 faces420,000 faces 80,000 faces80,000 faces

One Common Solution

Greedy iterative contractionGreedy iterative contraction• edges (or vertex pairs) are most common, faces also edges (or vertex pairs) are most common, faces also

usedused

Starting with the original model, iterativelyStarting with the original model, iteratively• rank all edges with some cost metricrank all edges with some cost metric• contract minimum cost edgecontract minimum cost edge• update edge costsupdate edge costs

Greedy iterative contractionGreedy iterative contraction• edges (or vertex pairs) are most common, faces also edges (or vertex pairs) are most common, faces also

usedused

Starting with the original model, iterativelyStarting with the original model, iteratively• rank all edges with some cost metricrank all edges with some cost metric• contract minimum cost edgecontract minimum cost edge• update edge costsupdate edge costs

Quadric Error Metric

Given a plane, we can define a Given a plane, we can define a quadricquadric Q QGiven a plane, we can define a Given a plane, we can define a quadricquadric Q Q

measuring squared distance of point to planemeasuring squared distance of point to planemeasuring squared distance of point to planemeasuring squared distance of point to plane

( )

a ab ac x x

Q x y z ab b bc y ad bd cd y d

ac bc c z z

v ( )

a ab ac x x

Q x y z ab b bc y ad bd cd y d

ac bc c z z

v

T T( )Q c v v Av b vT T( )Q c v v Av b v

T( , , ) ( , , )Q c d d A b nn nT( , , ) ( , , )Q c d d A b nn n

Quadric Error Metric

Sum of quadrics represents set of planesSum of quadrics represents set of planes

Each voxel has an associated quadricEach voxel has an associated quadric• sum of quadrics for faces with corner in voxelsum of quadrics for faces with corner in voxel

• find find representative pointrepresentative point vv** minimizing minimizing QQ((vv**))

Sum of quadrics represents set of planesSum of quadrics represents set of planes

Each voxel has an associated quadricEach voxel has an associated quadric• sum of quadrics for faces with corner in voxelsum of quadrics for faces with corner in voxel

• find find representative pointrepresentative point vv** minimizing minimizing QQ((vv**))

T( ) ( ) ( )i i i ii i i

d Q Q

n v v vT( ) ( ) ( )i i i ii i i

d Q Q

n v v v

* *( )Q v Av b* *( )Q v Av b

Fails on Large Models

Massive meshes becoming more Massive meshes becoming more commoncommon• DOE ASCI ProgramDOE ASCI Program

– isosurface data, ~500M trianglesisosurface data, ~500M triangles

• Stanford Digital Michelangelo ProjectStanford Digital Michelangelo Project– range scan data, up to 1B trianglesrange scan data, up to 1B triangles

• Traditional simplification methods fail!Traditional simplification methods fail!

Massive meshes becoming more Massive meshes becoming more commoncommon• DOE ASCI ProgramDOE ASCI Program

– isosurface data, ~500M trianglesisosurface data, ~500M triangles

• Stanford Digital Michelangelo ProjectStanford Digital Michelangelo Project– range scan data, up to 1B trianglesrange scan data, up to 1B triangles

• Traditional simplification methods fail!Traditional simplification methods fail!

8.2 million triangles @ 2 mm resolution

Why Traditional Methods Fail

Have Have input sensitiveinput sensitive memory requirements memory requirements• load entire model + auxiliary structures into load entire model + auxiliary structures into

RAMRAM

Iteratively contract edge of “least cost”Iteratively contract edge of “least cost”• large data structures with poor memory localitylarge data structures with poor memory locality

• takes takes manymany iterations to produce a result iterations to produce a result

An example from Lindstrom & Turk method:An example from Lindstrom & Turk method:• 160 bytes/vertex — removes 1 vertex/iteration160 bytes/vertex — removes 1 vertex/iteration

• 400M input triangles = 30GB + 1 week400M input triangles = 30GB + 1 week

Have Have input sensitiveinput sensitive memory requirements memory requirements• load entire model + auxiliary structures into load entire model + auxiliary structures into

RAMRAM

Iteratively contract edge of “least cost”Iteratively contract edge of “least cost”• large data structures with poor memory localitylarge data structures with poor memory locality

• takes takes manymany iterations to produce a result iterations to produce a result

An example from Lindstrom & Turk method:An example from Lindstrom & Turk method:• 160 bytes/vertex — removes 1 vertex/iteration160 bytes/vertex — removes 1 vertex/iteration

• 400M input triangles = 30GB + 1 week400M input triangles = 30GB + 1 week

Out of Core Simplification

Single pass spatial clusteringSingle pass spatial clustering• partition space into cellspartition space into cells

• merge all vertices within each cellmerge all vertices within each cell

Two common partition typesTwo common partition types• uniform grid uniform grid [Lindstrom 00][Lindstrom 00]

• BSP tree BSP tree [Shaffer & Garland 01][Shaffer & Garland 01]

Single pass spatial clusteringSingle pass spatial clustering• partition space into cellspartition space into cells

• merge all vertices within each cellmerge all vertices within each cell

Two common partition typesTwo common partition types• uniform grid uniform grid [Lindstrom 00][Lindstrom 00]

• BSP tree BSP tree [Shaffer & Garland 01][Shaffer & Garland 01]

But Gives Low Quality Output

OriginalOriginal Uniform gridUniform grid(1100 faces)(1100 faces)

BSP treeBSP tree(1000 faces)(1000 faces)

Want Truly General Method

Able to process meshes of arbitrary sizeAble to process meshes of arbitrary size• output-sensitive memory usageoutput-sensitive memory usage

• scan through input a minimal number of scan through input a minimal number of timestimes

• like out-of-core clustering methodslike out-of-core clustering methods

Produce high quality approximationsProduce high quality approximations• even at low output resolutionseven at low output resolutions

• like iterative contraction algorithmslike iterative contraction algorithms

Able to process meshes of arbitrary sizeAble to process meshes of arbitrary size• output-sensitive memory usageoutput-sensitive memory usage

• scan through input a minimal number of scan through input a minimal number of timestimes

• like out-of-core clustering methodslike out-of-core clustering methods

Produce high quality approximationsProduce high quality approximations• even at low output resolutionseven at low output resolutions

• like iterative contraction algorithmslike iterative contraction algorithms

Multiphase Method: Do Both!

Phase I: Uniform clusteringPhase I: Uniform clustering• perform out-of-core clustering (uniform grid)perform out-of-core clustering (uniform grid)

• produce intermediate vertices + facesproduce intermediate vertices + faces

• and 1 quadric per vertexand 1 quadric per vertex

Phase II: Iterative edge contractionPhase II: Iterative edge contraction• beginning with quadrics from Phase Ibeginning with quadrics from Phase I

• iteratively contract edge of least cost as beforeiteratively contract edge of least cost as before

Phases are Phases are coupled togethercoupled together by quadrics by quadrics

Phase I: Uniform clusteringPhase I: Uniform clustering• perform out-of-core clustering (uniform grid)perform out-of-core clustering (uniform grid)

• produce intermediate vertices + facesproduce intermediate vertices + faces

• and 1 quadric per vertexand 1 quadric per vertex

Phase II: Iterative edge contractionPhase II: Iterative edge contraction• beginning with quadrics from Phase Ibeginning with quadrics from Phase I

• iteratively contract edge of least cost as beforeiteratively contract edge of least cost as before

Phases are Phases are coupled togethercoupled together by quadrics by quadrics

Scalable AlgorithmProducing Quality Results

OriginalOriginal8 million 8 million

facesfaces

Uniform gridUniform grid(46 seconds)(46 seconds)

MultiphaseMultiphase(65 seconds)(65 seconds)

Not Just Two PassesOriginalOriginal

MultiphaseMultiphase

Separate passesSeparate passes

QSlimQSlim

Quality Similar to QSlim

OriginalOriginal QSlimQSlim MultiphaseMultiphase

Time/Error Tradeoff

What Are Allowable Phases?

Must accept as input:Must accept as input:• vertices + faces + per vertex quadricsvertices + faces + per vertex quadrics

Must produce as output:Must produce as output:• vertices + faces + per vertex quadricsvertices + faces + per vertex quadrics

• input vertices map to output verticesinput vertices map to output vertices– adjacent input vertices either map to the same adjacent input vertices either map to the same

output vertex or adjacent output verticesoutput vertex or adjacent output vertices

• output quadrics are sum of input quadrics for output quadrics are sum of input quadrics for input vertices that map to given output vertexinput vertices that map to given output vertex

Must accept as input:Must accept as input:• vertices + faces + per vertex quadricsvertices + faces + per vertex quadrics

Must produce as output:Must produce as output:• vertices + faces + per vertex quadricsvertices + faces + per vertex quadrics

• input vertices map to output verticesinput vertices map to output vertices– adjacent input vertices either map to the same adjacent input vertices either map to the same

output vertex or adjacent output verticesoutput vertex or adjacent output vertices

• output quadrics are sum of input quadrics for output quadrics are sum of input quadrics for input vertices that map to given output vertexinput vertices that map to given output vertex

Deconstructing Simplification

View simplification as 2-step clusteringView simplification as 2-step clustering• compute partition of vertex setcompute partition of vertex set

• unify vertices within each subsetunify vertices within each subset– compute representative position for each subsetcompute representative position for each subset

This encompasses 2 common methodsThis encompasses 2 common methods• spatial vertex clustering (e.g., uniform grid)spatial vertex clustering (e.g., uniform grid)

• iterative edge (or vertex pair) contractioniterative edge (or vertex pair) contraction

View simplification as 2-step clusteringView simplification as 2-step clustering• compute partition of vertex setcompute partition of vertex set

• unify vertices within each subsetunify vertices within each subset– compute representative position for each subsetcompute representative position for each subset

This encompasses 2 common methodsThis encompasses 2 common methods• spatial vertex clustering (e.g., uniform grid)spatial vertex clustering (e.g., uniform grid)

• iterative edge (or vertex pair) contractioniterative edge (or vertex pair) contraction

Clustering via Contraction

Iterative contraction builds up vertex setsIterative contraction builds up vertex sets• vertices of original are singleton setsvertices of original are singleton sets

• contraction merges two setscontraction merges two sets

Iterative contraction builds up vertex setsIterative contraction builds up vertex sets• vertices of original are singleton setsvertices of original are singleton sets

• contraction merges two setscontraction merges two sets

Where Does This Lead Us?

Any partitioning algorithm is applicableAny partitioning algorithm is applicable• including the usual onesincluding the usual ones

• others like MeTIS, others like MeTIS, kk-means clustering, …-means clustering, …

• key distinction: spatial vs. graph partitioningkey distinction: spatial vs. graph partitioning

Formal separation of two distinct Formal separation of two distinct policiespolicies• how to select a vertex partitionhow to select a vertex partition

• how to select a representative vertexhow to select a representative vertex

Any partitioning algorithm is applicableAny partitioning algorithm is applicable• including the usual onesincluding the usual ones

• others like MeTIS, others like MeTIS, kk-means clustering, …-means clustering, …

• key distinction: spatial vs. graph partitioningkey distinction: spatial vs. graph partitioning

Formal separation of two distinct Formal separation of two distinct policiespolicies• how to select a vertex partitionhow to select a vertex partition

• how to select a representative vertexhow to select a representative vertex

Recommended