850 likes | 1.17k Views
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.
E N D
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 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 Geometry Compression • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work Short Encodings of Planar Graphs and Maps 4.6 bpv (4.6) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work Topological Surgery 2.2 ~ 4.8 bpv (--) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work Triangle Mesh Compression 0.2 ~ 2.9 bpv (--) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work Edgebreaker 3.4 ~ 4.0 bpv (4.0) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work A Simple and Efficient Encoding for Triangle Meshes 4.2 ~ 5.4 bpv (6.0) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
Previous work Face Fixer 3.9 ~ 4.1 bpv (6.0) • Deering[95] • Keeler Westbrook[95] • Taubin Rossignac[96] • Tauma Gotsman[98] • Rossignac[98] • DeFloriani et al[99] • Isenburg Snoeyink[00]
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
Mesh Collapse Compression i Input: Output: a simple mesh - a sequence of code words - a permutation of vertices
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.
From Mesh to Digon mc-edge new mc-edge mc-vertex cut and open rearrange
Various Digons dividing edge simple simple simple trivial complex
Encode Algorithm encode( 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 mc-edge loop new mc-edge contract contract remove select
mc-divide dividing edge mc-edge mc-edge divide select
Example mc-vertex
Example mc-edge
Example mc-edge digonify
Example removed vertex degree of removed vertex mc-contract
Example removed vertex degree of removed vertex mc-contract
Example removed vertex degree of removed vertex mc-contract
Example removed vertex degree of removed vertex mc-contract
Example divided vertex mc-divide
Example divided vertex mc-divide
Example push on stack
Example degree of removed vertex mc-contract