Compressing the Property Mapping of Polygon Meshes Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill
Polygon Meshes
face connectivity face face face face face
Connectivity Compression recent compression results report improvements of ~ % ~ 0.22 b/v on compression rates of ~ 2.32 b/v
Properties
face property mapping face face face face face
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 vertexcorner vertexsmooth vertex smooth corner crease corner 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 Meshes with Properties, SIGGRAPH, 2000
Corner and Vertex Bits 1
0 1 0
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
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
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
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
? ? 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
? 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
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
assume crease edge 1 0 ? ? 0 0 previously processed vertex Prediction P 1 some edge connects to a previously processed vertex along a crease predict vertex bit: 0
? ? Prediction P 2 otherwise predict nothing assume nothing
assume crease edge the current edge connects to a previously processed vertex along a crease predict corner bit: 1 ? ? previously processed vertex Prediction P 3
? current edge ? 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
? ? 0 crease corners Prediction P 5 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 ? smooth corner ? 1 0 Prediction P 6 degree-1 2 predict corner bit: 0
? 0 ? Prediction P 7 there have been already preceding smooth corners assume crease vertex degree-1 2 predict corner bit: 1
0 ? 0 currently processed bit ? 0 0 Prediction P 8 otherwise predict nothing assume nothing
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
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
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 ISmeshprednormalsT+ GS button dragknob handle handle handle part part part rotor spool oilfilter galleon sandal
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
Fair Comparison meshpredT+ aac0 button dragknob handle handle handle part part part rotor spool oilfilter galleon sandal aac1aac2aac3aac4aac5
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 dragknob handle handle handle part part part rotor spool oilfilter without -= = = = = = = = = = =- 1.0 difference Results triangles meshpred strips code stripification for FREE
Thank You !