Download presentation
Presentation is loading. Please wait.
1
Compressing the Property Mapping of Polygon Meshes Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill
2
Polygon Meshes 4 0 0 1 1 2 2 3 3 5 5 6 6 7 7
3
03 12 4 7 5 6 face 0 0123 0 2 3 5 41 connectivity face 1 3257 face 2 1452 face 3 6037 face 4 6410 face 5 6754
4
Connectivity Compression recent compression results report improvements of ~ 10.98 % ~ 0.22 b/v on compression rates of ~ 2.32 b/v
5
1 1 1 1 2 2 2 2 3 3 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11 13 12 0 0 0 0 Properties
6
face 0 0123 property mapping 0 2 3 5 41 0 1 2 3 0 0 1 1 2 2 3 3 4 5 6 7 8 9 1011 10 11 13 12 face 1 3245 face 2 1672 face 3 100311 face 4 8910 face 5 10111312
7
Mesh properties can be attached “per-vertex” # of Bones Bone IDs Bone Weights Property Mapping (1)
8
Mesh properties can be attached “per-face” Shader IDs Property Mapping (2)
9
Mesh properties can be attached “per-corner” Normals TexCoords Colors Property Mapping (3)
10
Definitions (1) ? ? ? ? ? ? ? ? ?
11
Definitions (2) blend edgecrease edge crease vertexcorner vertexsmooth vertex smooth corner crease corner smooth edge
12
Previous Work Gumhold & Strasser: “edge bits” Real-time compression of triangle mesh connectivity, SIGGRAPH, 1998 Taubin et al: “discontinuity bits” Geometry coding and VRML, Proceedings of the IEEE, 1998 Isenburg & Snoeyink: “vertex and corner bits” Face Fixer: Compressing Polygon Meshes with Properties, SIGGRAPH, 2000
13
Corner and Vertex Bits 1
14
0 1 0
15
1 1 0 0
16
1 1 0 0 0
17
1 1 1 0 0 0
18
1 1 1 0 0 0 0 1
19
1 1 1 0 0 0 0 1 0
20
1 1 1 0 0 0 0 1 0 0
21
1 1 1 0 0 0 0 1 0 0 1
22
1 1 1 0 0 0 0 1 0 0 1 0
23
1 1 1 0 0 0 0 1 0 0 1 0 0
24
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1
25
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1
26
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1
27
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0
28
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1
29
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0
30
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 1
31
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0
32
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1
33
1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1
34
Improve the Coding improve the vertex & corner bit approach: Don’t write all bits! Rules R 1 to R 4 Try to predict the remaining bits! Predictions P 1 to P 4
35
Rules some bit configurations cannot occur not all bits are needed, because some can be inferred four simple rules: –rule R 1 saves vertex bits –rules R 2, R 3, and R 4 save corner bits
36
Rule R 1 ? ? if a vertex has only one corner, then it must be a smooth vertex saves 1 vertex bit marks current vertex and current corner
37
if a crease vertex has only two corners, then both of them must be crease corners Rule R 2 ? ? 0 vertex bit ? ? 0 currently processed bit (s) saves 2 corner bits
38
0 0 1 0 ? 0 0 0 ? 0 1 0 already processed corners Rule R 3 each crease vertex must have at least two crease corners, this has only one so far saves 1 corner bit
39
? 0 ? 0 ? 0 0 0 ? 0 0 0 corner bits Rule R 4 each crease vertex must have at least two crease corners, this has none so far saves 2 corner bits
40
Predictions some bit configurations are more likely than others fewer bits are needed, because many can predicted correctly eight simple predictions: –predictions P 1 and P 2 for vertex bits –predictions P 3 to P 8 for corner bits
41
assume crease edge 1 0 ? 0 1 1 0 1 0 0 ? 0 0 previously processed vertex Prediction P 1 some edge connects to a previously processed vertex along a crease predict vertex bit: 0
42
? 0 1 0 0 0 1 0 1 ? Prediction P 2 otherwise predict nothing assume nothing
43
assume crease edge the current edge connects to a previously processed vertex along a crease predict corner bit: 1 ? 0 1 0 1 0 0 0 ? 1 0 1 0 0 0 0 0 1 previously processed vertex Prediction P 3
44
1 0 0 1 0 0 0 1 0 ? current edge 0 0 1 1 ? 1 0 Prediction P 4 the current edge connects to a previously processed vertex, but not along a crease predict corner bit: 0 assume smooth edge
45
? 0 1 0 1 0 0 1 1 ? 0 crease corners Prediction P 5 there have been already two (or more) crease corners predict corner bit: 0 assume crease vertex
46
there has been one crease, but since then less than smooth corners assume crease vertex ? 0 1 0 0 smooth corner ? 1 0 Prediction P 6 degree-1 2 predict corner bit: 0
47
0 0 1 0 ? 0 ? 0 0 0 Prediction P 7 there have been already preceding smooth corners assume crease vertex degree-1 2 predict corner bit: 1
48
0 ? 0 currently processed bit ? 0 0 Prediction P 8 otherwise predict nothing assume nothing
49
Entropy For a sequence of n bits given p 0 : probability of bit 0 occurring p 1 : probability of bit 1 occurring Entropy = - n ( p 0 log 2 ( p 0 ) + p 1 log 2 ( p 1 )) # of 0s p 0 = n # of 1s p 1 = n
50
Entropy with Context For a sequence of n bits given p 0 | C : probability of bit 0 occurring given C p 1 | C : probability of bit 1 occurring given C Entropy = - n ( p 0 | C log 2 ( p 0 | C ) + p 1 | C log 2 ( p 1 | C )) C # of 0s given C p 0 | C = # times given C # of 1s given C p 1 | C = # times given C
51
Arithmetic Coding approximates the entropy static version, if probabilities known adaptive version, if probabilities not known learn probabilities along the way BUT: # of symbols >> # of contexts combination possible initialize roughly with what is expected
52
Test Models
53
Results vertices ISmeshprednormalsT+ GS button991986.04.96.61.2 dragknob1613226.05.06.81.3 handle1002366.05.36.32.1 handle11282566.05.06.61.5 handle2116512356.03.11.30.1 part11663366.05.06.41.6 part43304956.04.03.80.9 part51753556.05.06.51.9 rotor6009056.04.04.01.0 spool64910186.04.13.81.1 oilfilter86014846.04.44.71.5 galleon237239744.03.22.81.0 sandal263640964.13.02.70.9
54
Order k Entropy For a sequence of n bits given p 0 | : probability of bit 0 occurring after p 1 | : probability of bit 1 occurring after Entropy = - n ( p 0 | log 2 ( p 0 | ) + p 1 | log 2 ( p 1 | )) : string of preceding k-bits number of different contexts is 2 k
55
Fair Comparison meshpredT+ aac0 button6.05.54.92.72.62.62.61.2 dragknob6.05.54.62.52.52.52.51.3 handle6.05.75.35.04.64.64.52.1 handle16.05.54.82.62.62.62.61.5 handle26.00.90.90.80.40.30.30.1 part16.05.55.03.53.33.33.31.6 part46.03.93.83.72.11.91.90.9 part56.05.54.74.14.14.14.11.9 rotor6.04.24.03.61.31.11.11.0 spool6.04.03.83.82.32.22.11.1 oilfilter6.04.74.64.64.03.53.41.5 galleon4.03.53.42.52.32.32.21.0 sandal4.13.33.32.42.22.22.20.9 aac1aac2aac3aac4aac5
56
Could we do better? YES ! HOW ? … use “better” traversal order STRATEGIE... follow the creases –depth first traversal along crease edges –crease vertices are predicted correctly –good start corner for predicting corner bits BUT … requires a separate decoding pass over the entire mesh
57
Stripified Triangle Meshes
58
Strip Corners
59
button19440.2 dragknob31860.2 handle196240.5 handle125250.2 handle223261250.1 part132860.2 part4656340.3 part5 34690.2 rotor1200410.3 spool1294240.2 oilfilter17161350.5 1.2 1.3 2.1 1.5 0.1 1.6 0.9 1.9 1.0 1.1 1.5 without -=- 1.0 -=- 1.1 -=- 1.6 -=- 1.3 -=- 0.03 -=- 1.4 -=- 0.6 -=- 1.7 -=- 0.7 -=- 0.9 -=- 1.0 difference Results triangles meshpred strips code stripification for FREE
60
Thank You !
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.