Presentation is loading. Please wait.

Presentation is loading. Please wait.

Similar presentations


Presentation on theme: ""— Presentation transcript:

1 http://www.cs.unc.edu/~isenburg/trianglestripcompression/

2 Martin Isenburg Triangle Strip Compression University of North Carolina at Chapel Hill

3 Introduction A new edge-based encoding scheme for mesh connectivity.

4 Introduction A new edge-based encoding scheme for mesh connectivity.  compact mesh representations

5 Introduction A new edge-based encoding scheme for mesh connectivity.  compact mesh representations  simple implementation

6 Introduction A new edge-based encoding scheme for mesh connectivity.  compact mesh representations  simple implementation  fast decoding

7 Introduction A new edge-based encoding scheme for mesh connectivity.  compact mesh representations  simple implementation  fast decoding

8 Introduction A new edge-based encoding scheme for mesh connectivity.  compact mesh representations  simple implementation  fast decoding  include triangle strip information at little additional costs

9 A Triangle Mesh

10 A Stripified Triangle Mesh

11 Triangle Strips

12 Technique for efficient rendering of triangle meshes. Reduce data transfer between main memory and render engine. Requires built-in buffer for two (previous) vertices. Supported in today’s graphic boards. Triangle Strips

13 Rendering with Triangles

14

15 Rendering with Triangle Strips

16

17

18 v 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v2v2 v1v1 v3v3 v4v4 v5v5 v6v6 v7v7 v8v8 v0v0 7 triangles 9 vertices Sequential Triangle Strip

19 Sequential Generalized

20 v2v2 v1v1 v3v3 v4v4 v5v5 v6v6 v7v7 v8v8 v0v0 v 0 v 1 v 2 v 3 v 2 v 5 v 4 v 7 v 6 v 8 7 triangles 10 vertices Generalized Triangle Strip

21 v2v2 v1v1 v3v3 v4v4 v5v5 v6v6 v7v7 v8v8 v0v0 v 0 v 1 v 2 v 3 v 2 v 5 v 4 v 7 v 6 v 8 7 triangles 10 vertices Generalized Triangle Strip

22 v2v2 v1v1 v3v3 v4v4 v5v5 v6v6 v7v7 v8v8 v0v0 v 0 v 1 v 2 v 3 v 2 v 5 v 4 v 7 v 6 v 8 7 triangles 10 vertices Generalized Triangle Strip v2v2 swap

23 finding good set of triangle strips (e.g. few swaps, restarts) isn’t easy computing optimal solution is NP hard proposed tools with good heuristics: –STRIPE(96, Evans et al.) –SWAPS(97, Speckmann & Snoeyink) –FGTS(99, Xiang et al.) Stripification Algorithms

24 Storing a Mesh

25 Where are the vertices located ?  mesh geometry Which vertices form a triangle?  mesh connectivity Storing a Mesh

26 list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

27 list of vertices list of triangles x 0 y 0 z 0 1 4 20 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

28 list of vertices list of triangles x 0 y 0 z 0 1 4 20 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

29 list of vertices list of triangles x 0 y 0 z 0 1 4 20 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

30 list of vertices list of triangles x 0 y 0 z 0 1 4 20 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

31 list of vertices list of triangles x 0 y 0 z 0 1 4 2 x 1 y 1 z 1 2 3 03 4 x 2 y 2 z 2 u 2 v 2 w 2 4 0 53 4 x 3 y 3 z 3 u 3 v 3 w 3 3 4 53 6 4x 4 y 4 z 4 u 4 v 4 w 4 5 0 2..... x n y n z n..... Standard Representation

32 list of vertices list of triangles x 0 y 0 z 0 1 4 2 x 1 y 1 z 1 2 3 03 4 x 2 y 2 z 2 u 2 v 2 w 2 4 0 53 4 x 3 y 3 z 3 u 3 v 3 w 3 3 4 53 6 4x 4 y 4 z 4 u 4 v 4 w 4 5 0 2..... x n y n z n..... Connectivity Storage costs: 6 log(n) bpv

33 Storing a Stripified Mesh

34 Where are the vertices located ?  mesh geometry Which vertices form a triangle?  mesh connectivity Storing a Stripified Mesh

35 Where are the vertices located ?  mesh geometry Which vertices form a triangle?  mesh connectivity Which triangles form a strip?  mesh stripification Storing a Stripified Mesh

36 Which vertices form a triangle strip?  mesh connectivity  mesh stripification Storing a Stripified Mesh Where are the vertices located ?  mesh geometry

37 list of vertices x 0 y 0 z 0 x 1 y 1 z 1 x 2 y 2 z 2 x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation

38 list of verticeslist of triangle strips x 0 y 0 z 0 1 4 20 30 0... x 1 y 1 z 1 1 0 40 20 4... x 2 y 2 z 2 7 4 50 80 4... x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Standard Representation.........

39 list of verticeslist of triangle strips x 0 y 0 z 0 1 4 20 30 0... x 1 y 1 z 1 1 0 40 20 4... x 2 y 2 z 2 7 4 50 80 4... x 3 y 3 z 3 4x 4 y 4 z 4 6 4..... x n y n z n Storage costs: 2~3 log(n) bpv Connectivity and Stripification.........

40 Connectivity Compression for Triangle Meshes

41 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Compression Techniques

42 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Short Encodings of Planar Graphs and Maps 4.6 bpv (4.6) Compression Techniques

43 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Topological Surgery 2.4 ~ 7.0 bpv (--) Compression Techniques

44 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Triangle Mesh Compression 0.2 ~ 2.9 bpv (--) Compression Techniques

45 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Edgebreaker 3.2 ~ 4.0 bpv (4.0) Compression Techniques

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

47 Keeler Westbrook [ 95 ] Taubin Rossignac [ 96 ] Tauma Gotsman [ 98 ] Rossignac [ 98 ] DeFloriani et al [ 99 ] Isenburg Snoeyink [ 99 ] Mesh Collapse Compression 1.1 ~ 3.4 bpv (--) Compression Techniques

48 strip-internal edges

49 1 1 1 1 1 1 1 1 1 1 1 1

50 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 bpv strip-internal edges

51 Triangle Fixer

52 Encoding scheme Define initial active boundary around arbitrary edge of mesh.

53 Define initial active gate as one of the two boundary edges. Encoding scheme

54 Label active gate with T, R, L, S, or E. Encoding scheme

55 Label active gate with T, R, L, S, or E. Which label ? Depends on its adacency relation with the boundary.

56 Encoding scheme Label active gate with T, R, L, S, or E. Which label ? Depends on its adacency relation with the boundary. Update active boundary and active gate.

57 Encoding scheme Label active gate with T, R, L, S, or E. Which label ? Depends on its adacency relation with the boundary. Update active boundary and active gate. Boundary is expanded (T), is shrunk (R and L), is split (S), or is terminated (E).

58 Label T before Active gate not adjacent to other boundary edge.

59 Label T beforeafter

60 Label R before Active gate adjacent to next edge along active boundary.

61 Label R beforeafter

62 Label L before Active gate adjacent to previous edge along active boundary.

63 Label L beforeafter

64 Label S before Active gate adjacent to some other edge of active boundary.

65 Label S Active gate adjacent to some other edge of active boundary.

66 Label S before Active gate adjacent to some other edge of active boundary.

67 Label S beforeafter

68 Label E before Active gate adjacent to previous and next edge along active boundary.

69 Label E beforeafter

70 Example Run: Encoding

71

72

73 T

74 T

75 T

76 T

77 T

78 R

79 T

80 T

81 T

82 T

83 R

84 T

85 T

86 T

87 T

88 R

89 T

90 H 10

91 R

92 R

93 R

94 R

95 R

96 R

97 R

98 R

99 E

100

101 Example Run: Decoding

102 E

103 R

104 R

105 R

106 R

107 R

108 R

109 R

110 R

111 H 10

112 T

113 R

114 T

115 T

116 T

117 T

118 R

119 T

120 T

121 T

122 T

123 R

124 T

125 T

126 T

127 T

128 T

129

130

131 Holes and Handles

132 Simple Mesh

133 Mesh with Holes

134 Mesh with Handle

135 Mesh with Handle and Holes

136 Encoding a hole use new label H associate integer called size with label H that specifies number of edges/vertices around hole one label H size per hole total number of labels remains equal to number of mesh edges

137 Label H size before hole Active gate adjacent to hole of size edges/vertices.

138 Label H size beforeafter hole

139 Encoding a handle use new label M associate three integers called index, offset 1, and offset 2 with label M that specify current configuration one label M idx,off 1,off 2 per handle total number of labels remains equal to number of mesh edges

140 Label M idx,off 1,off 2 before offset 1 offset 2 index in stack Active gate adjacent to some edge of boundary in stack.

141 Label M idx,off 1,off 2 beforeafter offset 1 offset 2 index in stack

142 Triangle Strip Compression

143 let triangle strips guide the mesh traversal replace label T with labels T R, T L, T B, and T E traversing along strip means progress for both: –encoding connectivity –encoding stripification

144 Label T R Triangle strip leaves triangle on the right. before

145 Label T R beforeafter

146 Label T L Triangle strip leaves triangle on the left. before

147 Label T L beforeafter

148 Label T B Triangle strip leaves triangle on the left and on the right. before

149 Label T B beforeafter

150 Label T E (case 1) Triangle strip ends in triangle. AND It’s the last triangle of current strip. It doesn’t follow a label of type T B. before

151 Label T E (case 1) beforeafter

152 Label T E (case 2) before Triangle strip ends in triangle. AND Not the last triangle of current strip. It follows a label of type T B.

153 Label T E (case 2) afterbefore

154 Example Run: Encoding

155

156

157

158 TLTL

159 TRTR

160 TRTR

161 TRTR

162 TETE

163

164

165 TBTB

166 TLTL

167 TRTR

168 TRTR

169 TLTL

170 TRTR

171 TRTR

172 TETE

173

174 TETE

175

176

177 H 10

178 R

179 R

180 R

181 R

182 R

183 S

184 L

185 L

186 E

187 R

188 R

189 E

190

191 Example Run: Decoding

192 T L T R T L T L T E T B T L T R T R T L T R T R T E T E H 10 RRR RRSLLE RRE calculate offset * Offset = 6

193 E

194 R

195 R

196 E

197 L

198 L

199 S

200 R

201 R

202 R

203 R

204 R

205 H 10

206 TETE

207 TE*TE*

208 TE*TE*

209 TE*TE*

210 TE*TE*

211 TRTR

212 TRTR

213 TLTL

214 TRTR

215 TRTR

216 TLTL

217 TBTB

218

219

220 TETE

221 TRTR

222 TRTR

223 TRTR

224 TLTL

225

226

227

228 Compressing the label sequence

229 map label types to unique bit-codes example: frequent labels are mapped to short bit-codes make mapping dependent on last label (e.g. one label memory) very simple implementation Fixed-Bit Encoding T  0R  01S  0001 L  001E  0011

230 approaches the entropy of the label sequence adaptive version three label memory due to small number of different symbols, probability tables require less than 4 KB implemented with fast bit operations Arithmetic Encoding

231 Results

232 Fandisk

233 Eight

234 Bunny

235 Triceratops

236 Skull

237 aac-3 vertices mesh Results 2832 4.00triceratops3.494.122.52 34834 4.00bunny2.403.691.73 10952 4.22skull4.184.782.96 766 4.09eight 38974.16femur 1.78 4.02 3.46 4.48 1.43 3.05 250 3.99bishop1.78 2562 4.00shape 6475 4.01fandisk 0.62 2.25 2.98 3.09 3.61 2.36 0.77 1.67 fixed

238 Video

239 Many polygon meshes include additional information Surface Normals Texture coordinates Colours Mesh Properties

240 Mesh properties can be attached to Mesh Properties

241 Mesh properties can be attached to vertices Mesh Properties

242 Mesh properties can be attached to vertices faces Mesh Properties

243 Mesh properties can be attached to vertices faces corners Mesh Properties

244 Make stripification process difficult. Corner attributes must be consistent for vertices in strip. But... mapping attributes to strip corners is cheaper than mapping to triangle corners. Usually requires 1 bit per corner. Immediate savings of 50 % and more! Corner Attributes

245 Number of Corners strip vertices mesh 2832 16980triceratops5948 34834 208353bunny71909 10952 66312skull23304 766 4608eight 389723394femur 1584 8272 250 1488bishop 2562 15360shape 6475 38838fandisk 498 5124 13394 triangles

246 Compact encodings for stripified triangle meshes. Exploit existing correlation between connectivity and stripification. Edge-based encoding has other useful applications (non-triangular meshes). Summary and Current Work

247 Bettina Speckmann for fruitful discussions on triangle strips Xinyu Xiang for triangulating some of my test models my supervisor Jack Snoeyink for reviewing the paper Acknowledgements


Download ppt ""

Similar presentations


Ads by Google