compressing the property mapping of polygon meshes martin isenburg jack snoeyink university of north...
Post on 20-Dec-2015
215 Views
Preview:
TRANSCRIPT
Compressing the Property Mapping of Polygon Meshes
Martin Isenburg
Jack Snoeyink
University of North Carolina at Chapel Hill
Polygon Meshes
4
00
11 22
33
5
5
66
77
Polygon Meshes
0 3
1 2
4
7
5
6face0 0 1 2 3
0
2
3
5
4 1
connectivity
face1 3 2 5 7face2 1 4 5 2face3 6 0 3 7face4 6 4 1 0face5 6 7 5 4
Connectivity Compression
recent compressionresults report
improvements of
~ 10.98 %~ 0.22 b/v
on compressionrates of
~ 2.32 b/v
1
1
1 1
2
2 2
23
3
3 3
4
45
5
6
6
7
78
8
9
9
10
10
10
11
11
11
13
13
12
12
0
0
0
0
Properties
Properties
face0 0 1 2 3
property mapping
0
2
3
5
4 10
1
2
30
0
1 1 2
2
3 3
4
5
6 7
8
9
10 11
10 11
1312
face1 3 2 4 5face2 1 6 7 2face3 10 0 3 11face4 8 9 1 0face5 10 11 13 12
Mesh properties can be attached
“per-vertex”
• # of Bones
• Bone IDs
• Bone Weights
Property Mapping (1)
Mesh properties can be attached
“per-face”
• Shader IDs
Property Mapping (2)
Mesh properties can be attached
“per-corner”
• Normals
• TexCoords
• Colors
Property Mapping (3)
Definitions (1)
??
?
?
?
?
?
? ?
Definitions (2)
blend edgecrease edge
crease vertex corner vertexsmooth vertex
smoothcorner
creasecorner
smooth edge
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 Mesheswith Properties, SIGGRAPH, 2000
Corner and Vertex Bits
1
Corner and Vertex Bits
0
1
0
Corner and Vertex Bits
1
10 0
Corner and Vertex Bits
1
1
00 0
Corner and Vertex Bits
11
1
00 0
Corner and Vertex Bits
11
1
00 0
01
Corner and Vertex Bits
11
1
00 0
010
Corner and Vertex Bits
11
1
00 0
0100
Corner and Vertex Bits
11
1
00 0
0100 1
Corner and Vertex Bits
11
1
00 0
0100 10
Corner and Vertex Bits
11
1
00 0
0100 100
Corner and Vertex Bits
11
1
00 0
0100 100
01
Corner and Vertex Bits
11
1
00 0
0100 100
011
Corner and Vertex Bits
11
1
00 0
0100 100
0111
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
01
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
01 0
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
1 00 1
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
1 010
0
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
1 010
0
1
Corner and Vertex Bits
11
1
00 0
0100 100
0111
0
1 010
0
1
Improve the Coding
improve the vertex & corner bit approach:
• Don’t write all bits!
Rules R1 to R4
• Try to predict the remaining bits!
Predictions P1 to P4
Rules
• some bit configurations cannot occur
not all bits are needed, becausesome can be inferred
• four simple rules:– rule R1 saves vertex bits
– rules R2, R3, and R4 save corner bits
Rule R1
??
if a vertex has only one corner, then it must be a smooth vertex
saves 1 vertex bit
marks current vertex and current corner
if a crease vertex has only two corners, then both of them must be crease corners
Rule R2
??0
vertex bit
? ?0
currentlyprocessed bit (s)
saves 2 corner bits
00 1
0? 0
00?
01
0
alreadyprocessed corners
Rule R3
each crease vertex must have at least two crease corners, this has only one so far
saves 1 corner bit
?0
?0 ?
0 00
? 0
00
corner bits
Rule R4
each crease vertex must have at least two crease corners, this has none so far
saves 2 corner bits
Predictions
• some bit configurations are more likely than others
fewer bits are needed, becausemany can predicted correctly
• eight simple predictions:– predictions P1 and P2 for vertex bits
– predictions P3 to P8 for corner bits
assume crease edge
10
?
01
10
1
00
?
00
previouslyprocessed vertex
Prediction P1
some edge connects to a previously processed vertex along a crease
predict vertex bit: 0
?
01 0
00 1
01
?
Prediction P2
otherwise
predict nothing assume nothing
assume crease edge
the current edge connects to a previously processed vertex along a crease
predict corner bit: 1
?
0
10
10
0 0? 1
01
00
0
00
1
previouslyprocessed vertex
Prediction P3
10
01 0
00 1
0
?current edge
00 1
1 ?
1
0
Prediction P4
the current edge connects to a previously processed vertex, but not along a crease
predict corner bit: 0 assume smooth edge
?0 1
01 0
01
1?0
creasecorners
Prediction P5
there have been already two (or more) crease corners
predict corner bit: 0 assume crease vertex
there has been one crease, but since then less than smooth corners
assume crease vertex
?0 1
00
smoothcorner
? 10
Prediction P6
degree-12
predict corner bit: 0
00 1
0?
0?
00
0
Prediction P7
there have been already preceding smooth corners
assume crease vertex
degree-12
predict corner bit: 1
0?
0
currentlyprocessed
bit ?0
0
Prediction P8
otherwise
predict nothing assume nothing
Entropy
For a sequence of n bits
givenp0 : probability of bit 0 occurringp1 : probability of bit 1 occurring
Entropy = - n (p0log2(p0) + p1log2(p1))# of 0s
p0 = n# of 1s
p1 = n
Entropy with Context
For a sequence of n bits
givenp0 | C : probability of bit 0 occurring given Cp1 | C : probability of bit 1 occurring given C
Entropy = - n (p0 |C log2(p0 |C) + p1 |C log2(p1 |C))C
# of 0s given Cp0 | C = # times given C
# of 1s given Cp1 | C = # times given C
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
•
•
Test Models
Results
vertices ISmesh prednormals T+ GS
button 99 198 6.0 4.9 6.6 1.2dragknob 161 322 6.0 5.0 6.8 1.3handle 100 236 6.0 5.3 6.3 2.1handle1 128 256 6.0 5.0 6.6 1.5handle2 1165 1235 6.0 3.1 1.3 0.1part1 166 336 6.0 5.0 6.4 1.6part4 330 495 6.0 4.0 3.8 0.9part5 175 355 6.0 5.0 6.5 1.9rotor 600 905 6.0 4.0 4.0 1.0spool 649 1018 6.0 4.1 3.8 1.1oilfilter 860 1484 6.0 4.4 4.7 1.5galleon 2372 3974 4.0 3.2 2.8 1.0sandal 2636 4096 4.1 3.0 2.7 0.9
Order k Entropy
For a sequence of n bits
givenp0 | : probability of bit 0 occurring after p1 | : probability of bit 1 occurring after
Entropy = - n (p0 | log2(p0 |) + p1 | log2(p1 |))
: string of preceding k-bits
number of different contexts is 2k
Fair Comparison
mesh predT+ aac0
button 6.0 5.5 4.9 2.7 2.6 2.6 2.6 1.2dragknob 6.0 5.5 4.6 2.5 2.5 2.5 2.5 1.3handle 6.0 5.7 5.3 5.0 4.6 4.6 4.5 2.1handle1 6.0 5.5 4.8 2.6 2.6 2.6 2.6 1.5handle2 6.0 0.9 0.9 0.8 0.4 0.3 0.3 0.1part1 6.0 5.5 5.0 3.5 3.3 3.3 3.3 1.6part4 6.0 3.9 3.8 3.7 2.1 1.9 1.9 0.9part5 6.0 5.5 4.7 4.1 4.1 4.1 4.1 1.9rotor 6.0 4.2 4.0 3.6 1.3 1.1 1.1 1.0spool 6.0 4.0 3.8 3.8 2.3 2.2 2.1 1.1oilfilter 6.0 4.7 4.6 4.6 4.0 3.5 3.4 1.5galleon 4.0 3.5 3.4 2.5 2.3 2.3 2.2 1.0sandal 4.1 3.3 3.3 2.4 2.2 2.2 2.2 0.9
aac1 aac2 aac3 aac4 aac5
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
Stripified Triangle Meshes
Strip Corners
button 194 4 0.2dragknob 318 6 0.2handle 196 24 0.5handle1 252 5 0.2handle2 2326 125 0.1part1 328 6 0.2part4 656 34 0.3part5 346 9 0.2rotor 1200 41 0.3spool 1294 24 0.2oilfilter 1716 135 0.5
1.21.32.11.50.11.60.91.91.01.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
trianglesmesh predstrips
code stripification for FREE
Thank You !
top related