Mesh Collapse Compression

85
Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression

description

Mesh Collapse Compression. Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill. Introduction. A novel scheme for encoding triangle mesh topology. Introduction. A novel scheme for encoding triangle mesh topology. triangle mesh. Introduction. - PowerPoint PPT Presentation

Transcript of Mesh Collapse Compression

Martin IsenburgJack Snoeyink

University of North CarolinaChapel Hill

Mesh Collapse Compression

Introduction

A novel scheme for encoding

triangle mesh topology.

Introduction

A novel scheme for encoding

triangle mesh topology.

– triangle mesh

Introduction

A novel scheme for encoding

triangle mesh topology.

– triangle mesh

– encoding

Introduction

A novel scheme for encoding

triangle mesh topology.

– triangle mesh

– encoding

– topology

Triangle Mesh

• Computer Graphics• Surface description• Hardware support• Used everyday• Used everywhere• Used by everybody• Increasingly complex

Encoding

• Compressed representation• Decrease storage and transmission

time

011101101011...

Topology

geometry versus topology x0 y0 z0 0 1 2

x1 y1 z1 2 3 0

x2 y2 z2 2 3 1

x3 y3 z3 2 4 3

x4 y4 z4 5 4 3 . . . . .

xn yn zn

. . . . .

. . . . .

. . . . .

Overview

• previous work • simple meshes• video• example• general meshes• results• summary

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Geometry Compression

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Short Encodings of Planar Graphs and Maps

4.6 bpv (4.6)

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Topological Surgery

2.2 ~ 4.8 bpv (--)

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Triangle Mesh Compression

0.2 ~ 2.9 bpv (--)

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Edgebreaker

3.4 ~ 4.0 bpv (4.0)

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

A Simple and EfficientEncoding for Triangle

Meshes4.2 ~ 5.4 bpv (6.0)

Previous work

• Deering [95]

• Keeler Westbrook [95]

• Taubin Rossignac [96]

• Tauma Gotsman [98]

• Rossignac [98]

• DeFloriani et al [99]

• Isenburg Snoeyink [00]

Face Fixer

3.9 ~ 4.1 bpv (6.0)

Simple Meshes

(1) the mesh is a surface composed of triangles

(2) the mesh has no boundary

(3) the mesh has no holes

(4) the mesh has no handles

Simple Mesh

Mesh Collapse Compression i

Input: Output:a simple mesh - a sequence of

codewords

- a permutation ofvertices

Compression Scheme

(1) initialize

- declare arbitrary directed mesh

edge as current edge

Compression Scheme

(2) loop until done (and usually):

- contract current edge- record the removed vertex- record the degree- select new current edge

Compression Scheme

(2) loop until done (but occasionally):

- divide mesh along current edge- record start symbol- continue on one mesh part- record end symbol- continue on other mesh part

Digons

A triangulation withexception of theouter face that isbound by only twoedges.

mc-edge

From Mesh to Digon

mc-vertex cut and open rearrange

new mc-edge

Various Digons

simple simple simple trivial complex

dividing edge

Encode Algorithmencode( Mesh mesh, Codec codec ) { stack.push( digonify( mesh ) ); while ( not stack.empty( ) ) { digon = stack.pop( ); while ( not digon.trivial ( ) ) { if ( digon.complex() ) { subdigon = mc-divide( digon ); stack.push( subdigon ); codec.pushCode( “S” ); } else { degree = mc-contract( digon ); codec.pushCode( degree ); } } codec.push( “E” ); }}

mc-contract

contract

mc-edge

remove selectcontract

new mc-edgeloop

mc-divide

divide select

dividing edge mc-edge mc-edge

Video

Example

Example

Example

mc-vertex

Example

mc-edge

Example

digonify

mc-edge

Example

Example

mc-contract

degree ofremovedvertex

removed vertex

Example

Example

mc-contract

removed vertex

degree ofremovedvertex

Example

Example

mc-contract

removed vertex

degree ofremovedvertex

Example

Example

mc-contract

removed vertex

degree ofremovedvertex

Example

Example

mc-divide

divided vertex

Example

mc-divide

divided vertex

Example

push on stack

Example

Example

mc-contractdegree ofremovedvertex

Example

Example

trivial digon

trivialdigon

Example

trivialdigon

Example

pop from stack

Example

Example

mc-contract

degree ofremovedvertex

Example

Example

mc-contractdegree ofremovedvertex

removedvertex

Example

Example

trivial digon

trivialdigon

Example

trivialdigon

Example

Example

mc-tree

Example

mc-tree

embeddedmc-tree

Example

mc-tree

Example

Vertex permutation

Code word sequence

mc-encoding mc-tree

Decode algorithm

decode( Mesh mesh, Codec codec ) { while ( not codec.empty( ) ) { code = codec.popCode( ); if ( code == “E” ) { stack.push( digon ); digon = new Digon( ); } else if ( code == “S” ) { subdigon = stack.pop( ); mc-join( digon, subdigon ); } else { mc-expand( digon, code ); } } mesh = undigonify ( digon );}

General Meshes

(1) the mesh is a surface composed of triangles

(2) the mesh can have a boundary

(3) the mesh can have holes

(4) the mesh can have handles

Simple Mesh

Boundary

Holes

Handle

Handle & Boundary

Handle & Holes

Encoding a Boundary

mc-vertex mc-edge added edge

Encoding a Hole

hole added vertex

Encoding a Handle

digon in stack

After mc-contract:

M + index + [0..5]

After mc-divide:

M + index + [0..1]

Hiding in a trivial digon:

M + index + [0..7]

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Results

vertices/triangles bpvmesh

250/496 1.4 ~ 1.7bishop

1524/3044 2.7 ~ 2.8bunny

1502/3000 3.1 ~ 3.4dragon

2832/5660 2.4 ~ 2.7triceratops

2655/5030 2.5 ~ 2.7beethoven

2562/5120 1.1 ~ 1.2shape

Summary

We presented a novel scheme for encoding the topology of triangular meshes.

The achieved compression rates of 1.1 ~ 3.4 bits/vertex compete withthe best results known today.

Currently we work on a progressive version of mc-compression.

Acknowledgements

• University of British Columbia at Vancouver, Canada

• Gene Lee and his RASP tools• International Computer Science

Institute (ICSI) at Berkeley, USA

• funding: NSERC, IRIS, UGF