Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Mesh Compression.

Similar presentations


Presentation on theme: "1 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Mesh Compression."— Presentation transcript:

1 1 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Mesh Compression

2 2 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Why Geometric Compression? o Availability of large geometric datasets in mechanical CAD, virtual reality, medical imaging, scientific visualization, geographic information systems, etc. o Need for mspeeding up transmission of geometric models mreducing the costs of memory and of auxiliary storage required by such models menhancing rendering performances: limitations on on-board memory and on data transfer speed

3 3 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Why Geometric Compression?... Compression methods aimed at two complementary tasks: mcompression of geometry: efficient encoding of numerical information attached to the vertices (position, surface normal, color, texture parameters) mcompression of mesh connectivity: efficient encoding of the mesh topology Compression methods developed for triangle meshes

4 4 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Compression of Geometry (Deering, 1995; Chow, 1997) o Positions, normals and colors quantized to significantly fewer than 32 bits (single-precision IEEE floating point) with little loss in visual quality o Example: quantization for position information: mnormalizing object geometry to a unit cube mpositions quantized to q bits (q<=16) by truncating the less significant m bits of position components, where m=16-q o Optimizations: mpositions are "delta-encoded", i.e., just the difference between a vertex position and that of its predecessor in the bitstream is encoded mquantization assignment can be done by partitioning the triangle mesh into parts of similar detail based on triangle size and curvature

5 5 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Compression of Connectivity o Two kinds of compression techniques: mDirect techniques: Goal: minimize the number of bits needed to encode connectivity m Progressive techniques: Goal: an interrupted bitstream must provide a description of the whole object at a lower level of detail

6 6 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Direct Methods o Triangle strips (and triangle fans) used in graphics API (e.g., OpenGL) o Generalized triangle meshes (Deering 1995; Evans et al., 1996; Chow, 1997; Bar Yehuda and Gotsman 1996) o Topological surgery (Taubin and Rossignac, 1996) o Sequence of triangles in a shelling order (De Floriani, Magillo and Puppo, 1998)

7 7 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Triangle Strips o Defined as a collection of sequences of vertices o Each triangle in a strip has its vertices at three consecutive positions o Encoding: mnumber and lengths of the strips mtwo vertex references per strip mone vertex reference per triangle mone bit per triangle (swap code) o Drawbacks: meach vertex must be encoded twice on average mit is difficult to obtain few long strips from a generic mesh [Evans et al., 1996] Sequence: 1,2,3,4,5,6,7 1 2 3 4 5 6 7..

8 8 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Generalized Triangle Strips (with direct vertex encoding) o 1,2,3,4,5,6,7,8 NO! o 1,2,3,4,5,6,7,5,8 YES Another way of encoding with swap codes: it tells on which open side the new vertex must be attached o 1,2,0,3,0,4,0,5,0,6,0,7,1,8 1 2 3 4 5 6 7 8 6 8 7 5 1 0

9 9 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Generalized Triangle Meshes (Deering, 1995) o Definition of a new syntax for a generalized strip o Use of a mesh buffer: a queue of maximum length 16 of previously used vertices o Encoding: mone bit per vertex to indicate whether the vertex must be inserted into the mesh buffer mtwo bits per triangle to indicate how to continue the current strip (three possible codes) mone bit per triangle to indicate whether a new vertex should be read or a vertex from the mesh buffer must be used  4 bits of address to access a vertex of the mesh buffer o Cost: ~11 bits per vertex for connectivity

10 10 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Generalized Triangle Meshes o Example: mR = Restart mRO = Replace Oldest mRM = Replace Middle mP = Push mnumber = vertex index in mesh m-number = vertex index in buffer (from top) R 6 P RO 1 RO 7 P RO 2 RO 3 RM 4 RM 8 P RO 5 RO 9 P RO 10 RM 11 RO 17 P RM 16 P RM -3 RO 15 P RM -5 RO 6 RM 14 P RO 13 RM -9 RO 12 RM 18 P RM -3 RO 15 P RO -5 RO 6 RM 14 P RO 13 P RM -9 RO 23 RO -10 RO -7 RM 30 RM 29 RM 28 RM -1 RO -2 RM -3 RM 27 RO 26 RM -4 RO 25 RO -5 QUEUE: 6,7,8,9,17,16,...

11 11 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Topological Surgery (Taubin and Rossignac, 1996) o Vertex spanning tree formed by selecting the minimum number of edges in the input mesh which connect all its vertices o The edges of the vertex spanning tree decompose the mesh into a collection of non-overlapping triangle strips (runs) o Such triangle strips form a spanning tree of the triangles of the mesh

12 12 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Topological Surgery o Example:

13 13 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... Topological Surgery o Encoding structure: vertex + triangle spanning trees o Order imposed on the vertices by the spanning tree exploited for computing estimates of the position of a vertex from the position of its 3 or 4 ancestors in the tree o Cost: between 2.5 and 7 bits per vertex to encode connectivity o Drawbacks: mdecompression stage complicated by large memory requirements (all information must be kept in main memory when reconstructing the mesh) mdifficult to implement

14 14 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling (De Floriani, Magillo and Puppo, 1998) o Based on a shelling order: a sequence of all the triangles in the mesh with the property that the boundary of the set of triangles corresponding to any subsequence forms a simple polygon o The compression algorithm works for every triangulated surface homeomorphic to a sphere or a disk o Encoding: four 2-bits codes per edge: SKIP, VERTEX, LEFT, RIGHT

15 15 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling o Start from an arbitrary triangle, whose boundary forms the current polygon o Loop on the edges of the current polygon: for each edge e: mtry to add the triangle t externally adjacent to e mif successful, update the current polygon min any case, send a code mwhen necessary, send a vertex è Each vertex is sent just once è Each edge is examined at most once

16 16 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling mif t brings a new vertex ==> VERTEX + vertex coordinates mif t does not exist or cannot be added ==> SKIP

17 17 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling mif t shares the polygon edge to the left of e ==> LEFT mif t shares the polygon edge to the right of e ==> RIGHT

18 18 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling o Properties of the Shelling Method mEvery vertex is encoded only once mEach edge is examined at most once mCompression and decompression algorithms: Gwork in time linear in the size of the mesh Gno numerical computations Gconceptually simple and easy to implement mAdjacencies between triangles are reconstructed directly from the sequence at no additional cost mCost: Gin theory: at most 6 bits of connectivity per vertex Gin practice: less than 4.5 bits of connectivity per vertex

19 19 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Sequence of Triangles in a Shelling Order... Experimental Results (on TINs) Exp #vert #tri #code bits compress. decompr. bits /vert time(tri/s) time(tri/s) U1 42943 85290 182674 4.2538 1.644(51879) 2.414(35331) U2 28510 56540 123086 4.3173 1.077(52483) 1.603(35271) U3 13057 25818 57316 4.3897 0.479(53899) 0.734(35174) U4 6221 12240 27180 4.3690 0.215(56930) 0.348(35172) A1 15389 30566 64678 4.2029 0.565(54099) 0.855(35749) A2 15233 30235 63958 4.1986 0.561(53894) 0.853(35455) A3 15515 30818 65210 4.2030 0.572(53877) 0.867(35545) A4 15624 31042 65520 4.1935 0.577(53798) 0.880(35275) B1 5297 10570 22392 4.2273 0.182(58076) 0.298(35469) B2 5494 10959 23468 4.2716 0.188(58292) 0.308(35581) B3 5397 10768 23060 4.2727 0.186(57892) 0.304(35421) B4 5449 10874 23136 4.2459 0.187(58149) 0.308(35305) U1--4: uniform resolution (in decreasing order) A1--4: one fourth of the area is at high resolution, the rest is coarse B1--4: one 16th of the area is at high resolution, the rest is coarse

20 20 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Direct Methods... A Compression Method based on Shelling o The method generalizes to surfaces with arbitrary genus o The algorithm automatically cuts the surface into simply connected meshes with a small overhead o No additional control codes required o Vertices belopnging to more than one patch are repeated o Cost: in practice, less than 5.5 bits of connectivity per vertex

21 21 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Sequence of Triangles in a Shelling Order... Experimental Results (on 3D meshes) Mesh #vert #tri # #repeated #code bits patches vert bits /vert eight 766 1536 6 198 3856 5.0339 shape 2562 5120 1 0 10478 4.0897 cow 3078 5804 25 356 13984 4.5432 femur 3897 7798 5 124 18894 4.8483 pieta 3475 6976 15 468 17124 4.9278 skull 10950 22104 80 3242 58150 5.3105 bunny 34834 69451 3 323 146986 4.2196 fandisk 6475 12946 1 0 27298 4.2159 phone 33204 66287 3 12 149058 4.4891

22 22 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Sequence of Triangles in a Shelling Order... Experimental Results (on 3D meshes) whole mesh patch 1 patch 2 …. + other 4 patches with few triangles each

23 23 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Sequence of Triangles in a Shelling Order... Experimental Results (on 3D meshes) whole mesh patch 1 patch 2 …. + other 78 patches with few triangles each

24 24 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Progressive Compression o Efficient encoding of the mesh produced by a simplification algorithm o A sequence of progressive LODs generated by iteratively applying a destructive operator which removes details from a mesh o An inverse constructive operator recovers such details o Encoding: mcoarsest mesh produced in the simplification process + sequence of construction operations

25 25 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... o Each LOD can be seen as a form of lossy compression of the original mesh o There is a trade-off between loading/transmission times and loss of detail o Compression rates are usually lower than those achieved by direct techniques

26 26 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Progressive Compression Methods o Progressive meshes (Hoppe, 1996) mdestructive operator = edge collapse o Sequence of edge swaps (De Floriani, Magillo and Puppo, 1998) mdestructive operator = vertex removal o Sequence of ordered vertex sequences (Snoeyink and van Kreveld, 1997) mdestructive operator = removal of a set of vertices

27 27 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Progressive Meshes (Hoppe, 1996) o Edge collapse: mreplace an edge e with a vertex v1 and the two triangles sharing e with two edges incident at v1 o Vertex split (inverse operation): mexpand a vertex v1 into an edge e=v1v2 and two edges e1 and e2 among those incident at v1 into two triangles v1 v2 e1 e2 e

28 28 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Progressive Meshes (Hoppe, 1996) o Encoding: mnew vertex v2 mreference to v1 mcode specifying the position of e1 and e2 in the set of edges incident at v1 o Cost: mn(log n + log(b(b-1))) bits of connectivity, where b = maximum degree of a vertex at any step mfor instance, for n=2 16 and b=2 3 ==> about 21.8*2 16 bits of connectivity

29 29 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Sequence of Edge Swaps (De Floriani, Magillo, Puppo, 1998) o Based on the iterative removal of a vertex of bounded degree (less than a constant b) selected according to an error-based criterion: mthe vertex which causes the least increase in the approximation error is always chosen  The polygonal hole  left by removing vertex v is retriangulated  The inverse constructive operator inserts vertex v and recovers the previous triangulation of 

30 30 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Sequence of Edge Swaps o The old triangulation T is recovered from the new one T' by first splitting the triangle t of T' containing vertex v and then applying a sequence of edge swaps...Progressive Compression... T T’

31 31 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Sequence of Edge Swaps o Encoding: mfor each removed vertex v: Ga vertex w and an integer number indicating a triangle around w (they define the triangle t of T' containing v)  the packed sequence of edge swap which generates T from T' T’ T Vertex: w Triangle index: 0 Swap sequence: 2 0 2

32 32 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Sequence of Edge Swaps o Cost: mn(log n +log b+ log((b-1)!)-1) bits of connectivity information mfor instance, for n=2 16 and b=2 3 ==> about 31.4*2 16 bits of connectivity o Properties: madaptivity to LOD generation is good since the vertices are removed by taking into account the accuracy of the resulting approximation  the criterion used in the retriangulation is encoded in the sequence of swaps: more general than other progressive methods

33 33 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Snoeyink and van Kreveld's Method o It applies to Triangulated Irregular Networks (TINs) based on Delaunay triangulation o Delaunay triangulation:  a triangulation is called a Delaunay triangulation if the circumcircle of any of its triangles does not contain any vertex in its interior

34 34 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial...Progressive Compression... Snoeyink and van Kreveld's Method o LOD generation process:  at each step, a maximal set of independent vertices (i.e., vertices which are not connected by an edge) of bounded degree is removed o The process of removing a set of vertices terminates in a logarithmic number of steps


Download ppt "1 MESHCOMPRESSIONMESHCOMPRESSION EG99 Tutorial Mesh Compression."

Similar presentations


Ads by Google