@loaders.gl/tile-converter 4.0.0-alpha.9 → 4.0.0-beta.1

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 (300) hide show
  1. package/bin/i3s-server.js +4 -0
  2. package/bin/slpk-extractor.js +4 -0
  3. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +5 -5
  4. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  5. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +10 -5
  6. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts +10 -0
  8. package/dist/3d-tiles-converter/helpers/load-i3s.d.ts.map +1 -0
  9. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +2 -1
  10. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -1
  11. package/dist/converter.min.js +172 -103
  12. package/dist/deps-installer/deps-installer.d.ts +3 -2
  13. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  14. package/dist/dist.min.js +32715 -32567
  15. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +97 -117
  16. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  17. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +24 -22
  18. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  19. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js +63 -0
  20. package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  21. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  22. package/dist/es5/converter-cli.js +25 -65
  23. package/dist/es5/converter-cli.js.map +1 -1
  24. package/dist/es5/deps-installer/deps-installer.js +113 -39
  25. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  26. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +45 -15
  27. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  28. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  29. package/dist/es5/i3s-converter/helpers/feature-attributes.js +8 -18
  30. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
  31. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +83 -43
  32. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  33. package/dist/es5/i3s-converter/helpers/geometry-converter.js +100 -102
  34. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  35. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  36. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +70 -4
  37. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
  38. package/dist/es5/i3s-converter/helpers/node-index-document.js +3 -2
  39. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
  40. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +47 -12
  41. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  42. package/dist/es5/i3s-converter/i3s-converter.js +187 -174
  43. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  44. package/dist/es5/i3s-converter/types.js +11 -11
  45. package/dist/es5/i3s-converter/types.js.map +1 -1
  46. package/dist/es5/i3s-server/README.md +46 -2
  47. package/dist/es5/i3s-server/app.js +23 -15
  48. package/dist/es5/i3s-server/app.js.map +1 -1
  49. package/dist/es5/i3s-server/bin/www.js +33 -0
  50. package/dist/es5/i3s-server/bin/www.js.map +1 -0
  51. package/dist/es5/i3s-server/controllers/index-controller.js +23 -22
  52. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  53. package/dist/es5/i3s-server/controllers/slpk-controller.js +35 -38
  54. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
  55. package/dist/es5/i3s-server/routes/index.js +2 -2
  56. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  57. package/dist/es5/i3s-server/routes/slpk-router.js +14 -13
  58. package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -1
  59. package/dist/es5/i3s-server/utils/create-scene-server.js +7 -4
  60. package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -1
  61. package/dist/es5/i3s-server/utils/server-utils.js +49 -0
  62. package/dist/es5/i3s-server/utils/server-utils.js.map +1 -0
  63. package/dist/es5/lib/utils/cli-utils.js +57 -0
  64. package/dist/es5/lib/utils/cli-utils.js.map +1 -0
  65. package/dist/es5/lib/utils/compress-util.js +1 -1
  66. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  67. package/dist/es5/lib/utils/lod-conversion-utils.js +10 -4
  68. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  69. package/dist/es5/pgm-loader.js +11 -3
  70. package/dist/es5/pgm-loader.js.map +1 -1
  71. package/dist/es5/slpk-extractor/slpk-extractor.js +171 -0
  72. package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -0
  73. package/dist/es5/slpk-extractor-cli.js +117 -0
  74. package/dist/es5/slpk-extractor-cli.js.map +1 -0
  75. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +51 -58
  76. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  77. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +12 -11
  78. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  79. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js +32 -0
  80. package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
  81. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  82. package/dist/esm/converter-cli.js +8 -48
  83. package/dist/esm/converter-cli.js.map +1 -1
  84. package/dist/esm/deps-installer/deps-installer.js +38 -12
  85. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  86. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +28 -11
  87. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  88. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  89. package/dist/esm/i3s-converter/helpers/feature-attributes.js +10 -8
  90. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
  91. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +77 -34
  92. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  93. package/dist/esm/i3s-converter/helpers/geometry-converter.js +60 -61
  94. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  95. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  96. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +33 -4
  97. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
  98. package/dist/esm/i3s-converter/helpers/node-index-document.js +2 -1
  99. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
  100. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +37 -12
  101. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
  102. package/dist/esm/i3s-converter/i3s-converter.js +101 -73
  103. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  104. package/dist/esm/i3s-converter/types.js +9 -9
  105. package/dist/esm/i3s-converter/types.js.map +1 -1
  106. package/dist/esm/i3s-server/README.md +46 -2
  107. package/dist/esm/i3s-server/app.js +13 -11
  108. package/dist/esm/i3s-server/app.js.map +1 -1
  109. package/dist/esm/i3s-server/bin/i3s-server.min.js +516 -0
  110. package/dist/esm/i3s-server/bin/www.js +30 -0
  111. package/dist/esm/i3s-server/bin/www.js.map +1 -0
  112. package/dist/esm/i3s-server/controllers/index-controller.js +4 -7
  113. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  114. package/dist/esm/i3s-server/controllers/slpk-controller.js +9 -26
  115. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
  116. package/dist/esm/i3s-server/routes/index.js +1 -1
  117. package/dist/esm/i3s-server/routes/index.js.map +1 -1
  118. package/dist/esm/i3s-server/routes/slpk-router.js +5 -11
  119. package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -1
  120. package/dist/esm/i3s-server/utils/create-scene-server.js +2 -5
  121. package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -1
  122. package/dist/esm/i3s-server/utils/server-utils.js +40 -0
  123. package/dist/esm/i3s-server/utils/server-utils.js.map +1 -0
  124. package/dist/esm/lib/utils/cli-utils.js +47 -0
  125. package/dist/esm/lib/utils/cli-utils.js.map +1 -0
  126. package/dist/esm/lib/utils/compress-util.js +1 -1
  127. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  128. package/dist/esm/lib/utils/lod-conversion-utils.js +6 -4
  129. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  130. package/dist/esm/pgm-loader.js +7 -4
  131. package/dist/esm/pgm-loader.js.map +1 -1
  132. package/dist/esm/slpk-extractor/slpk-extractor.js +63 -0
  133. package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -0
  134. package/dist/esm/slpk-extractor-cli.js +74 -0
  135. package/dist/esm/slpk-extractor-cli.js.map +1 -0
  136. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +15 -2
  137. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  138. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +1 -2
  139. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  140. package/dist/i3s-converter/helpers/feature-attributes.d.ts +8 -8
  141. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -1
  142. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  143. package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -9
  144. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  145. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +3 -3
  146. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  147. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +15 -0
  148. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -1
  149. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
  150. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +4 -5
  151. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
  152. package/dist/i3s-converter/i3s-converter.d.ts +3 -2
  153. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  154. package/dist/i3s-converter/types.d.ts +48 -7
  155. package/dist/i3s-converter/types.d.ts.map +1 -1
  156. package/dist/i3s-server/app.d.ts +1 -2
  157. package/dist/i3s-server/app.d.ts.map +1 -1
  158. package/dist/i3s-server/bin/www.d.ts +3 -0
  159. package/dist/i3s-server/bin/www.d.ts.map +1 -0
  160. package/dist/i3s-server/controllers/index-controller.d.ts +6 -1
  161. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -1
  162. package/dist/i3s-server/controllers/slpk-controller.d.ts +13 -2
  163. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -1
  164. package/dist/i3s-server/routes/index.d.ts +1 -2
  165. package/dist/i3s-server/routes/index.d.ts.map +1 -1
  166. package/dist/i3s-server/routes/slpk-router.d.ts +2 -2
  167. package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -1
  168. package/dist/i3s-server/utils/create-scene-server.d.ts +11 -5
  169. package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -1
  170. package/dist/i3s-server/utils/server-utils.d.ts +24 -0
  171. package/dist/i3s-server/utils/server-utils.d.ts.map +1 -0
  172. package/dist/lib/utils/cli-utils.d.ts +34 -0
  173. package/dist/lib/utils/cli-utils.d.ts.map +1 -0
  174. package/dist/lib/utils/lod-conversion-utils.d.ts +2 -2
  175. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  176. package/dist/pgm-loader.d.ts +9 -2
  177. package/dist/pgm-loader.d.ts.map +1 -1
  178. package/dist/slpk-extractor/slpk-extractor.d.ts +23 -0
  179. package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -0
  180. package/dist/slpk-extractor-cli.d.ts +17 -0
  181. package/dist/slpk-extractor-cli.d.ts.map +1 -0
  182. package/dist/slpk-extractor.min.js +189 -0
  183. package/package.json +27 -21
  184. package/src/3d-tiles-converter/3d-tiles-converter.ts +65 -69
  185. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +23 -19
  186. package/src/3d-tiles-converter/helpers/load-i3s.ts +52 -0
  187. package/src/3d-tiles-converter/helpers/texture-atlas.ts +6 -2
  188. package/src/converter-cli.ts +16 -74
  189. package/src/deps-installer/deps-installer.ts +56 -11
  190. package/src/i3s-converter/helpers/batch-ids-extensions.ts +77 -32
  191. package/src/i3s-converter/helpers/coordinate-converter.ts +1 -2
  192. package/src/i3s-converter/helpers/feature-attributes.ts +23 -18
  193. package/src/i3s-converter/helpers/geometry-attributes.ts +81 -44
  194. package/src/i3s-converter/helpers/geometry-converter.ts +149 -126
  195. package/src/i3s-converter/helpers/gltf-attributes.ts +9 -10
  196. package/src/i3s-converter/helpers/load-3d-tiles.ts +61 -5
  197. package/src/i3s-converter/helpers/node-index-document.ts +5 -1
  198. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +70 -21
  199. package/src/i3s-converter/i3s-converter.ts +145 -73
  200. package/src/i3s-converter/types.ts +49 -7
  201. package/src/i3s-server/README.md +46 -2
  202. package/src/i3s-server/{app.js → app.ts} +11 -9
  203. package/src/i3s-server/bin/www.ts +38 -0
  204. package/src/i3s-server/controllers/{index-controller.js → index-controller.ts} +10 -9
  205. package/src/i3s-server/controllers/slpk-controller.ts +32 -0
  206. package/src/i3s-server/routes/{index.js → index.ts} +2 -1
  207. package/src/i3s-server/routes/{slpk-router.js → slpk-router.ts} +5 -10
  208. package/src/i3s-server/utils/create-scene-server.ts +20 -0
  209. package/src/i3s-server/utils/server-utils.ts +70 -0
  210. package/src/lib/utils/cli-utils.ts +78 -0
  211. package/src/lib/utils/compress-util.ts +1 -1
  212. package/src/lib/utils/lod-conversion-utils.ts +10 -6
  213. package/src/pgm-loader.ts +15 -7
  214. package/src/slpk-extractor/slpk-extractor.ts +101 -0
  215. package/src/slpk-extractor-cli.ts +128 -0
  216. package/dist/3d-tiles-attributes-worker.d.ts +0 -28
  217. package/dist/3d-tiles-attributes-worker.d.ts.map +0 -1
  218. package/dist/3d-tiles-attributes-worker.js +0 -3
  219. package/dist/3d-tiles-attributes-worker.js.map +0 -7
  220. package/dist/3d-tiles-converter/3d-tiles-converter.js +0 -288
  221. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +0 -269
  222. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -23
  223. package/dist/3d-tiles-converter/helpers/texture-atlas.js +0 -52
  224. package/dist/3d-tiles-converter/json-templates/tileset.js +0 -43
  225. package/dist/bundle.js +0 -5
  226. package/dist/constants.js +0 -4
  227. package/dist/converter-cli.js +0 -280
  228. package/dist/deps-installer/deps-installer.js +0 -63
  229. package/dist/es5/3d-tiles-attributes-worker.js +0 -25
  230. package/dist/es5/3d-tiles-attributes-worker.js.map +0 -1
  231. package/dist/es5/i3s-attributes-worker.js +0 -25
  232. package/dist/es5/i3s-attributes-worker.js.map +0 -1
  233. package/dist/es5/i3s-server/bin/www +0 -102
  234. package/dist/es5/workers/3d-tiles-attributes-worker.js +0 -28
  235. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +0 -1
  236. package/dist/es5/workers/i3s-attributes-worker.js +0 -30
  237. package/dist/es5/workers/i3s-attributes-worker.js.map +0 -1
  238. package/dist/esm/3d-tiles-attributes-worker.js +0 -16
  239. package/dist/esm/3d-tiles-attributes-worker.js.map +0 -1
  240. package/dist/esm/i3s-attributes-worker.js +0 -16
  241. package/dist/esm/i3s-attributes-worker.js.map +0 -1
  242. package/dist/esm/i3s-server/bin/www +0 -102
  243. package/dist/esm/workers/3d-tiles-attributes-worker.js +0 -8
  244. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +0 -1
  245. package/dist/esm/workers/i3s-attributes-worker.js +0 -7
  246. package/dist/esm/workers/i3s-attributes-worker.js.map +0 -1
  247. package/dist/i3s-attributes-worker.d.ts +0 -45
  248. package/dist/i3s-attributes-worker.d.ts.map +0 -1
  249. package/dist/i3s-attributes-worker.js +0 -9
  250. package/dist/i3s-attributes-worker.js.map +0 -7
  251. package/dist/i3s-converter/helpers/batch-ids-extensions.js +0 -138
  252. package/dist/i3s-converter/helpers/coordinate-converter.js +0 -123
  253. package/dist/i3s-converter/helpers/create-scene-server-path.js +0 -28
  254. package/dist/i3s-converter/helpers/feature-attributes.js +0 -216
  255. package/dist/i3s-converter/helpers/geometry-attributes.js +0 -202
  256. package/dist/i3s-converter/helpers/geometry-converter.js +0 -1225
  257. package/dist/i3s-converter/helpers/gltf-attributes.js +0 -128
  258. package/dist/i3s-converter/helpers/load-3d-tiles.js +0 -53
  259. package/dist/i3s-converter/helpers/node-debug.js +0 -120
  260. package/dist/i3s-converter/helpers/node-index-document.js +0 -268
  261. package/dist/i3s-converter/helpers/node-pages.js +0 -316
  262. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +0 -76
  263. package/dist/i3s-converter/helpers/tileset-traversal.js +0 -29
  264. package/dist/i3s-converter/i3s-converter.js +0 -911
  265. package/dist/i3s-converter/json-templates/geometry-definitions.js +0 -87
  266. package/dist/i3s-converter/json-templates/layers.js +0 -139
  267. package/dist/i3s-converter/json-templates/metadata.js +0 -25
  268. package/dist/i3s-converter/json-templates/node.js +0 -89
  269. package/dist/i3s-converter/json-templates/scene-server.js +0 -31
  270. package/dist/i3s-converter/json-templates/shared-resources.js +0 -129
  271. package/dist/i3s-converter/json-templates/store.js +0 -103
  272. package/dist/i3s-converter/types.js +0 -17
  273. package/dist/i3s-server/app.js +0 -22
  274. package/dist/i3s-server/controllers/index-controller.js +0 -23
  275. package/dist/i3s-server/controllers/slpk-controller.js +0 -32
  276. package/dist/i3s-server/routes/index.js +0 -16
  277. package/dist/i3s-server/routes/slpk-router.js +0 -33
  278. package/dist/i3s-server/utils/create-scene-server.js +0 -14
  279. package/dist/index.js +0 -10
  280. package/dist/lib/utils/compress-util.js +0 -257
  281. package/dist/lib/utils/file-utils.js +0 -139
  282. package/dist/lib/utils/geometry-utils.js +0 -18
  283. package/dist/lib/utils/lod-conversion-utils.js +0 -76
  284. package/dist/lib/utils/queue.js +0 -18
  285. package/dist/lib/utils/statistic-utills.js +0 -64
  286. package/dist/lib/utils/write-queue.js +0 -80
  287. package/dist/pgm-loader.js +0 -24
  288. package/dist/workers/3d-tiles-attributes-worker.d.ts +0 -2
  289. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +0 -1
  290. package/dist/workers/3d-tiles-attributes-worker.js +0 -9
  291. package/dist/workers/i3s-attributes-worker.d.ts +0 -2
  292. package/dist/workers/i3s-attributes-worker.d.ts.map +0 -1
  293. package/dist/workers/i3s-attributes-worker.js +0 -5
  294. package/src/3d-tiles-attributes-worker.ts +0 -43
  295. package/src/i3s-attributes-worker.ts +0 -59
  296. package/src/i3s-server/bin/www +0 -102
  297. package/src/i3s-server/controllers/slpk-controller.js +0 -38
  298. package/src/i3s-server/utils/create-scene-server.js +0 -15
  299. package/src/workers/3d-tiles-attributes-worker.ts +0 -6
  300. package/src/workers/i3s-attributes-worker.ts +0 -7
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  var _process$env;
3
- import { load, encode, fetchFile, getLoaderOptions, isBrowser } from '@loaders.gl/core';
3
+ import { load, encode, isBrowser } from '@loaders.gl/core';
4
4
  import { CesiumIonLoader, Tiles3DLoader } from '@loaders.gl/3d-tiles';
5
5
  import { join } from 'path';
6
6
  import { v4 as uuidv4 } from 'uuid';
@@ -22,20 +22,18 @@ import { SHARED_RESOURCES as sharedResourcesTemplate } from './json-templates/sh
22
22
  import { validateNodeBoundingVolumes } from './helpers/node-debug';
23
23
  import { KTX2BasisWriterWorker } from '@loaders.gl/textures';
24
24
  import { ImageWriter } from '@loaders.gl/images';
25
- import { GltfPrimitiveModeString } from './types';
26
- import { getWorkerURL, WorkerFarm } from '@loaders.gl/worker-utils';
27
- import { DracoWriterWorker } from '@loaders.gl/draco';
25
+ import { GLTFPrimitiveModeString } from './types';
26
+ import { WorkerFarm } from '@loaders.gl/worker-utils';
28
27
  import WriteQueue from '../lib/utils/write-queue';
29
- import { I3SAttributesWorker } from '../i3s-attributes-worker';
30
28
  import { BROWSER_ERROR_MESSAGE } from '../constants';
31
29
  import { createdStorageAttribute, createFieldAttribute, createPopupInfo, getAttributeType, getFieldAttributeType } from './helpers/feature-attributes';
32
30
  import { NodeIndexDocument } from './helpers/node-index-document';
33
- import { loadNestedTileset, loadTile3DContent } from './helpers/load-3d-tiles';
31
+ import { isNestedTileset, loadNestedTileset, loadTile3DContent, loadFromArchive } from './helpers/load-3d-tiles';
34
32
  import { Matrix4 } from '@math.gl/core';
35
33
  import { createBoundingVolume } from '@loaders.gl/tiles';
36
34
  import { traverseDatasetWith } from './helpers/tileset-traversal';
37
35
  import { analyzeTileContent, mergePreprocessData } from './helpers/preprocess-3d-tiles';
38
- const ION_DEFAULT_TOKEN = ((_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken) || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ';
36
+ const ION_DEFAULT_TOKEN = (_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.IonToken;
39
37
  const HARDCODED_NODES_PER_PAGE = 64;
40
38
  const _3D_TILES = '3DTILES';
41
39
  const _3D_OBJECT_LAYER_TYPE = '3DObject';
@@ -62,6 +60,7 @@ export default class I3SConverter {
62
60
  _defineProperty(this, "loadOptions", {
63
61
  _nodeWorkers: true,
64
62
  reuseWorkers: true,
63
+ useLocalLibraries: true,
65
64
  basis: {
66
65
  format: 'rgba32',
67
66
  workerUrl: './modules/textures/dist/basis-worker-node.js'
@@ -69,7 +68,8 @@ export default class I3SConverter {
69
68
  draco: {
70
69
  workerUrl: './modules/draco/dist/draco-worker-node.js'
71
70
  },
72
- fetch: {}
71
+ fetch: {},
72
+ modules: {}
73
73
  });
74
74
  _defineProperty(this, "geoidHeightModel", null);
75
75
  _defineProperty(this, "Loader", Tiles3DLoader);
@@ -80,7 +80,8 @@ export default class I3SConverter {
80
80
  _defineProperty(this, "writeQueue", new WriteQueue());
81
81
  _defineProperty(this, "compressList", null);
82
82
  _defineProperty(this, "preprocessData", {
83
- meshTopologyTypes: new Set()
83
+ meshTopologyTypes: new Set(),
84
+ metadataClasses: new Set()
84
85
  });
85
86
  this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE, this);
86
87
  this.options = {};
@@ -122,7 +123,9 @@ export default class I3SConverter {
122
123
  generateTextures,
123
124
  generateBoundingVolumes,
124
125
  instantNodeWriting = false,
125
- mergeMaterials = true
126
+ mergeMaterials = true,
127
+ inquirer,
128
+ metadataClass
126
129
  } = options;
127
130
  this.options = {
128
131
  maxDepth,
@@ -133,7 +136,9 @@ export default class I3SConverter {
133
136
  token,
134
137
  inputUrl,
135
138
  instantNodeWriting,
136
- mergeMaterials
139
+ mergeMaterials,
140
+ inquirer,
141
+ metadataClass
137
142
  };
138
143
  this.compressList = this.options.instantNodeWriting && [] || null;
139
144
  this.validate = Boolean(validate);
@@ -148,15 +153,18 @@ export default class I3SConverter {
148
153
  if (slpk) {
149
154
  this.nodePages.useWriteFunction(writeFileForSlpk);
150
155
  }
151
- await this.loadWorkers();
152
156
  try {
153
157
  const preloadOptions = await this._fetchPreloadOptions();
158
+ let tilesetUrl = inputUrl;
159
+ if (preloadOptions.url) {
160
+ tilesetUrl = preloadOptions.url;
161
+ }
154
162
  if (preloadOptions.headers) {
155
163
  this.loadOptions.fetch = {
156
164
  headers: preloadOptions.headers
157
165
  };
158
166
  }
159
- this.sourceTileset = await load(inputUrl, this.Loader, this.loadOptions);
167
+ this.sourceTileset = await loadFromArchive(tilesetUrl, this.Loader, this.loadOptions);
160
168
  const preprocessResult = await this.preprocessConversion();
161
169
  if (preprocessResult) {
162
170
  await this._createAndSaveTileset(outputPath, tilesetName);
@@ -180,35 +188,66 @@ export default class I3SConverter {
180
188
  const sourceRootTile = this.sourceTileset.root;
181
189
  await traverseDatasetWith(sourceRootTile, null, this.analyzeTile.bind(this), undefined, this.options.maxDepth);
182
190
  const {
183
- meshTopologyTypes
191
+ meshTopologyTypes,
192
+ metadataClasses
184
193
  } = this.preprocessData;
185
194
  console.log("------------------------------------------------");
186
195
  console.log("Preprocess results:");
187
196
  console.log("glTF mesh topology types: ".concat(Array.from(meshTopologyTypes).join(', ')));
197
+ if (metadataClasses.size) {
198
+ console.log("Feature metadata classes have been found: ".concat(Array.from(metadataClasses).join(', ')));
199
+ } else {
200
+ console.log('Feature metadata classes have not been found');
201
+ }
188
202
  console.log("------------------------------------------------");
189
- if (!meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(GltfPrimitiveModeString.TRIANGLE_STRIP)) {
203
+ if (!meshTopologyTypes.has(GLTFPrimitiveModeString.TRIANGLES) && !meshTopologyTypes.has(GLTFPrimitiveModeString.TRIANGLE_STRIP)) {
190
204
  console.log('The tileset is of unsupported mesh topology types. The conversion will be interrupted.');
191
205
  console.log("------------------------------------------------");
192
206
  return false;
193
207
  }
208
+ if (metadataClasses.size > 1) {
209
+ var _this$options$metadat;
210
+ if ((_this$options$metadat = this.options.metadataClass) !== null && _this$options$metadat !== void 0 && _this$options$metadat.length) {
211
+ console.log("".concat(this.options.metadataClass, " has been selected"));
212
+ } else if (this.options.inquirer) {
213
+ const result = await this.options.inquirer.prompt([{
214
+ name: 'metadataClass',
215
+ type: 'list',
216
+ message: 'Select feature metadata data class to convert...',
217
+ choices: Array.from(metadataClasses)
218
+ }]);
219
+ this.options.metadataClass = result.metadataClass;
220
+ console.log("".concat(result.metadataClass, " has been selected"));
221
+ } else {
222
+ console.log("A feature metadata class has not been selected. Start the converter with option \"--metadata-class\". For example, \"npx tile-converter ... --metadata-class ".concat(Array.from(metadataClasses)[0], "\""));
223
+ console.log("------------------------------------------------");
224
+ return false;
225
+ }
226
+ }
194
227
  return true;
195
228
  }
196
229
  async analyzeTile(sourceTile, traversalProps) {
197
- if (sourceTile.type === 'json') {
230
+ const isTileset = isNestedTileset(sourceTile);
231
+ if (isTileset) {
198
232
  await loadNestedTileset(this.sourceTileset, sourceTile, this.loadOptions);
199
233
  return null;
200
234
  }
201
235
  if (sourceTile.id) {
202
236
  console.log("[analyze]: ".concat(sourceTile.id));
203
237
  }
204
- const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {
205
- ...this.loadOptions,
206
- '3d-tiles': {
207
- ...this.loadOptions['3d-tiles'],
208
- loadGLTF: false
209
- }
210
- });
211
- const tilePreprocessData = await analyzeTileContent(sourceTile, tileContent);
238
+ let tileContent = null;
239
+ try {
240
+ tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, {
241
+ ...this.loadOptions,
242
+ '3d-tiles': {
243
+ ...this.loadOptions['3d-tiles'],
244
+ loadGLTF: false
245
+ }
246
+ });
247
+ } catch (error) {
248
+ console.log("[warning]: Failed to load ".concat(sourceTile.contentUrl, ". An I3S tile with empty content will be added to the output tileset"));
249
+ }
250
+ const tilePreprocessData = await analyzeTileContent(tileContent);
212
251
  mergePreprocessData(this.preprocessData, tilePreprocessData);
213
252
  return null;
214
253
  }
@@ -307,8 +346,9 @@ export default class I3SConverter {
307
346
  }
308
347
  }
309
348
  async convertTile(sourceTile, traversalProps) {
310
- if (sourceTile.type === 'json' || sourceTile.type === 'empty') {
311
- if (sourceTile.type === 'json') {
349
+ const isTileset = isNestedTileset(sourceTile);
350
+ if (isTileset || sourceTile.type === 'empty') {
351
+ if (isTileset) {
312
352
  if (sourceTile.id) {
313
353
  console.log("[load]: ".concat(sourceTile.id));
314
354
  }
@@ -347,14 +387,18 @@ export default class I3SConverter {
347
387
  }
348
388
  }
349
389
  async _createNode(parentNode, sourceTile, transformationMatrix) {
350
- var _this$layers, _this$layers$attribut;
351
390
  this._checkAddRefinementTypeForTile(sourceTile);
352
391
  await this._updateTilesetOptions();
353
- const tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);
392
+ let tileContent = null;
393
+ try {
394
+ tileContent = await loadTile3DContent(this.sourceTileset, sourceTile, this.loadOptions);
395
+ } catch (error) {
396
+ console.log("[warning]: Failed to load ".concat(sourceTile.contentUrl));
397
+ }
354
398
  const sourceBoundingVolume = createBoundingVolume(sourceTile.boundingVolume, transformationMatrix, null);
355
399
  let boundingVolumes = createBoundingVolumes(sourceBoundingVolume, this.geoidHeightModel);
356
- const propertyTable = getPropertyTable(tileContent);
357
- if (propertyTable && !((_this$layers = this.layers0) !== null && _this$layers !== void 0 && (_this$layers$attribut = _this$layers.attributeStorageInfo) !== null && _this$layers$attribut !== void 0 && _this$layers$attribut.length)) {
400
+ const propertyTable = getPropertyTable(tileContent, this.options.metadataClass);
401
+ if (propertyTable) {
358
402
  this._convertPropertyTableToNodeAttributes(propertyTable);
359
403
  }
360
404
  const resourcesData = await this._convertResources(sourceTile, transformationMatrix, sourceBoundingVolume, tileContent, parentNode.inPageId, propertyTable);
@@ -401,7 +445,7 @@ export default class I3SConverter {
401
445
  return nodes;
402
446
  }
403
447
  async _convertResources(sourceTile, transformationMatrix, boundingVolume, tileContent, parentId, propertyTable) {
404
- var _this$layers2;
448
+ var _this$layers;
405
449
  if (!this.isContentSupported(sourceTile) || !tileContent) {
406
450
  return null;
407
451
  }
@@ -413,7 +457,7 @@ export default class I3SConverter {
413
457
  const resourcesData = await convertB3dmToI3sGeometry(tileContent, transformationMatrix, boundingVolume, async () => (await this.nodePages.push({
414
458
  index: 0,
415
459
  obb: draftObb
416
- }, parentId)).index, propertyTable, this.featuresHashArray, (_this$layers2 = this.layers0) === null || _this$layers2 === void 0 ? void 0 : _this$layers2.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.workerSource);
460
+ }, parentId)).index, propertyTable, this.featuresHashArray, (_this$layers = this.layers0) === null || _this$layers === void 0 ? void 0 : _this$layers.attributeStorageInfo, this.options.draco, this.generateBoundingVolumes, this.options.mergeMaterials, this.geoidHeightModel, this.loadOptions.modules, this.options.metadataClass);
417
461
  return resourcesData;
418
462
  }
419
463
  async _updateNodeInNodePages(maxScreenThresholdSQ, boundingVolumes, sourceTile, parentId, resources) {
@@ -452,6 +496,9 @@ export default class I3SConverter {
452
496
  } else {
453
497
  node = await this.nodePages.getNodeById(nodeId);
454
498
  }
499
+ if (!nodeInPage.mesh) {
500
+ console.log("[warning]: node ".concat(node.index, " is created with empty content"));
501
+ }
455
502
  NodePages.updateAll(node, nodeInPage);
456
503
  if (meshMaterial) {
457
504
  NodePages.updateMaterialByNodeId(node, this._findOrCreateMaterial(meshMaterial));
@@ -560,9 +607,12 @@ export default class I3SConverter {
560
607
  data: arrayToEncode
561
608
  }, KTX2BasisWriterWorker, {
562
609
  ...KTX2BasisWriterWorker.options,
563
- source: this.workerSource.ktx2,
610
+ ['ktx2-basis-writer']: {
611
+ workerUrl: './modules/textures/dist/ktx2-basis-writer-worker-node.js'
612
+ },
564
613
  reuseWorkers: true,
565
- _nodeWorkers: true
614
+ _nodeWorkers: true,
615
+ useLocalLibraries: true
566
616
  });
567
617
  await this.writeTextureFile(ktx2TextureData, '1', 'ktx2', childPath, slpkChildPath);
568
618
  }
@@ -612,12 +662,13 @@ export default class I3SConverter {
612
662
  }
613
663
  }
614
664
  async _writeAttributes() {
615
- var _this$layers3, _this$layers3$attribu;
665
+ var _this$layers2, _this$layers2$attribu;
616
666
  let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
617
667
  let childPath = arguments.length > 1 ? arguments[1] : undefined;
618
668
  let slpkChildPath = arguments.length > 2 ? arguments[2] : undefined;
619
- if (attributes !== null && attributes !== void 0 && attributes.length && (_this$layers3 = this.layers0) !== null && _this$layers3 !== void 0 && (_this$layers3$attribu = _this$layers3.attributeStorageInfo) !== null && _this$layers3$attribu !== void 0 && _this$layers3$attribu.length) {
620
- for (let index = 0; index < attributes.length; index++) {
669
+ if (attributes !== null && attributes !== void 0 && attributes.length && (_this$layers2 = this.layers0) !== null && _this$layers2 !== void 0 && (_this$layers2$attribu = _this$layers2.attributeStorageInfo) !== null && _this$layers2$attribu !== void 0 && _this$layers2$attribu.length) {
670
+ const minimumLength = attributes.length < this.layers0.attributeStorageInfo.length ? attributes.length : this.layers0.attributeStorageInfo.length;
671
+ for (let index = 0; index < minimumLength; index++) {
621
672
  const folderName = this.layers0.attributeStorageInfo[index].key;
622
673
  const fileBuffer = new Uint8Array(attributes[index]);
623
674
  if (this.options.slpk) {
@@ -676,16 +727,19 @@ export default class I3SConverter {
676
727
  ...propertyTable
677
728
  };
678
729
  for (const key in propertyTableWithObjectId) {
679
- const firstAttribute = propertyTableWithObjectId[key][0];
680
- const attributeType = getAttributeType(key, firstAttribute);
681
- const storageAttribute = createdStorageAttribute(attributeIndex, key, attributeType);
682
- const fieldAttributeType = getFieldAttributeType(attributeType);
683
- const fieldAttribute = createFieldAttribute(key, fieldAttributeType);
684
- const popupInfo = createPopupInfo(propertyTableWithObjectId);
685
- this.layers0.attributeStorageInfo.push(storageAttribute);
686
- this.layers0.fields.push(fieldAttribute);
687
- this.layers0.popupInfo = popupInfo;
688
- this.layers0.layerType = _3D_OBJECT_LAYER_TYPE;
730
+ const found = this.layers0.attributeStorageInfo.find(element => element.name === key);
731
+ if (!found) {
732
+ const firstAttribute = propertyTableWithObjectId[key][0];
733
+ const attributeType = getAttributeType(key, firstAttribute);
734
+ const storageAttribute = createdStorageAttribute(attributeIndex, key, attributeType);
735
+ const fieldAttributeType = getFieldAttributeType(attributeType);
736
+ const fieldAttribute = createFieldAttribute(key, fieldAttributeType);
737
+ const popupInfo = createPopupInfo(propertyTableWithObjectId);
738
+ this.layers0.attributeStorageInfo.push(storageAttribute);
739
+ this.layers0.fields.push(fieldAttribute);
740
+ this.layers0.popupInfo = popupInfo;
741
+ this.layers0.layerType = _3D_OBJECT_LAYER_TYPE;
742
+ }
689
743
  attributeIndex += 1;
690
744
  }
691
745
  }
@@ -748,31 +802,5 @@ export default class I3SConverter {
748
802
  isContentSupported(sourceTile) {
749
803
  return ['b3dm', 'glTF', 'scenegraph'].includes(sourceTile.type || '');
750
804
  }
751
- async loadWorkers() {
752
- console.log("Loading workers source...");
753
- if (this.options.draco) {
754
- const url = getWorkerURL(DracoWriterWorker, {
755
- ...getLoaderOptions()
756
- });
757
- const sourceResponse = await fetchFile(url);
758
- const source = await sourceResponse.text();
759
- this.workerSource.draco = source;
760
- }
761
- if (this.generateTextures) {
762
- const url = getWorkerURL(KTX2BasisWriterWorker, {
763
- ...getLoaderOptions()
764
- });
765
- const sourceResponse = await fetchFile(url);
766
- const source = await sourceResponse.text();
767
- this.workerSource.ktx2 = source;
768
- }
769
- const i3sAttributesWorkerUrl = getWorkerURL(I3SAttributesWorker, {
770
- ...getLoaderOptions()
771
- });
772
- const sourceResponse = await fetchFile(i3sAttributesWorkerUrl);
773
- const source = await sourceResponse.text();
774
- this.workerSource.I3SAttributes = source;
775
- console.log("Loading workers source completed!");
776
- }
777
805
  }
778
806
  //# sourceMappingURL=i3s-converter.js.map