Presentation is loading. Please wait.

Presentation is loading. Please wait.

Compressing the Property Mapping of Polygon Meshes Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill.

Similar presentations


Presentation on theme: "Compressing the Property Mapping of Polygon Meshes Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill."— Presentation transcript:

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 !


Download ppt "Compressing the Property Mapping of Polygon Meshes Martin Isenburg Jack Snoeyink University of North Carolina at Chapel Hill."

Similar presentations


Ads by Google