Presentation is loading. Please wait.

Presentation is loading. Please wait.

Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression.

Similar presentations


Presentation on theme: "Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression."— Presentation transcript:

1 Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression

2 Introduction A novel scheme for encoding triangle mesh topology.

3 Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh

4 Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh –encoding

5 Introduction A novel scheme for encoding triangle mesh topology. –triangle mesh –encoding –topology

6 Triangle Mesh Computer Graphics Surface description Hardware support Used everyday Used everywhere Used by everybody Increasingly complex

7 Encoding Compressed representation Decrease storage and transmission time 011101101011...

8 Topology geometry versus topology x 0 y 0 z 0 0 1 2 x 1 y 1 z 1 2 3 0 x 2 y 2 z 2 2 3 1 x 3 y 3 z 3 2 4 3 x 4 y 4 z 4 5 4 3..... x n y n z n.....

9 Overview previous work simple meshes video example general meshes results summary

10 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ]

11 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Geometry Compression

12 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Short Encodings of Planar Graphs and Maps 4.6 bpv (4.6)

13 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Topological Surgery 2.2 ~ 4.8 bpv (--)

14 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Triangle Mesh Compression 0.2 ~ 2.9 bpv (--)

15 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Edgebreaker 3.4 ~ 4.0 bpv (4.0)

16 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] A Simple and Efficient Encoding for Triangle Meshes 4.2 ~ 5.4 bpv (6.0)

17 Previous work Deering [ 95 ] Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 00 ] Face Fixer 3.9 ~ 4.1 bpv (6.0)

18 Simple Meshes (1) the mesh is a surface composed of triangles (2) the mesh has no boundary (3) the mesh has no holes (4) the mesh has no handles

19 Simple Mesh

20 Mesh Collapse Compression i Input:Output: a simple mesh- a sequence of code words - a permutation of vertices

21 Compression Scheme (1) initialize - declare arbitrary directed mesh edge as current edge

22 Compression Scheme (2) loop until done (and usually): - contract current edge - record the removed vertex - record the degree - select new current edge

23 Compression Scheme (2) loop until done (but occasionally): - divide mesh along current edge - record start symbol - continue on one mesh part - record end symbol - continue on other mesh part

24 Digons A triangulation with exception of the outer face that is bound by only two edges.

25 mc-edge From Mesh to Digon mc-vertex cut and openrearrange new mc-edge

26 Various Digons simple trivialcomplex dividing edge

27 Encode Algorithm encode( Mesh mesh, Codec codec ) { stack.push( digonify( mesh ) ); while ( not stack.empty( ) ) { digon = stack.pop( ); while ( not digon.trivial ( ) ) { if ( digon.complex() ) { subdigon = mc-divide( digon ); stack.push( subdigon ); codec.pushCode( “S” ); } else { degree = mc-contract( digon ); codec.pushCode( degree ); } codec.push( “E” ); }

28 mc-contract contract mc-edge removeselectcontract new mc-edgeloop

29 mc-divide divideselect dividing edgemc-edge

30 Video

31 Example

32

33 mc-vertex

34 Example mc-edge

35 Example digonify mc-edge

36 Example

37 mc-contract degree of removed vertex removed vertex

38 Example

39 mc-contract removed vertex degree of removed vertex

40 Example

41 mc-contract removed vertex degree of removed vertex

42 Example

43 mc-contract removed vertex degree of removed vertex

44 Example

45 mc-divide divided vertex

46 Example mc-divide divided vertex

47 Example push on stack

48 Example

49 mc-contract degree of removed vertex

50 Example

51 trivial digon trivial digon

52 Example trivial digon

53 Example pop from stack

54 Example

55 mc-contract degree of removed vertex

56 Example

57 mc-contract degree of removed vertex removed vertex

58 Example

59 trivial digon trivial digon

60 Example trivial digon

61 Example

62 mc-tree

63 Example mc-tree embedded mc-tree

64 Example mc-tree

65 Example Vertex permutation Code word sequence mc-encodingmc-tree

66 Decode algorithm decode( Mesh mesh, Codec codec ) { while ( not codec.empty( ) ) { code = codec.popCode( ); if ( code == “E” ) { stack.push( digon ); digon = new Digon( ); } else if ( code == “S” ) { subdigon = stack.pop( ); mc-join( digon, subdigon ); } else { mc-expand( digon, code ); } mesh = undigonify ( digon ); }

67 General Meshes (1) the mesh is a surface composed of triangles (2) the mesh can have a boundary (3) the mesh can have holes (4) the mesh can have handles

68 Simple Mesh

69 Boundary

70 Holes

71 Handle

72 Handle & Boundary

73 Handle & Holes

74 Encoding a Boundary mc-vertex mc-edgeadded edge

75 Encoding a Hole holeadded vertex

76 Encoding a Handle digon in stack After mc-contract: M + index + [0..5] After mc-divide: M + index + [0..1] Hiding in a trivial digon: M + index + [0..7]

77 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

78 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

79 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

80 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

81 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

82 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

83 Results vertices/triangles bpvmesh 250/496 1.4 ~ 1.7bishop 1524/3044 2.7 ~ 2.8bunny 1502/3000 3.1 ~ 3.4dragon 2832/5660 2.4 ~ 2.7triceratops 2655/5030 2.5 ~ 2.7beethoven 2562/5120 1.1 ~ 1.2shape

84 Summary We presented a novel scheme for encoding the topology of triangular meshes. The achieved compression rates of 1.1 ~ 3.4 bits/vertex compete with the best results known today. Currently we work on a progressive version of mc-compression.

85 Acknowledgements University of British Columbia at Vancouver, Canada Gene Lee and his RASP tools International Computer Science Institute (ICSI) at Berkeley, USA funding: NSERC, IRIS, UGF


Download ppt "Martin Isenburg Jack Snoeyink University of North Carolina Chapel Hill Mesh Collapse Compression."

Similar presentations


Ads by Google