compressing the property mapping of polygon meshes

Download Compressing the Property Mapping of Polygon Meshes

Post on 30-Dec-2015

35 views

Category:

Documents

1 download

Embed Size (px)

DESCRIPTION

Compressing the Property Mapping of Polygon Meshes. Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill. 3. 6. 7. 6. 7. 2. 0. 0. 3. 1. 2. 1. 4. 5. 5. Polygon Meshes. 6. 7. 0. 3. 1. 2. 4. 5. Polygon Meshes. connectivity. 5. face 0 0123. 3. - PowerPoint PPT Presentation

TRANSCRIPT

  • Compressing the Property Mapping of Polygon MeshesMartin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill

  • Polygon Meshes

  • Polygon Meshesface00123023541connectivityface13257face21452face36037face46410face56754

  • Connectivity Compressionrecent compression results report improvements of

    ~ 10.98 %~ 0.22 b/v

    on compressionrates of

    ~ 2.32 b/v

  • Properties

  • Propertiesface00123property mapping

    023541012300112233456789101110111312face13245face21672face3100311face48910face510111312

  • Property Mapping (1)Mesh properties can be attached per-vertex# of BonesBone IDsBone Weights

  • Property Mapping (2)Mesh properties can be attached per-faceShader IDs

  • Property Mapping (3)Mesh properties can be attached per-cornerNormalsTexCoordsColors

  • Definitions (1)

  • Definitions (2)

  • Previous WorkGumhold & Strasser: edge bits Real-time compression of triangle mesh connectivity, SIGGRAPH, 1998Taubin et al: discontinuity bits Geometry coding and VRML, Proceedings of the IEEE, 1998Isenburg & Snoeyink: vertex and corner bits Face Fixer: Compressing Polygon Meshes with Properties, SIGGRAPH, 2000

  • Corner and Vertex Bits

    1

  • Corner and Vertex Bits

    010

  • Corner and Vertex Bits

    110

    0

  • Corner and Vertex Bits

    1100

    0

  • Corner and Vertex Bits

    11100

    0

  • Corner and Vertex Bits

    11100

    001

  • Corner and Vertex Bits

    11100

    0010

  • Corner and Vertex Bits

    11100

    00100

  • Corner and Vertex Bits

    11100

    001001

  • Corner and Vertex Bits

    11100

    0010010

  • Corner and Vertex Bits

    11100

    00100100

  • Corner and Vertex Bits

    11100

    0010010001

  • Corner and Vertex Bits

    11100

    00100100011

  • Corner and Vertex Bits

    11100

    001001000111

  • Corner and Vertex Bits

    11100

    0010010001110

  • Corner and Vertex Bits

    11100

    001001000111001

  • Corner and Vertex Bits

    11100

    0010010001110010

  • Corner and Vertex Bits

    11100

    001001000111010

    01

  • Corner and Vertex Bits

    11100

    0010010001110101

    00

  • Corner and Vertex Bits

    11100

    0010010001110101

    001

  • Corner and Vertex Bits

    11100

    0010010001110101

    001

  • Improve the Codingimprove the vertex & corner bit approach:

    Dont write all bits! Rules R1 to R4

    Try to predict the remaining bits! Predictions P1 to P4

  • Rulessome bit configurations cannot occur not all bits are needed, because some can be inferred four simple rules:rule R1 saves vertex bitsrules 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 bitmarks current vertex and current corner

  • Rule R2if a crease vertex has only two corners, then both of them must be crease corners

    ??0vertex bit

    ??0 currently processed bit (s) saves 2 corner bits

  • Rule R3

    0010?00

    0

    ?010 already processed cornerseach crease vertex must have at least two crease corners, this has only one so far saves 1 corner bit

  • Rule R4

    ?0?0

    ?000?00

    0corner bitseach crease vertex must have at least two crease corners, this has none so far saves 2 corner bits

  • Predictionssome bit configurations are more likely than others fewer bits are needed, because many can predicted correctly eight simple predictions:predictions P1 and P2 for vertex bitspredictions P3 to P8 for corner bits

  • Prediction P1 assume crease edge

    10?01

    10100?00previously processed vertexsome edge connects to a previously processed vertex along a crease predict vertex bit: 0

  • Prediction P2

    ?01000101

    ?otherwise predict nothing assume nothing

  • Prediction P3 assume crease edgethe current edge connects to a previously processed vertex along a crease predict corner bit: 1

    ?010

    1

    000

    ?101000001previously processed vertex

  • Prediction P4

    100100010?current edge

    0011?10

    the current edge connects to a previously processed vertex, but not along a crease predict corner bit: 0 assume smooth edge

  • Prediction P5

    ?010100

    11?0crease cornersthere have been already two (or more) crease corners predict corner bit: 0 assume crease vertex

  • Prediction P6there has been one crease, but since then less than smooth corners assume crease vertex

    ?0100smooth corner

    ?10 predict corner bit: 0

  • Prediction P7

    0010?0

    ?000there have been already preceding smooth corners assume crease vertex predict corner bit: 1

  • Prediction P8

    0?0currentlyprocessedbit

    ?00

    otherwise predict nothing assume nothing

  • EntropyFor a sequence of n bits given p0 : probability of bit 0 occurring p1 : probability of bit 1 occurring

    Entropy = - n (p0log2(p0) + p1log2(p1))

  • Entropy with ContextFor a sequence of n bits given p0 | C : probability of bit 0 occurring given C p1 | C : probability of bit 1 occurring given C

    Entropy = - n (p0 |C log2(p0 |C) + p1 |C log2(p1 |C))C

  • Arithmetic Codingapproximates the entropystatic version, if probabilities knownadaptive version, if probabilities not known learn probabilities along the way BUT: # of symbols >> # of contextscombination possible initialize roughly with what is expected

  • Test Models

  • ResultsverticesISmeshprednormalsT+GSbutton991986.04.96.61.2dragknob1613226.05.06.81.3handle1002366.05.36.32.1handle11282566.05.06.61.5handle2116512356.03.11.30.1part11663366.05.06.41.6part43304956.04.03.80.9part51753556.05.06.51.9rotor6009056.04.04.01.0spool64910186.04.13.81.1oilfilter86014846.04.44.71.5galleon237239744.03.22.81.0sandal263640964.13.02.70.9

  • Order k EntropyFor a sequence of n bits given p0 | : 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-bitsnumber of different contexts is 2k

  • Fair ComparisonmeshpredT+aac0button6.05.54.92.72.62.62.61.2dragknob6.05.54.62.52.52.52.51.3handle6.05.75.35.04.64.64.52.1handle16.05.54.82.62.62.62.61.5handle26.00.90.90.80.40.30.30.1part16.05.55.03.53.33.33.31.6part46.03.93.83.72.11.91.90.9part56.05.54.74.14.14.14.11.9rotor6.04.24.03.61.31.11.11.0spool6.04.03.83.82.32.22.11.1oilfilter6.04.74.64.64.03.53.41.5galleon4.03.53.42.52.32.32.21.0sandal4.13.33.32.42.22.22.20.9aac1aac2aac3aac4aac5

  • Could we do better?YES !HOW ? use better traversal orderSTRATEGIE ... follow the creasesdepth first traversal along crease edgescrease vertices are predicted correctlygood start corner for predicting corner bitsBUT requires a separate decoding pass over the entire mesh

  • Stripified Triangle Meshes

  • Strip Corners

  • Resultsbutton19440.2dragknob31860.2handle196240.5handle125250.2handle223261250.1part132860.2part4656340.3part5 34690.2rotor1200410.3spool1294240.2oilfilter17161350.5 trianglesmeshpredstrips code stripification for FREE

  • Thank You !