@loaders.gl/tile-converter 4.0.0-beta.2 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/3d-tiles-converter.js +31 -32
  2. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  3. package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/b3dm-converter.js +5 -6
  4. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  5. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  6. package/dist/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  7. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  8. package/dist/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  9. package/dist/constants.js.map +1 -0
  10. package/dist/{esm/converter-cli.js → converter-cli.js} +37 -15
  11. package/dist/converter-cli.js.map +1 -0
  12. package/dist/converter.min.js +496 -328
  13. package/dist/{esm/deps-installer → deps-installer}/deps-installer.js +3 -3
  14. package/dist/deps-installer/deps-installer.js.map +1 -0
  15. package/dist/esm/i3s-server/bin/i3s-server.min.js +786 -428
  16. package/dist/{esm/i3s-converter → i3s-converter}/helpers/batch-ids-extensions.js +2 -2
  17. package/dist/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  18. package/dist/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  19. package/dist/{esm/i3s-converter → i3s-converter}/helpers/create-scene-server-path.js +2 -2
  20. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  21. package/dist/{esm/i3s-converter → i3s-converter}/helpers/feature-attributes.js +1 -1
  22. package/dist/i3s-converter/helpers/feature-attributes.js.map +1 -0
  23. package/dist/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  24. package/dist/{esm/i3s-converter → i3s-converter}/helpers/geometry-converter.js +11 -11
  25. package/dist/i3s-converter/helpers/geometry-converter.js.map +1 -0
  26. package/dist/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  27. package/dist/{esm/i3s-converter → i3s-converter}/helpers/load-3d-tiles.js +1 -1
  28. package/dist/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  29. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-debug.js +2 -2
  30. package/dist/i3s-converter/helpers/node-debug.js.map +1 -0
  31. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-index-document.js +14 -15
  32. package/dist/i3s-converter/helpers/node-index-document.js.map +1 -0
  33. package/dist/{esm/i3s-converter → i3s-converter}/helpers/node-pages.js +13 -14
  34. package/dist/i3s-converter/helpers/node-pages.js.map +1 -0
  35. package/dist/{esm/i3s-converter → i3s-converter}/helpers/preprocess-3d-tiles.js +1 -1
  36. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  37. package/dist/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  38. package/dist/i3s-converter/i3s-converter.d.ts +6 -0
  39. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  40. package/dist/{esm/i3s-converter → i3s-converter}/i3s-converter.js +120 -111
  41. package/dist/i3s-converter/i3s-converter.js.map +1 -0
  42. package/dist/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  43. package/dist/{esm/i3s-converter → i3s-converter}/json-templates/layers.js +1 -1
  44. package/dist/i3s-converter/json-templates/layers.js.map +1 -0
  45. package/dist/i3s-converter/json-templates/metadata.js.map +1 -0
  46. package/dist/i3s-converter/json-templates/node.js.map +1 -0
  47. package/dist/i3s-converter/json-templates/scene-server.js.map +1 -0
  48. package/dist/{esm/i3s-converter → i3s-converter}/json-templates/shared-resources.js +2 -2
  49. package/dist/i3s-converter/json-templates/shared-resources.js.map +1 -0
  50. package/dist/i3s-converter/json-templates/store.js.map +1 -0
  51. package/dist/i3s-converter/types.js.map +1 -0
  52. package/dist/{esm/i3s-server → i3s-server}/app.js +1 -1
  53. package/dist/i3s-server/app.js.map +1 -0
  54. package/dist/{esm/i3s-server → i3s-server}/bin/www.js +4 -4
  55. package/dist/i3s-server/bin/www.js.map +1 -0
  56. package/dist/{esm/i3s-server → i3s-server}/controllers/index-controller.js +1 -1
  57. package/dist/i3s-server/controllers/index-controller.js.map +1 -0
  58. package/dist/i3s-server/controllers/slpk-controller.d.ts +2 -3
  59. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -1
  60. package/dist/i3s-server/controllers/slpk-controller.js +19 -0
  61. package/dist/i3s-server/controllers/slpk-controller.js.map +1 -0
  62. package/dist/i3s-server/routes/index.js.map +1 -0
  63. package/dist/{esm/i3s-server → i3s-server}/routes/slpk-router.js +2 -2
  64. package/dist/i3s-server/routes/slpk-router.js.map +1 -0
  65. package/dist/i3s-server/utils/create-scene-server.js.map +1 -0
  66. package/dist/{esm/i3s-server → i3s-server}/utils/server-utils.js +5 -5
  67. package/dist/i3s-server/utils/server-utils.js.map +1 -0
  68. package/dist/index.cjs +5129 -0
  69. package/dist/index.js +3 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/{esm/lib → lib}/utils/cli-utils.js +2 -2
  72. package/dist/lib/utils/cli-utils.js.map +1 -0
  73. package/dist/{esm/lib → lib}/utils/compress-util.js +15 -15
  74. package/dist/lib/utils/compress-util.js.map +1 -0
  75. package/dist/{esm/lib → lib}/utils/file-utils.js +5 -5
  76. package/dist/lib/utils/file-utils.js.map +1 -0
  77. package/dist/lib/utils/geometry-utils.js.map +1 -0
  78. package/dist/lib/utils/lod-conversion-utils.js.map +1 -0
  79. package/dist/lib/utils/queue.js.map +1 -0
  80. package/dist/lib/utils/statistic-utills.d.js +2 -0
  81. package/dist/lib/utils/statistic-utills.d.js.map +1 -0
  82. package/dist/{esm/lib → lib}/utils/statistic-utills.js +6 -6
  83. package/dist/lib/utils/statistic-utills.js.map +1 -0
  84. package/dist/{esm/lib → lib}/utils/write-queue.js +6 -7
  85. package/dist/lib/utils/write-queue.js.map +1 -0
  86. package/dist/{esm/pgm-loader.js → pgm-loader.js} +1 -1
  87. package/dist/pgm-loader.js.map +1 -0
  88. package/dist/{esm/slpk-extractor → slpk-extractor}/slpk-extractor.js +4 -4
  89. package/dist/slpk-extractor/slpk-extractor.js.map +1 -0
  90. package/dist/{esm/slpk-extractor-cli.js → slpk-extractor-cli.js} +6 -6
  91. package/dist/slpk-extractor-cli.js.map +1 -0
  92. package/dist/slpk-extractor.min.js +279 -133
  93. package/package.json +29 -22
  94. package/src/converter-cli.ts +32 -14
  95. package/src/i3s-converter/i3s-converter.ts +44 -30
  96. package/src/i3s-server/controllers/slpk-controller.ts +12 -10
  97. package/src/slpk-extractor/slpk-extractor.ts +1 -1
  98. package/dist/bundle.d.ts +0 -2
  99. package/dist/bundle.d.ts.map +0 -1
  100. package/dist/dist.min.js +0 -64291
  101. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +0 -447
  102. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  103. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +0 -295
  104. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  105. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -18
  106. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  107. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js +0 -63
  108. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +0 -1
  109. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -33
  110. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  111. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -61
  112. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  113. package/dist/es5/bundle.js +0 -6
  114. package/dist/es5/bundle.js.map +0 -1
  115. package/dist/es5/constants.js +0 -9
  116. package/dist/es5/constants.js.map +0 -1
  117. package/dist/es5/converter-cli.js +0 -249
  118. package/dist/es5/converter-cli.js.map +0 -1
  119. package/dist/es5/deps-installer/deps-installer.js +0 -198
  120. package/dist/es5/deps-installer/deps-installer.js.map +0 -1
  121. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +0 -146
  122. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +0 -1
  123. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +0 -89
  124. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  125. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -41
  126. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  127. package/dist/es5/i3s-converter/helpers/feature-attributes.js +0 -164
  128. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +0 -1
  129. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +0 -253
  130. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  131. package/dist/es5/i3s-converter/helpers/geometry-converter.js +0 -1190
  132. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +0 -1
  133. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +0 -113
  134. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +0 -1
  135. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +0 -148
  136. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +0 -1
  137. package/dist/es5/i3s-converter/helpers/node-debug.js +0 -76
  138. package/dist/es5/i3s-converter/helpers/node-debug.js.map +0 -1
  139. package/dist/es5/i3s-converter/helpers/node-index-document.js +0 -522
  140. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +0 -1
  141. package/dist/es5/i3s-converter/helpers/node-pages.js +0 -519
  142. package/dist/es5/i3s-converter/helpers/node-pages.js.map +0 -1
  143. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +0 -146
  144. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +0 -1
  145. package/dist/es5/i3s-converter/helpers/tileset-traversal.js +0 -82
  146. package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +0 -1
  147. package/dist/es5/i3s-converter/i3s-converter.js +0 -1554
  148. package/dist/es5/i3s-converter/i3s-converter.js.map +0 -1
  149. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +0 -107
  150. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +0 -1
  151. package/dist/es5/i3s-converter/json-templates/layers.js +0 -163
  152. package/dist/es5/i3s-converter/json-templates/layers.js.map +0 -1
  153. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -31
  154. package/dist/es5/i3s-converter/json-templates/metadata.js.map +0 -1
  155. package/dist/es5/i3s-converter/json-templates/node.js +0 -99
  156. package/dist/es5/i3s-converter/json-templates/node.js.map +0 -1
  157. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -39
  158. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +0 -1
  159. package/dist/es5/i3s-converter/json-templates/shared-resources.js +0 -173
  160. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +0 -1
  161. package/dist/es5/i3s-converter/json-templates/store.js +0 -107
  162. package/dist/es5/i3s-converter/json-templates/store.js.map +0 -1
  163. package/dist/es5/i3s-converter/types.js +0 -18
  164. package/dist/es5/i3s-converter/types.js.map +0 -1
  165. package/dist/es5/i3s-server/app.js +0 -35
  166. package/dist/es5/i3s-server/app.js.map +0 -1
  167. package/dist/es5/i3s-server/bin/www.js +0 -33
  168. package/dist/es5/i3s-server/bin/www.js.map +0 -1
  169. package/dist/es5/i3s-server/controllers/index-controller.js +0 -56
  170. package/dist/es5/i3s-server/controllers/index-controller.js.map +0 -1
  171. package/dist/es5/i3s-server/controllers/slpk-controller.js +0 -81
  172. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +0 -1
  173. package/dist/es5/i3s-server/routes/index.js +0 -37
  174. package/dist/es5/i3s-server/routes/index.js.map +0 -1
  175. package/dist/es5/i3s-server/routes/slpk-router.js +0 -72
  176. package/dist/es5/i3s-server/routes/slpk-router.js.map +0 -1
  177. package/dist/es5/i3s-server/utils/create-scene-server.js +0 -20
  178. package/dist/es5/i3s-server/utils/create-scene-server.js.map +0 -1
  179. package/dist/es5/i3s-server/utils/server-utils.js +0 -49
  180. package/dist/es5/i3s-server/utils/server-utils.js.map +0 -1
  181. package/dist/es5/index.js +0 -21
  182. package/dist/es5/index.js.map +0 -1
  183. package/dist/es5/lib/utils/cli-utils.js +0 -57
  184. package/dist/es5/lib/utils/cli-utils.js.map +0 -1
  185. package/dist/es5/lib/utils/compress-util.js +0 -346
  186. package/dist/es5/lib/utils/compress-util.js.map +0 -1
  187. package/dist/es5/lib/utils/file-utils.js +0 -208
  188. package/dist/es5/lib/utils/file-utils.js.map +0 -1
  189. package/dist/es5/lib/utils/geometry-utils.js +0 -15
  190. package/dist/es5/lib/utils/geometry-utils.js.map +0 -1
  191. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -50
  192. package/dist/es5/lib/utils/lod-conversion-utils.js.map +0 -1
  193. package/dist/es5/lib/utils/queue.js +0 -47
  194. package/dist/es5/lib/utils/queue.js.map +0 -1
  195. package/dist/es5/lib/utils/statistic-utills.d.ts +0 -25
  196. package/dist/es5/lib/utils/statistic-utills.js +0 -147
  197. package/dist/es5/lib/utils/statistic-utills.js.map +0 -1
  198. package/dist/es5/lib/utils/write-queue.js +0 -214
  199. package/dist/es5/lib/utils/write-queue.js.map +0 -1
  200. package/dist/es5/pgm-loader.js +0 -49
  201. package/dist/es5/pgm-loader.js.map +0 -1
  202. package/dist/es5/slpk-extractor/slpk-extractor.js +0 -171
  203. package/dist/es5/slpk-extractor/slpk-extractor.js.map +0 -1
  204. package/dist/es5/slpk-extractor-cli.js +0 -117
  205. package/dist/es5/slpk-extractor-cli.js.map +0 -1
  206. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  207. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  208. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  209. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +0 -1
  210. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  211. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  212. package/dist/esm/bundle.js +0 -4
  213. package/dist/esm/bundle.js.map +0 -1
  214. package/dist/esm/constants.js.map +0 -1
  215. package/dist/esm/converter-cli.js.map +0 -1
  216. package/dist/esm/deps-installer/deps-installer.js.map +0 -1
  217. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +0 -1
  218. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  219. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  220. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +0 -1
  221. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  222. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +0 -1
  223. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +0 -1
  224. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +0 -1
  225. package/dist/esm/i3s-converter/helpers/node-debug.js.map +0 -1
  226. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +0 -1
  227. package/dist/esm/i3s-converter/helpers/node-pages.js.map +0 -1
  228. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +0 -1
  229. package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +0 -1
  230. package/dist/esm/i3s-converter/i3s-converter.js.map +0 -1
  231. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +0 -1
  232. package/dist/esm/i3s-converter/json-templates/layers.js.map +0 -1
  233. package/dist/esm/i3s-converter/json-templates/metadata.js.map +0 -1
  234. package/dist/esm/i3s-converter/json-templates/node.js.map +0 -1
  235. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +0 -1
  236. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +0 -1
  237. package/dist/esm/i3s-converter/json-templates/store.js.map +0 -1
  238. package/dist/esm/i3s-converter/types.js.map +0 -1
  239. package/dist/esm/i3s-server/README.md +0 -63
  240. package/dist/esm/i3s-server/app.js.map +0 -1
  241. package/dist/esm/i3s-server/bin/www.js.map +0 -1
  242. package/dist/esm/i3s-server/certs/cert.pem +0 -19
  243. package/dist/esm/i3s-server/certs/key.pem +0 -27
  244. package/dist/esm/i3s-server/controllers/index-controller.js.map +0 -1
  245. package/dist/esm/i3s-server/controllers/slpk-controller.js +0 -19
  246. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +0 -1
  247. package/dist/esm/i3s-server/routes/index.js.map +0 -1
  248. package/dist/esm/i3s-server/routes/slpk-router.js.map +0 -1
  249. package/dist/esm/i3s-server/utils/create-scene-server.js.map +0 -1
  250. package/dist/esm/i3s-server/utils/server-utils.js.map +0 -1
  251. package/dist/esm/index.js +0 -3
  252. package/dist/esm/index.js.map +0 -1
  253. package/dist/esm/lib/utils/cli-utils.js.map +0 -1
  254. package/dist/esm/lib/utils/compress-util.js.map +0 -1
  255. package/dist/esm/lib/utils/file-utils.js.map +0 -1
  256. package/dist/esm/lib/utils/geometry-utils.js.map +0 -1
  257. package/dist/esm/lib/utils/lod-conversion-utils.js.map +0 -1
  258. package/dist/esm/lib/utils/queue.js.map +0 -1
  259. package/dist/esm/lib/utils/statistic-utills.d.ts +0 -25
  260. package/dist/esm/lib/utils/statistic-utills.js.map +0 -1
  261. package/dist/esm/lib/utils/write-queue.js.map +0 -1
  262. package/dist/esm/pgm-loader.js.map +0 -1
  263. package/dist/esm/slpk-extractor/slpk-extractor.js.map +0 -1
  264. package/dist/esm/slpk-extractor-cli.js.map +0 -1
  265. package/src/bundle.ts +0 -4
  266. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.js +0 -0
  267. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/load-i3s.js +0 -0
  268. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/helpers/texture-atlas.js +0 -0
  269. /package/dist/{esm/3d-tiles-converter → 3d-tiles-converter}/json-templates/tileset.js +0 -0
  270. /package/dist/{esm/constants.js → constants.js} +0 -0
  271. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/coordinate-converter.js +0 -0
  272. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/geometry-attributes.js +0 -0
  273. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/gltf-attributes.js +0 -0
  274. /package/dist/{esm/i3s-converter → i3s-converter}/helpers/tileset-traversal.js +0 -0
  275. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/geometry-definitions.js +0 -0
  276. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/metadata.js +0 -0
  277. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/node.js +0 -0
  278. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/scene-server.js +0 -0
  279. /package/dist/{esm/i3s-converter → i3s-converter}/json-templates/store.js +0 -0
  280. /package/dist/{esm/i3s-converter → i3s-converter}/types.js +0 -0
  281. /package/dist/{es5/i3s-server → i3s-server}/README.md +0 -0
  282. /package/dist/{es5/i3s-server → i3s-server}/certs/cert.pem +0 -0
  283. /package/dist/{es5/i3s-server → i3s-server}/certs/key.pem +0 -0
  284. /package/dist/{esm/i3s-server → i3s-server}/routes/index.js +0 -0
  285. /package/dist/{esm/i3s-server → i3s-server}/utils/create-scene-server.js +0 -0
  286. /package/dist/{esm/lib → lib}/utils/geometry-utils.js +0 -0
  287. /package/dist/{esm/lib → lib}/utils/lod-conversion-utils.js +0 -0
  288. /package/dist/{esm/lib → lib}/utils/queue.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-debug.js","names":["OrientedBoundingBox","BoundingSphere","Vector3","Ellipsoid","CUBE_POSITIONS","Float32Array","validateNodeBoundingVolumes","node","_node$parentNode","_node$parentNode2","parentNode","obb","mbs","tileWarnings","validateObb","validateMbs","_node$parentNode3","parentObb","createBoundingBoxFromTileObb","tileVertices","getTileObbVertices","isTileObbInsideParentObb","isAllVerticesInsideBoundingVolume","title","id","push","tileMbs","createBoundingSphereFromTileMbs","parentMbs","distanceBetweenCenters","center","distanceTo","radius","_node$parentNode4","halfSize","quaternion","fromCenterHalfSizeQuaternion","positions","obbCenterCartesian","WGS84","cartographicToCartesian","vertices","i","length","positionsVector","rotatedPositions","transformByQuaternion","add","concat","boundingVolume","isVerticesInsideObb","index","point","cartographicPoint","cartesianToCartographic","distance"],"sources":["../../../src/i3s-converter/helpers/node-debug.ts"],"sourcesContent":["import type {Mbs, Node3DIndexDocument, Obb} from '@loaders.gl/i3s';\nimport {OrientedBoundingBox, BoundingSphere} from '@math.gl/culling';\nimport {Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\n// prettier-ignore\nconst CUBE_POSITIONS = new Float32Array([\n -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,\n -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1,\n -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1,\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1,\n 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1\n]);\n\n// TODO Unite Tile validation logic in i3s-17-and-debug with this code.\n\n/**\n * Do validation of bounding volumes for particular node.\n * Generates special warnings if there are some issues.\n * @param node\n */\nexport function validateNodeBoundingVolumes(node: Node3DIndexDocument): string[] {\n if (!node?.parentNode?.obb || !node?.parentNode?.mbs) {\n return [];\n }\n\n const tileWarnings: string[] = [];\n\n validateObb(tileWarnings, node);\n validateMbs(tileWarnings, node);\n\n return tileWarnings;\n}\n\n/**\n * Check if child Obb fit into parent Obb.\n * @param tileWarnings\n * @param node\n */\nfunction validateObb(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);\n const tileVertices = getTileObbVertices(node);\n const isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);\n\n if (isTileObbInsideParentObb) {\n return;\n }\n\n const title = `OBB of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile OBB`;\n tileWarnings.push(title);\n}\n\n/**\n * Check if child Mbs fit into parent Mbs.\n * @param tileWarnings\n * @param node\n */\nfunction validateMbs(tileWarnings: string[], node: Node3DIndexDocument): void {\n // @ts-expect-error\n const tileMbs = createBoundingSphereFromTileMbs(node.mbs);\n // @ts-expect-error\n const parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);\n const distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);\n\n if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {\n const title = `MBS of Tile (${node.id}) doesn't fit into Parent (${node.parentNode?.id}) tile MBS`;\n tileWarnings.push(title);\n }\n}\n\n/**\n * Generates bounding sphere from mbs\n * @param mbs\n */\nfunction createBoundingSphereFromTileMbs(mbs: Mbs): BoundingSphere {\n return new BoundingSphere([mbs[0], mbs[1], mbs[2]], mbs[3]);\n}\n\n/**\n * Generates oriented bounding box from tile obb\n * @param obb\n * @returns\n */\nfunction createBoundingBoxFromTileObb(obb: Obb): OrientedBoundingBox {\n const {center, halfSize, quaternion} = obb;\n return new OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);\n}\n\n/**\n * Get vertices fromnode obb\n * TODO check if Obb generates properly\n * @param node\n */\nfunction getTileObbVertices(node: Node3DIndexDocument): number[] {\n // @ts-expect-error\n const halfSize = node.obb.halfSize;\n const positions = CUBE_POSITIONS;\n // @ts-expect-error\n const obbCenterCartesian = Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);\n\n let vertices = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n const positionsVector = new Vector3(\n (positions[i] *= halfSize[0]),\n (positions[i + 1] *= halfSize[1]),\n (positions[i + 2] *= halfSize[2])\n );\n const rotatedPositions = positionsVector\n // @ts-expect-error\n .transformByQuaternion(node.obb.quaternion)\n .add(obbCenterCartesian);\n // @ts-expect-error\n vertices = vertices.concat(rotatedPositions);\n }\n\n return vertices;\n}\n\n/**\n * Check if all vertices inside bounding volume\n * @param boundingVolume\n * @param positions\n */\nfunction isAllVerticesInsideBoundingVolume(\n boundingVolume: OrientedBoundingBox,\n positions: number[]\n): boolean {\n let isVerticesInsideObb = true;\n\n for (let index = 0; index < positions.length / 3; index += 3) {\n const point = [positions[index], positions[index + 1], positions[index + 2]];\n const cartographicPoint = Ellipsoid.WGS84.cartesianToCartographic(point);\n\n const distance = boundingVolume.distanceTo(cartographicPoint);\n\n if (distance > 0) {\n isVerticesInsideObb = false;\n break;\n }\n }\n\n return isVerticesInsideObb;\n}\n"],"mappings":"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"}
@@ -1,20 +1,19 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { join } from 'path';
3
2
  import transform from 'json-map-transform';
4
3
  import { v4 as uuidv4 } from 'uuid';
5
- import { openJson, writeFile, writeFileForSlpk } from '../../lib/utils/file-utils';
6
- import { NODE as nodeTemplate } from '../json-templates/node';
4
+ import { openJson, writeFile, writeFileForSlpk } from "../../lib/utils/file-utils.js";
5
+ import { NODE as nodeTemplate } from "../json-templates/node.js";
7
6
  export class NodeIndexDocument {
8
7
  get finalized() {
9
8
  return this._finalized;
10
9
  }
11
10
  constructor(id, converter) {
12
- _defineProperty(this, "id", void 0);
13
- _defineProperty(this, "inPageId", void 0);
14
- _defineProperty(this, "data", null);
15
- _defineProperty(this, "children", []);
16
- _defineProperty(this, "converter", void 0);
17
- _defineProperty(this, "_finalized", false);
11
+ this.id = void 0;
12
+ this.inPageId = void 0;
13
+ this.data = null;
14
+ this.children = [];
15
+ this.converter = void 0;
16
+ this._finalized = false;
18
17
  this.inPageId = id;
19
18
  this.id = id === 0 ? 'root' : id.toString();
20
19
  this.converter = converter;
@@ -33,7 +32,7 @@ export class NodeIndexDocument {
33
32
  const nodeData = await node.load();
34
33
  newChildren.push({
35
34
  id: node.id,
36
- href: "../".concat(node.id),
35
+ href: `../${node.id}`,
37
36
  obb: nodeData.obb,
38
37
  mbs: nodeData.mbs
39
38
  });
@@ -71,7 +70,7 @@ export class NodeIndexDocument {
71
70
  });
72
71
  }
73
72
  } else {
74
- console.warn("Node ".concat(childNode.id, ": neighbors attribute is omited because of large number of neigbors"));
73
+ console.warn(`Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`);
75
74
  delete childNodeData.neighbors;
76
75
  }
77
76
  if (this.converter.options.instantNodeWriting && childNodeData) {
@@ -96,7 +95,7 @@ export class NodeIndexDocument {
96
95
  const path = join(this.converter.layers0Path, 'nodes', this.id);
97
96
  if (this.converter.options.slpk) {
98
97
  await this.converter.writeQueue.enqueue({
99
- archiveKey: "nodes/".concat(this.id, "/3dNodeIndexDocument.json.gz"),
98
+ archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,
100
99
  writePromise: () => writeFileForSlpk(path, JSON.stringify(node), '3dNodeIndexDocument.json', true, this.converter.compressList)
101
100
  }, true);
102
101
  } else {
@@ -132,7 +131,7 @@ export class NodeIndexDocument {
132
131
  }
133
132
  static createRootNodeIndexDocument(boundingVolumes) {
134
133
  const root0data = {
135
- version: "{".concat(uuidv4().toUpperCase(), "}"),
134
+ version: `{${uuidv4().toUpperCase()}}`,
136
135
  id: 'root',
137
136
  level: 0,
138
137
  lodSelection: [{
@@ -162,7 +161,7 @@ export class NodeIndexDocument {
162
161
  lodSelection,
163
162
  parentNode: {
164
163
  id: parentNode.id,
165
- href: "../".concat(parentNode.id),
164
+ href: `../${parentNode.id}`,
166
165
  mbs: parentNodeData.mbs,
167
166
  obb: parentNodeData.obb
168
167
  },
@@ -191,7 +190,7 @@ export class NodeIndexDocument {
191
190
  for (let index = 0; index < minimumLength; index++) {
192
191
  const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;
193
192
  node.attributeData.push({
194
- href: "./attributes/".concat(folderName, "/0")
193
+ href: `./attributes/${folderName}/0`
195
194
  });
196
195
  }
197
196
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-index-document.js","names":["join","transform","v4","uuidv4","openJson","writeFile","writeFileForSlpk","NODE","nodeTemplate","NodeIndexDocument","finalized","_finalized","constructor","id","converter","inPageId","data","children","toString","addData","options","instantNodeWriting","write","addChildren","childNodes","newChildren","node","nodeData","load","push","href","obb","mbs","concat","_data$children","addNeighbors","childNode","_childNodeData$neighb","_nodeData$children","childNodeData","neighbors","Number","length","neighbor","console","warn","save","finalize","child","flush","path","layers0Path","slpk","writeQueue","enqueue","archiveKey","writePromise","JSON","stringify","compressList","parentNodePath","parentNodeFileName","createRootNode","boundingVolumes","rootData","createRootNodeIndexDocument","rootNode","createNode","parentNode","lodSelection","nodeInPage","resources","createNodeIndexDocument","index","root0data","version","toUpperCase","level","metricType","maxError","texture","attributes","nodeId","parentNodeData","mesh","_parentNode$converter","_parentNode$converter2","geometryData","sharedResource","textureData","layers0","attributeStorageInfo","attributeData","minimumLength","folderName","key"],"sources":["../../../src/i3s-converter/helpers/node-index-document.ts"],"sourcesContent":["import {join} from 'path';\nimport {\n BoundingVolumes,\n LodSelection,\n Node3DIndexDocument,\n NodeInPage,\n NodeReference\n} from '@loaders.gl/i3s';\nimport transform from 'json-map-transform';\nimport {v4 as uuidv4} from 'uuid';\nimport {openJson, writeFile, writeFileForSlpk} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\nimport {NODE as nodeTemplate} from '../json-templates/node';\nimport {I3SConvertedResources} from '../types';\n\n/**\n * Wrapper for https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md data\n * The class allows working with 3DNodeIndexDocument in 2 modes:\n * in memory: the data is stored in `data` field\n * on disk: the data is written on disk in a file. The file can be rewritten when new childrend or neighbors have to be added\n */\nexport class NodeIndexDocument {\n /** Node id */\n public id: string;\n /** Id in node pages */\n public inPageId: number;\n /** 3DNodeIndexDocument data */\n public data: Node3DIndexDocument | null = null;\n /** children */\n public children: NodeIndexDocument[] = [];\n /** converter instance */\n private converter: I3SConverter;\n\n /**\n * Finalized property. It means that all child nodes are saved and their data\n * is unloaded\n */\n private _finalized: boolean = false;\n get finalized(): boolean {\n return this._finalized;\n }\n\n /**\n * Constructor\n * @param id - id of the node in node pages\n * @param converter - converter instance\n */\n constructor(id: number, converter: I3SConverter) {\n this.inPageId = id;\n this.id = id === 0 ? 'root' : id.toString();\n this.converter = converter;\n }\n\n /**\n * Add Node3DIndexDocument data to the node\n * @param data Node3DIndexDocument data\n * @returns this NodeIndexDocument instance (to recurring with constructor)\n */\n public async addData(data: Node3DIndexDocument): Promise<NodeIndexDocument> {\n if (this.converter.options.instantNodeWriting) {\n await this.write(data);\n } else {\n this.data = data;\n }\n return this;\n }\n\n /**\n * Add child node references\n * @param childNodes - child NodeIndexDocument instances\n */\n public async addChildren(childNodes: NodeIndexDocument[]): Promise<void> {\n const newChildren: NodeReference[] = [];\n for (const node of childNodes) {\n const nodeData = await node.load();\n newChildren.push({\n id: node.id,\n href: `../${node.id}`,\n obb: nodeData.obb,\n mbs: nodeData.mbs\n });\n }\n this.children = this.children.concat(childNodes);\n\n let data: Node3DIndexDocument | null = this.data;\n if (this.converter.options.instantNodeWriting) {\n data = (await this.load()) as Node3DIndexDocument;\n }\n if (data) {\n data.children = data.children ?? [];\n data.children = data.children.concat(newChildren);\n }\n if (this.converter.options.instantNodeWriting && data) {\n await this.write(data);\n }\n }\n\n /**\n * Add neighbors to child nodes of this node\n */\n public async addNeighbors(): Promise<void> {\n if (this.finalized) {\n return;\n }\n const nodeData = await this.load();\n for (const childNode of this.children) {\n const childNodeData = await childNode.load();\n childNodeData.neighbors = childNodeData.neighbors ?? [];\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (Number(nodeData?.children?.length) < 1000) {\n for (const neighbor of nodeData.children || []) {\n if (childNode.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n childNodeData.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${childNode.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete childNodeData.neighbors;\n }\n\n if (this.converter.options.instantNodeWriting && childNodeData) {\n await childNode.write(childNodeData);\n }\n await childNode.save();\n }\n // The save after adding neighbors is the last one. Finalize the the node\n this.finalize();\n }\n\n /** Save 3DNodeIndexDocument in file on disk */\n public async save(): Promise<void> {\n if (this.data) {\n await this.write(this.data);\n }\n }\n\n /** Finalize the node */\n private finalize(): void {\n this._finalized = true;\n for (const child of this.children) {\n child.flush();\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param node - Node3DIndexDocument object\n */\n private async write(node: Node3DIndexDocument): Promise<void> {\n const path = join(this.converter.layers0Path, 'nodes', this.id);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodes/${this.id}/3dNodeIndexDocument.json.gz`,\n writePromise: () =>\n writeFileForSlpk(\n path,\n JSON.stringify(node),\n '3dNodeIndexDocument.json',\n true,\n this.converter.compressList\n )\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {writePromise: () => writeFile(path, JSON.stringify(node))},\n true\n );\n }\n }\n\n /**\n * Load 3DNodeIndexDocument data from file on disk\n * @returns 3DNodeIndexDocument object\n */\n private async load(): Promise<Node3DIndexDocument> {\n if (this.data) {\n return this.data;\n }\n const path = this.id;\n const parentNodePath = join(this.converter.layers0Path, 'nodes', path);\n let parentNodeFileName = 'index.json';\n if (this.converter.options.slpk) {\n parentNodeFileName = '3dNodeIndexDocument.json';\n }\n return (await openJson(parentNodePath, parentNodeFileName)) as Node3DIndexDocument;\n }\n\n /**\n * Unload the Node data\n */\n private flush(): void {\n this.data = null;\n }\n\n /**\n * Create root node of the tree\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param converter - I3SConverter instance\n * @returns instance of NodeIndexDocument\n */\n static async createRootNode(\n boundingVolumes: BoundingVolumes,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const rootData = NodeIndexDocument.createRootNodeIndexDocument(boundingVolumes);\n const rootNode = await new NodeIndexDocument(0, converter).addData(rootData);\n return rootNode;\n }\n\n /**\n * Create NodeIndexDocument instance\n * @param parentNode - parent NodeIndexDocument\n * @param boundingVolumes - MBS and OOB bounding volumes data\n * @param lodSelection - LOD metrics data\n * @param nodeInPage - node data in node pages\n * @param resources - resources extracted from gltf/b3dm file\n * @param converter - I3SConverter instance\n * @returns NodeIndexDocument instance\n */\n static async createNode(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources,\n converter: I3SConverter\n ): Promise<NodeIndexDocument> {\n const data = await NodeIndexDocument.createNodeIndexDocument(\n parentNode,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n const node = await new NodeIndexDocument(nodeInPage.index, converter).addData(data);\n return node;\n }\n\n /**\n * Form 3DNodeIndexDocument data for the root node\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n static createRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate());\n }\n\n /**\n * Create a new Node3DIndexDocument\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n static async createNodeIndexDocument(\n parentNode: NodeIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SConvertedResources\n ): Promise<Node3DIndexDocument> {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index!;\n const parentNodeData = await parentNode.load();\n const nodeData = {\n version: parentNodeData.version,\n id: nodeId.toString(),\n level: parentNodeData.level! + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNodeData.mbs,\n obb: parentNodeData.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate());\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n parentNode.converter.layers0?.attributeStorageInfo?.length\n ) {\n node.attributeData = [];\n const minimumLength =\n attributes.length < parentNode.converter.layers0.attributeStorageInfo.length\n ? attributes.length\n : parentNode.converter.layers0.attributeStorageInfo.length;\n for (let index = 0; index < minimumLength; index++) {\n const folderName = parentNode.converter.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n}\n"],"mappings":"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"}
@@ -1,16 +1,15 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
1
  import { join } from 'path';
3
2
  import transform from 'json-map-transform';
4
- import { METADATA as metadataTemplate } from '../json-templates/metadata';
5
- import { isFileExists, openJson } from '../../lib/utils/file-utils';
3
+ import { METADATA as metadataTemplate } from "../json-templates/metadata.js";
4
+ import { isFileExists, openJson } from "../../lib/utils/file-utils.js";
6
5
  export default class NodePages {
7
6
  constructor(writeFileFunc, nodesPerPage, converter) {
8
- _defineProperty(this, "nodesPerPage", void 0);
9
- _defineProperty(this, "nodesCounter", void 0);
10
- _defineProperty(this, "writeFile", void 0);
11
- _defineProperty(this, "converter", void 0);
12
- _defineProperty(this, "nodePages", void 0);
13
- _defineProperty(this, "length", 0);
7
+ this.nodesPerPage = void 0;
8
+ this.nodesCounter = void 0;
9
+ this.writeFile = void 0;
10
+ this.converter = void 0;
11
+ this.nodePages = void 0;
12
+ this.length = 0;
14
13
  this.nodesPerPage = nodesPerPage;
15
14
  this.nodesCounter = 0;
16
15
  this.nodePages = [{}];
@@ -27,7 +26,7 @@ export default class NodePages {
27
26
  let fileName;
28
27
  if (this.converter.options.slpk) {
29
28
  filePath = join(this.converter.layers0Path, 'nodepages');
30
- fileName = "".concat(nodePageId.toString(), ".json");
29
+ fileName = `${nodePageId.toString()}.json`;
31
30
  } else {
32
31
  filePath = join(this.converter.layers0Path, 'nodepages', nodePageId.toString());
33
32
  fileName = 'index.json';
@@ -44,7 +43,7 @@ export default class NodePages {
44
43
  } = this.getNodePageFileName(nodePageId);
45
44
  const fullName = join(filePath, fileName);
46
45
  if (await isFileExists(fullName)) {
47
- console.log("load ".concat(fullName, "."));
46
+ console.log(`load ${fullName}.`);
48
47
  return await openJson(filePath, fileName);
49
48
  } else {
50
49
  return {
@@ -112,7 +111,7 @@ export default class NodePages {
112
111
  const nodePageStr = JSON.stringify(nodePage);
113
112
  if (this.converter.options.slpk) {
114
113
  await this.converter.writeQueue.enqueue({
115
- archiveKey: "nodePages/".concat(nodePageIndex.toString(), ".json.gz"),
114
+ archiveKey: `nodePages/${nodePageIndex.toString()}.json.gz`,
116
115
  writePromise: () => this.writeFile(filePath, nodePageStr, fileName, true, this.converter.compressList)
117
116
  }, true);
118
117
  } else {
@@ -142,8 +141,8 @@ export default class NodePages {
142
141
  const nodePageStr = JSON.stringify(nodePage);
143
142
  const slpkPath = join(this.converter.layers0Path, 'nodepages');
144
143
  await this.converter.writeQueue.enqueue({
145
- archiveKey: "nodePages/".concat(index.toString(), ".json.gz"),
146
- writePromise: () => this.writeFile(slpkPath, nodePageStr, "".concat(index.toString(), ".json"))
144
+ archiveKey: `nodePages/${index.toString()}.json.gz`,
145
+ writePromise: () => this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
147
146
  });
148
147
  }
149
148
  await this.saveMetadata();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-pages.js","names":["join","transform","METADATA","metadataTemplate","isFileExists","openJson","NodePages","constructor","writeFileFunc","nodesPerPage","converter","nodesCounter","writeFile","nodePages","length","nodes","useWriteFunction","func","getNodePageFileName","nodePageId","filePath","fileName","options","slpk","layers0Path","toString","loadNodePage","fullName","console","log","getPageIndexByNodeId","id","Math","floor","getPageByNodeId","pageIndex","instantNodeWriting","getNodeById","nodePage","nodeIndex","addChildRelation","parentId","childId","_parentNode$children","undefined","parentNode","children","push","saveNode","node","index","currentNodePage","updateResourceInMesh","nodePageIndex","nodeToUpdate","updateAll","nodePageStr","JSON","stringify","writeQueue","enqueue","archiveKey","writePromise","compressList","saveMetadata","metadata","nodeCount","compress","save","entries","slpkPath","nodePagePath","mesh","isFinite","geometry","resource","data","Object","assign","updateMaterialByNodeId","materialId","material","definition","updateVertexCountByNodeId","vertexCount","updateNodeAttributeByNodeId","attribute","updateFeatureCountByNodeId","featureCount","updateTexelCountHintByNodeId","texelCountHint"],"sources":["../../../src/i3s-converter/helpers/node-pages.ts"],"sourcesContent":["import {join} from 'path';\nimport transform from 'json-map-transform';\nimport {METADATA as metadataTemplate} from '../json-templates/metadata';\nimport {NodeInPage} from '@loaders.gl/i3s';\nimport {isFileExists, openJson} from '../../lib/utils/file-utils';\nimport I3SConverter from '../i3s-converter';\n\n/**\n * class NodePages - wrapper of nodePages array\n *\n * @example\n * import {writeFile} from './helpers/write-file';\n *\n * // create an instance of the class\n * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n * ...\n * // push root node\n * const parent = await nodePages.push({\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: []\n });\n * ...\n * // push node with parent relation\n * const nodeInPage = {\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: [],\n mesh: {\n geometry: {\n definition: 0\n }\n }\n };\n * const node = await this.nodePages.push(nodeInPage, parent.index);\n * ...\n * // save all the nodePages in the end of pushing all the nodes\n * await this.nodePages.save(layers0path);\n */\nexport default class NodePages {\n readonly nodesPerPage: number;\n nodesCounter: number;\n writeFile: (...args) => Promise<null | string>;\n converter: I3SConverter;\n readonly nodePages: {nodes: NodeInPage[]}[];\n readonly length: number = 0;\n\n /**\n * @constructs\n * Create a nodePages instance.\n * @param writeFileFunc - function to save one nodePage into a file\n * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met\n */\n constructor(writeFileFunc, nodesPerPage, converter: I3SConverter) {\n this.nodesPerPage = nodesPerPage;\n this.nodesCounter = 0;\n // @ts-expect-error\n this.nodePages = [{}];\n this.nodePages[0].nodes = [];\n this.writeFile = writeFileFunc;\n this.converter = converter;\n this.length = 0;\n }\n\n /**\n * Setup function to save node pages\n * @param func - function which should be used to save node pages\n */\n useWriteFunction(func: (...args) => Promise<null | string>): void {\n this.writeFile = func;\n }\n\n /**\n * Get file path and file name of the node page with the particular id\n * @param nodePageId - node page id\n * @returns file path and file name\n */\n private getNodePageFileName(nodePageId): {filePath: string; fileName: string} {\n let filePath;\n let fileName;\n if (this.converter.options.slpk) {\n filePath = join(this.converter.layers0Path, 'nodepages');\n fileName = `${nodePageId.toString()}.json`;\n } else {\n filePath = join(this.converter.layers0Path, 'nodepages', nodePageId.toString());\n fileName = 'index.json';\n }\n return {filePath, fileName};\n }\n\n /**\n * Load node page from a file on the disk\n * @param nodePageId - node page id\n * @returns - node page data\n */\n private async loadNodePage(nodePageId: number): Promise<{nodes: NodeInPage[]}> {\n const {filePath, fileName} = this.getNodePageFileName(nodePageId);\n const fullName = join(filePath, fileName);\n if (await isFileExists(fullName)) {\n console.log(`load ${fullName}.`); // eslint-disable-line\n return (await openJson(filePath, fileName)) as {nodes: NodeInPage[]};\n } else {\n return {nodes: []};\n }\n }\n\n /**\n * Get nodepage id by node id\n * @param id node id\n * @returns node page id\n */\n private getPageIndexByNodeId(id: number): number {\n return Math.floor(id / this.nodesPerPage);\n }\n\n /**\n * Get node page data by node id\n * @param id node id\n * @returns node page data\n */\n private async getPageByNodeId(id: number): Promise<{nodes: NodeInPage[]}> {\n const pageIndex = this.getPageIndexByNodeId(id);\n if (this.converter.options.instantNodeWriting) {\n return await this.loadNodePage(pageIndex);\n }\n return this.nodePages[pageIndex];\n }\n\n /**\n * Get the node by its end-to-end index\n * @param id - end-to-end index of the node\n * @return the node object\n */\n async getNodeById(id: number, nodePage?: {nodes: NodeInPage[]}): Promise<NodeInPage> {\n const nodeIndex = id % this.nodesPerPage;\n nodePage = nodePage || (await this.getPageByNodeId(id));\n return nodePage.nodes[nodeIndex];\n }\n\n /**\n * Add a child id into the parent node.children array\n * @param parentId - end-to-end parent node index\n * @param childId - end-to-end child node index\n */\n private async addChildRelation(parentId: number | undefined, childId: number): Promise<void> {\n if (parentId === null || parentId === undefined) {\n return;\n }\n const parentNode = await this.getNodeById(parentId);\n parentNode.children?.push(childId);\n await this.saveNode(parentNode);\n }\n\n /**\n * Put new node in nodePages array\n * @param node - node object\n * @param parentId - index of parent node\n * @return\n */\n async push(node: NodeInPage, parentId?: number): Promise<NodeInPage> {\n node.index = this.nodesCounter++;\n if (!this.converter.options.instantNodeWriting) {\n let currentNodePage = this.nodePages[this.nodePages.length - 1];\n if (currentNodePage.nodes.length === this.nodesPerPage) {\n currentNodePage = {nodes: []};\n this.nodePages.push(currentNodePage);\n }\n currentNodePage.nodes.push(node);\n }\n await this.addChildRelation(parentId, node.index);\n NodePages.updateResourceInMesh(node);\n await this.saveNode(node);\n return node;\n }\n\n /**\n * Save node to the file on the disk\n * @param node - node data\n */\n async saveNode(node: NodeInPage): Promise<void> {\n if (!this.converter.options.instantNodeWriting) {\n return;\n } else {\n const nodePageIndex = this.getPageIndexByNodeId(node.index);\n const nodePage = await this.getPageByNodeId(node.index);\n const {filePath, fileName} = this.getNodePageFileName(nodePageIndex);\n const nodeToUpdate = await this.getNodeById(node.index, nodePage);\n if (nodeToUpdate) {\n NodePages.updateAll(nodeToUpdate, node);\n } else {\n nodePage.nodes.push(node);\n }\n const nodePageStr = JSON.stringify(nodePage);\n if (this.converter.options.slpk) {\n await this.converter.writeQueue.enqueue(\n {\n archiveKey: `nodePages/${nodePageIndex.toString()}.json.gz`,\n writePromise: () =>\n this.writeFile(filePath, nodePageStr, fileName, true, this.converter.compressList)\n },\n true\n );\n } else {\n await this.converter.writeQueue.enqueue(\n {\n writePromise: () => this.writeFile(filePath, nodePageStr)\n },\n true\n );\n }\n }\n }\n\n /**\n * Save metadata file (for slpk only)\n */\n async saveMetadata(): Promise<void> {\n const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate());\n const compress = false;\n await this.converter.writeQueue.enqueue({\n archiveKey: 'metadata.json',\n writePromise: () =>\n this.writeFile(\n this.converter.layers0Path,\n JSON.stringify(metadata),\n 'metadata.json',\n compress\n )\n });\n }\n\n /**\n * Save all the node pages\n * Run this method when all nodes is pushed in nodePages\n */\n async save(): Promise<void> {\n if (this.converter.options.instantNodeWriting) {\n await this.saveMetadata();\n return;\n }\n if (this.converter.options.slpk) {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const slpkPath = join(this.converter.layers0Path, 'nodepages');\n await this.converter.writeQueue.enqueue({\n archiveKey: `nodePages/${index.toString()}.json.gz`,\n writePromise: () => this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)\n });\n }\n await this.saveMetadata();\n } else {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const nodePagePath = join(this.converter.layers0Path, 'nodepages', index.toString());\n await this.converter.writeQueue.enqueue({\n writePromise: () => this.writeFile(nodePagePath, nodePageStr)\n });\n }\n }\n }\n\n /**\n * Update resource index in node.mesh object\n * @param node - node object\n */\n static updateResourceInMesh(node: NodeInPage): void {\n if (node.mesh && isFinite(node.index)) {\n node.mesh.geometry.resource = node.index;\n }\n }\n\n /**\n * Update all fields in the node excluding id\n * @param node - node object\n * @param data - NodeInPage data to replace original data\n */\n static updateAll(node: NodeInPage, data: NodeInPage): NodeInPage {\n Object.assign(node, data, {index: node.index});\n NodePages.updateResourceInMesh(node);\n return node;\n }\n\n /**\n * Update material in node.mesh object by node id\n * @param id - end-to-end index of the node\n * @param materialId - id from scene layer materialDefinitions\n */\n static updateMaterialByNodeId(node: NodeInPage, materialId: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.material = {\n definition: materialId,\n resource: node.index\n };\n }\n\n /**\n * Update vertexCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param vertexCount - vertex count for particular node\n */\n static updateVertexCountByNodeId(node: NodeInPage, vertexCount: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.vertexCount = vertexCount;\n }\n\n /**\n * Update resource in node.mesh.attribute object by node id\n * @param node - node object\n */\n static updateNodeAttributeByNodeId(node: NodeInPage): void {\n if (!node.mesh || !node.index) {\n return;\n }\n node.mesh.attribute.resource = node.index;\n }\n\n /**\n * Update featureCount in node.mesh.geometry object by node id\n * @param node - node object\n * @param featureCount - features count of the node\n */\n static updateFeatureCountByNodeId(node: NodeInPage, featureCount: number): void {\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.featureCount = featureCount;\n }\n\n /**\n * Update texelCountHint in node.mesh.material object by node id\n * @param node - node object\n * @param texelCountHint - texelCountHint of particular node\n */\n static updateTexelCountHintByNodeId(node: NodeInPage, texelCountHint: number): void {\n if (!node.mesh || !node.mesh.material) {\n return;\n }\n node.mesh.material.texelCountHint = texelCountHint;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GLTFPrimitiveModeString } from '../types';
1
+ import { GLTFPrimitiveModeString } from "../types.js";
2
2
  import { EXT_STRUCTURAL_METADATA, GLTFLoader } from '@loaders.gl/gltf';
3
3
  import { parse } from '@loaders.gl/core';
4
4
  import { EXT_FEATURE_METADATA } from '@loaders.gl/gltf';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocess-3d-tiles.js","names":["GLTFPrimitiveModeString","EXT_STRUCTURAL_METADATA","GLTFLoader","parse","EXT_FEATURE_METADATA","GLTF_PRIMITIVE_MODES","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","analyzeTileContent","tileContent","defaultResult","meshTopologyTypes","Set","metadataClasses","gltfArrayBuffer","gltfData","gltf","normalize","loadBuffers","loadImages","decompressMeshes","json","getMeshTypesFromGLTF","getMetadataClassesFromGLTF","gltfJson","result","mesh","meshes","primitive","primitives","mode","add","_gltfJson$extensions","_gltfJson$extensions$","_gltfJson$extensions$2","_gltfJson$extensions2","_gltfJson$extensions3","_gltfJson$extensions4","extFeatureMetadataClasses","extensions","schema","classes","classKey","Object","keys","extStructuralMetadataClasses","mergePreprocessData","object1","object2","type","metadataClass"],"sources":["../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"sourcesContent":["import {Tiles3DTileContent} from '@loaders.gl/3d-tiles';\nimport {GLTFPrimitiveModeString, PreprocessData} from '../types';\nimport {\n EXT_STRUCTURAL_METADATA,\n GLTF,\n GLTFLoader,\n GLTF_EXT_feature_metadata_GLTF,\n GLTF_EXT_structural_metadata_GLTF\n} from '@loaders.gl/gltf';\nimport {parse} from '@loaders.gl/core';\nimport {EXT_FEATURE_METADATA} from '@loaders.gl/gltf';\n\n/**\n * glTF primitive modes\n * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode\n */\nexport const GLTF_PRIMITIVE_MODES = [\n GLTFPrimitiveModeString.POINTS, // 0\n GLTFPrimitiveModeString.LINES, // 1\n GLTFPrimitiveModeString.LINE_LOOP, // 2\n GLTFPrimitiveModeString.LINE_STRIP, // 3\n GLTFPrimitiveModeString.TRIANGLES, // 4\n GLTFPrimitiveModeString.TRIANGLE_STRIP, // 5\n GLTFPrimitiveModeString.TRIANGLE_FAN // 6\n];\n\n/**\n * Analyze tile content. This function is used during preprocess stage of\n * conversion\n * @param tileContent - 3DTiles tile content ArrayBuffer\n * @returns\n */\nexport const analyzeTileContent = async (\n tileContent: Tiles3DTileContent | null\n): Promise<PreprocessData> => {\n const defaultResult = {\n meshTopologyTypes: new Set<GLTFPrimitiveModeString>(),\n metadataClasses: new Set<string>()\n };\n if (!tileContent?.gltfArrayBuffer) {\n return defaultResult;\n }\n\n const gltfData = await parse(tileContent.gltfArrayBuffer, GLTFLoader, {\n gltf: {normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false}\n });\n const gltf = gltfData.json;\n\n if (!gltf) {\n return defaultResult;\n }\n const meshTopologyTypes = getMeshTypesFromGLTF(gltf);\n const metadataClasses = getMetadataClassesFromGLTF(gltf);\n return {\n meshTopologyTypes,\n metadataClasses\n };\n};\n\n/**\n * Get mesh topology types that the glb content has\n * @param gltfJson - JSON part of GLB content\n * @returns array of mesh types found\n */\nconst getMeshTypesFromGLTF = (gltfJson: GLTF): Set<GLTFPrimitiveModeString> => {\n const result: Set<GLTFPrimitiveModeString> = new Set();\n for (const mesh of gltfJson.meshes || []) {\n for (const primitive of mesh.primitives) {\n let {mode} = primitive;\n if (typeof mode !== 'number') {\n mode = 4; // Default is 4 - TRIANGLES\n }\n result.add(GLTF_PRIMITIVE_MODES[mode]);\n }\n }\n return result;\n};\n\n/**\n * Get feature metadata classes from glTF\n * The tileset might contain multiple metadata classes provided by EXT_feature_metadata and EXT_structural_metadata extensions.\n * Every class is a set of properties. But I3S can consume only one set of properties.\n * On the pre-process we collect all classes from the tileset in order to show the prompt to select one class for conversion to I3S.\n * @param gltfJson - JSON part of GLB content\n * @returns array of classes\n */\nconst getMetadataClassesFromGLTF = (gltfJson: GLTF): Set<string> => {\n const result: Set<string> = new Set();\n\n // Try to parse from EXT_feature_metadata\n const extFeatureMetadataClasses = (\n gltfJson.extensions?.[EXT_FEATURE_METADATA] as GLTF_EXT_feature_metadata_GLTF\n )?.schema?.classes;\n\n if (extFeatureMetadataClasses) {\n for (const classKey of Object.keys(extFeatureMetadataClasses)) {\n result.add(classKey);\n }\n }\n\n // Try to parse from EXT_structural_metadata\n const extStructuralMetadataClasses = (\n gltfJson.extensions?.[EXT_STRUCTURAL_METADATA] as GLTF_EXT_structural_metadata_GLTF\n )?.schema?.classes;\n if (extStructuralMetadataClasses) {\n for (const classKey of Object.keys(extStructuralMetadataClasses)) {\n result.add(classKey);\n }\n }\n\n return result;\n};\n\n/**\n * Merge object2 into object1\n * @param object1\n * @param object2\n * @returns nothing\n */\nexport const mergePreprocessData = (object1: PreprocessData, object2: PreprocessData): void => {\n // Merge topology mesh types info\n for (const type of object2.meshTopologyTypes) {\n object1.meshTopologyTypes.add(type);\n }\n\n // Merge feature metadata classes\n for (const metadataClass of object2.metadataClasses) {\n object1.metadataClasses.add(metadataClass);\n }\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-traversal.js","names":["traverseDatasetWith","tile","traversalProps","processTile","postprocessTile","maxDepth","level","arguments","length","undefined","processResults","newTraversalProps","push","childTile","children"],"sources":["../../../src/i3s-converter/helpers/tileset-traversal.ts"],"sourcesContent":["import {Tiles3DTileJSONPostprocessed} from '@loaders.gl/3d-tiles';\nimport {NodeIndexDocument} from './node-index-document';\nimport {Matrix4} from '@math.gl/core';\n\n/** Traversal props for the conversion stage */\nexport type TraversalConversionProps = {\n /** Transformation matrix for the specific tile */\n transform: Matrix4;\n /** Parent nodes of the converted tile. Multiple nodes can be if one tile is converted to multiple nodes*/\n parentNodes: NodeIndexDocument[];\n};\n\n/**\n * Travesal of 3DTile tiles tree with making specific actions with each tile\n * @param tile - 3DTiles tile JSON metadata\n * @param traversalProps - traversal props used to pass data through recursive calls\n * @param processTile - callback to make some actions with the current tile\n * @param postprocessTile - callback to make some action after processing of the current tile and all the subtree\n * @param maxDepth - max recursive calls number the travesal function will do. If not set, the traversal function will\n * go through all the tree.\n * This value is used to limit the convertion with only partial number of levels of the tileset\n * @param level - counter to keep recursive calls number of the tiles tree. This value used to be able to break\n * traversal at the some level of the tree\n * @returns void\n */\nexport const traverseDatasetWith = async <TProps>(\n tile: Tiles3DTileJSONPostprocessed,\n traversalProps: TProps,\n processTile: (tile: Tiles3DTileJSONPostprocessed, traversalProps: TProps) => Promise<TProps>,\n postprocessTile?: (processResults: TProps[], currentTraversalProps: TProps) => Promise<void>,\n maxDepth?: number,\n level = 0\n): Promise<void> => {\n if (maxDepth && level > maxDepth) {\n return;\n }\n const processResults: TProps[] = [];\n const newTraversalProps: TProps = await processTile(tile, traversalProps);\n processResults.push(newTraversalProps);\n for (const childTile of tile.children) {\n await traverseDatasetWith(\n childTile,\n newTraversalProps,\n processTile,\n postprocessTile,\n maxDepth,\n level + 1\n );\n }\n postprocessTile && (await postprocessTile(processResults, traversalProps));\n};\n"],"mappings":"AAyBA,OAAO,MAAMA,mBAAmB,GAAG,eAAAA,CACjCC,IAAkC,EAClCC,cAAsB,EACtBC,WAA4F,EAC5FC,eAA4F,EAC5FC,QAAiB,EAEC;EAAA,IADlBC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;EAET,IAAIF,QAAQ,IAAIC,KAAK,GAAGD,QAAQ,EAAE;IAChC;EACF;EACA,MAAMK,cAAwB,GAAG,EAAE;EACnC,MAAMC,iBAAyB,GAAG,MAAMR,WAAW,CAACF,IAAI,EAAEC,cAAc,CAAC;EACzEQ,cAAc,CAACE,IAAI,CAACD,iBAAiB,CAAC;EACtC,KAAK,MAAME,SAAS,IAAIZ,IAAI,CAACa,QAAQ,EAAE;IACrC,MAAMd,mBAAmB,CACvBa,SAAS,EACTF,iBAAiB,EACjBR,WAAW,EACXC,eAAe,EACfC,QAAQ,EACRC,KAAK,GAAG,CACV,CAAC;EACH;EACAF,eAAe,KAAK,MAAMA,eAAe,CAACM,cAAc,EAAER,cAAc,CAAC,CAAC;AAC5E,CAAC"}
@@ -80,6 +80,7 @@ export default class I3SConverter {
80
80
  instantNodeWriting?: boolean;
81
81
  inquirer?: Promise<unknown>;
82
82
  metadataClass?: string;
83
+ analyze?: boolean;
83
84
  }): Promise<string>;
84
85
  /**
85
86
  * Preprocess stage of the tile converter. Traverse all the tiles tree and
@@ -94,6 +95,11 @@ export default class I3SConverter {
94
95
  * @returns - nothing
95
96
  */
96
97
  private analyzeTile;
98
+ /**
99
+ * Select metadata class associated with the set of feature attributes
100
+ * @returns true if the metadata class has been successfully selected
101
+ */
102
+ private selectMetadataClass;
97
103
  /**
98
104
  * Convert and save the layer and embedded tiles
99
105
  * @param outputPath - path to save output data
@@ -1 +1 @@
1
- {"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}