Presentation is loading. Please wait.

Presentation is loading. Please wait.

Geometric Compression Through Topological Surgery Gabriel Taubin (IBM) Jarek Rossignac (Georgia Tech)

Similar presentations


Presentation on theme: "Geometric Compression Through Topological Surgery Gabriel Taubin (IBM) Jarek Rossignac (Georgia Tech)"— Presentation transcript:

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

49

50

51

52

53

54

55


Download ppt "Geometric Compression Through Topological Surgery Gabriel Taubin (IBM) Jarek Rossignac (Georgia Tech)"

Similar presentations


Ads by Google