Download presentation
Presentation is loading. Please wait.
1
Geometric Compression Through Topological Surgery Gabriel Taubin (IBM) Jarek Rossignac (Georgia Tech)
2
Problem Statement Want to send mesh across network –Compress Losslessly Want to save CPU time –Decompress on load Want to get triangle strips –Save on vertex reads + transforms
3
Basic Idea Use properties of planar graphs to compress –Extend to graphs 3d meshes using hacks Lossily drop bits left & right out of vertex position since vertex pos dominates size –Use reasonably good predictor to “guess” location
4
Compressing Topology Start with meshes having Euler Characteristic 2 (Deformable to sphere)
5
Compressing Topology Want to cut it into a planar mesh with lots of long triangle strips
6
Compressing Topology A MST on vertices indicates some interesting cut lines
7
Compressing Topology Notice how the edge boundary graph has 2 edges for each MST cut line
8
Compressing Topology Splaying our faithful Euler-2 characteristic mesh looks as follows
9
Compressing Topology Note that in the flattened shape a binary graph can represent edges Marching edge
10
Compressing Topology If we save these two graphs & 1 bit per marching edge graph as to how it fits to MST, we’ve got topology of Euler-2 meshes
11
Not all cuts are equal But some will earn you a prize from l’Institut Paul Bocuse in Lyons Others…
12
Not all cuts are equal
13
Why cuts are not equal Vertex edge graph stored as: –Integer: runlength –Bit: leaf? –Bit: more runs starting from here? Longer triangle strips –Amortize-out 2 starting vertices –Faster rendering
14
1st cut: spanning tree construction Use edge length and run MST algorithm Disaster with a capital D
15
Actual attempt to make MST Distance from edge midpoint to tree root
16
Modification to improve result 2 pass algorithm where only non- branching edges are allowed on 1st pass
17
Concentric Rings Method Choose a root, order by concentric rings
18
Connect concentric layers with triangle that minimize branches
19
Final Mesh
20
Concentric Rings applied to bone Generating concentric rings makes for much longer triangle runs
21
Encoding Vertex Position Vertex Spanning Tree offers mechanism for vertex position prediction Build a prediction function based on samples from parents in run A B B=f(A)+ B C C=f(A,B)+ c D D=f(A,B,C)+ D E E=f(A,B,C,D)+ E F F=f(A,B,C,D,E)+ F Store per-vertex fixed-point delta from given predictor G G=f(A,B,C,D)+ G H H=f(A,B,C,D,G)+ H
22
Vertex Position Predictor Assume a linear predictor f(v 0 …v K )=b 0 v 0 +…+b k v k Thus estimate b 0 …b k by minimizing the least square error over all vertices of depth n>k for given model
23
Dealing with real meshes Jump Edges –Ugly hack to deal with non-spheres –Read paper for “juicy” details Making sure that edges line up after quantization + prediction
24
Results They don’t all add up Feels like they use the red herring called –ASCII VRML –To boost their results (sometimes literally)
25
Results: (what a) Crock About as lossless as a spam stock investment original 12 bits per coord 10 bits per coord 8 bits per coord
26
Results: Crocodile (a)(b)(c)(d) Bits/tri5.004.232.772.16 Vertex runs1292152880168 Tri runs238816121340526 Bits/v-run54108 Bits/t-run5568
27
Results:Architecture
28
17332 vertices x 12+34404 triangles x 12 = 248,832 80,056 x 19.63 = 1,571,499 80,056 /0.1658 = 482,864
29
Their stated results Parsing a file in compressed binary is 20x faster than in ascii –So is transcribing it from stone tablets Writing uncompressed binary is 30x faster than writing in ascii –Are they using printf or something?! –Unless you’re writing aligned data, this bitwise stuff should kill your perf if you understand what you are doing, and it should be no slower than 2x- 4x (ASCII is about 2-4x bigger)
30
Their stated results Decompression reconstructs 60-90Ktris/s Takes same time to construct scene in VRML as compressing it with their algo –If they would only compare to something not-terrible Writing scene in compressed form is 10x faster than in uncompressed. –If you’re writing to disk or network, sure
31
The cool result Optimality analysis of their algorithm –Number of triangulations of simply connected polygon of n+2 vertices If enumerated and an index into triangulation is used, encoding requires log 2 (ceil(C n )) bits. As n->inf expr-> 2
32
The cool result
33
Optimal fixed-length encoding 2bits per vertex On some examples they do better –They have some evidence of better performance than this fixed length scheme on highly tesselated models Like a bunny subdivided 2 times to have 38,000 polys (~1.5 bits per tri) –Potentially like a modern game model? –Around 2.5 for other models
34
Triangle Mesh Compression Costa Touma, Craig Gotsman Technion - Israel Institute of Technology
35
Insight In polygonal mesh that is orientable –Vertices incident on any mesh vertex may be ordered Separation property –If you cut out a ring of a mesh, it separates it into 2 disjoint meshes: set of vertices inside (may be empty) set outside Connectivity can be encoded by degree
36
Definitions Vertex cycle –Cyclic sequence of vertices along tri edges Active list –Vertex cycle at “wavefront” of encoding. Mesh divided into portion of mesh encoded and portion not encoded Focus –Vertex in active list being processed
37
Step 0: Make object closed
38
Step 1: Pick tri for active list Specify node degrees:“add 6, add 7, add 4”
39
Continue working with focus Add 4, Add 8
40
And now focus is done Add 5, Add 5
41
Active edge added twice: split Add 5, Split 5
42
Algorithm Start with triangle, active list of 3 vertices Add n vertices (clockwise order) adjacent to current focus to active list with “add ” command If active list intersects itself, it is split to two active list with a “split ” command
43
Merge case This deals with genus 1+ objects (torus,etc) If first free edge of active vertex is in active list of vertex, 2 possibilities –It is on current active list Split –It is on active list already split Merge
44
Better prediction of vertex position Have previous triangle Compute plane equation Assume next triangle is coplanar Encode error term –Simple, elegant, low error Use codebook for most common errors
45
Results For regular meshes –Get around.2 bits per vertex for topology With RLE –Increasing quantization from 8-10 bits, size goes up by 30-40% (!?)
46
Results Model vertsV RML gz IBM conn IBM cord Our conn Our cord blob8036117K3447 10352 17097951 tri283244K152336737642937 eight76611K363114653683 shape 256235K7134578482990 beet265536K158549827813576 eng216424K104147033303425 dum 11738 114K4929 20351 1210 11162 cow306640K176648787793376
47
Decompression Leaf triangle reconstructed from root id
48
Decompression
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.