@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "4.0.0-alpha.9",
3
+ "version": "4.0.0-beta.1",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -21,7 +21,8 @@
21
21
  "sideEffects": false,
22
22
  "bin": {
23
23
  "tile-converter": "./bin/converter.js",
24
- "i3s-server": "./src/i3s-server/bin/www"
24
+ "slpk-extractor": "./bin/slpk-extractor.js",
25
+ "i3s-server": "./bin/i3s-server.js"
25
26
  },
26
27
  "files": [
27
28
  "src",
@@ -37,25 +38,25 @@
37
38
  "join-images": false
38
39
  },
39
40
  "scripts": {
40
- "pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-i3s-attributes-worker && npm run build-3d-tiles-attributes-worker",
41
+ "pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-slpk-extractor-bundle && npm run build-i3s-server-bundle",
41
42
  "build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/dist.min.js --platform=node --external:join-images",
42
43
  "build-converter-bundle": "esbuild src/converter-cli.ts --outfile=dist/converter.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\"",
43
- "build-i3s-attributes-worker": "esbuild src/workers/i3s-attributes-worker.ts --outfile=dist/i3s-attributes-worker.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
44
- "build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
44
+ "build-slpk-extractor-bundle": "esbuild src/slpk-extractor-cli.ts --outfile=dist/slpk-extractor.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\"",
45
+ "build-i3s-server-bundle": "esbuild src/i3s-server/bin/www.ts --outfile=dist/esm/i3s-server/bin/i3s-server.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\""
45
46
  },
46
47
  "dependencies": {
47
- "@loaders.gl/3d-tiles": "4.0.0-alpha.9",
48
- "@loaders.gl/crypto": "4.0.0-alpha.9",
49
- "@loaders.gl/draco": "4.0.0-alpha.9",
50
- "@loaders.gl/gltf": "4.0.0-alpha.9",
51
- "@loaders.gl/i3s": "4.0.0-alpha.9",
52
- "@loaders.gl/images": "4.0.0-alpha.9",
53
- "@loaders.gl/loader-utils": "4.0.0-alpha.9",
54
- "@loaders.gl/polyfills": "4.0.0-alpha.9",
55
- "@loaders.gl/textures": "4.0.0-alpha.9",
56
- "@loaders.gl/tiles": "4.0.0-alpha.9",
57
- "@loaders.gl/worker-utils": "4.0.0-alpha.9",
58
- "@loaders.gl/zip": "4.0.0-alpha.9",
48
+ "@loaders.gl/3d-tiles": "4.0.0-beta.1",
49
+ "@loaders.gl/crypto": "4.0.0-beta.1",
50
+ "@loaders.gl/draco": "4.0.0-beta.1",
51
+ "@loaders.gl/gltf": "4.0.0-beta.1",
52
+ "@loaders.gl/i3s": "4.0.0-beta.1",
53
+ "@loaders.gl/images": "4.0.0-beta.1",
54
+ "@loaders.gl/loader-utils": "4.0.0-beta.1",
55
+ "@loaders.gl/polyfills": "4.0.0-beta.1",
56
+ "@loaders.gl/textures": "4.0.0-beta.1",
57
+ "@loaders.gl/tiles": "4.0.0-beta.1",
58
+ "@loaders.gl/worker-utils": "4.0.0-beta.1",
59
+ "@loaders.gl/zip": "4.0.0-beta.1",
59
60
  "@math.gl/core": "^3.5.1",
60
61
  "@math.gl/culling": "^3.5.1",
61
62
  "@math.gl/geoid": "^3.5.1",
@@ -63,13 +64,14 @@
63
64
  "archiver": "^5.0.0",
64
65
  "cors": "^2.8.5",
65
66
  "crypt": "^0.0.2",
66
- "debug": "~2.6.9",
67
- "express": "~4.17.3",
67
+ "debug": "~4.3.4",
68
+ "express": "~4.18.2",
69
+ "inquirer": "^8.0.0",
68
70
  "json-map-transform": "^1.2.6",
69
71
  "jszip": "^3.5.0",
70
72
  "md5": "^2.3.0",
71
73
  "morgan": "~1.9.1",
72
- "uuid": "^8.1.0"
74
+ "uuid": "^9.0.0"
73
75
  },
74
76
  "peerDependencies": {
75
77
  "@loaders.gl/core": "^4.0.0-alpha.8"
@@ -78,5 +80,9 @@
78
80
  "join-images": "^1.1.3",
79
81
  "sharp": "^0.31.3"
80
82
  },
81
- "gitHead": "03ff81ab468f20f3bddeec787aa88d477a7e1c72"
83
+ "gitHead": "35c625e67132b0784e597d9ddabae8aefea29ff2",
84
+ "devDependencies": {
85
+ "@types/express": "^4.17.17",
86
+ "@types/node": "^20.4.2"
87
+ }
82
88
  }
@@ -1,12 +1,16 @@
1
- import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';
1
+ import type {
2
+ AttributeStorageInfo,
3
+ FeatureAttribute,
4
+ NodeReference,
5
+ I3STilesetHeader
6
+ } from '@loaders.gl/i3s';
2
7
  import type {Tiles3DTileJSON} from '@loaders.gl/3d-tiles';
3
8
 
4
9
  import {join} from 'path';
5
10
  import process from 'process';
6
11
  import transform from 'json-map-transform';
7
- import {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';
12
+ import {load, isBrowser} from '@loaders.gl/core';
8
13
  import {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';
9
- import {Tileset3D, Tile3D} from '@loaders.gl/tiles';
10
14
  import {Geoid} from '@math.gl/geoid';
11
15
 
12
16
  import {PGMLoader} from '../pgm-loader';
@@ -16,13 +20,12 @@ import {writeFile, removeDir} from '../lib/utils/file-utils';
16
20
  import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
17
21
  import {TILESET as tilesetTemplate} from './json-templates/tileset';
18
22
  import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
19
- import {
20
- I3SAttributesData,
21
- Tile3dAttributesWorker,
22
- transform3DTilesAttributesOnWorker
23
- } from '../3d-tiles-attributes-worker';
24
- import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
23
+ import {WorkerFarm} from '@loaders.gl/worker-utils';
25
24
  import {BROWSER_ERROR_MESSAGE} from '../constants';
25
+ import B3dmConverter, {I3SAttributesData} from './helpers/b3dm-converter';
26
+ import {I3STileHeader} from '@loaders.gl/i3s/src/types';
27
+ import {loadI3SContent} from './helpers/load-i3s';
28
+ import {I3SLoaderOptions} from '@loaders.gl/i3s/src/i3s-loader';
26
29
 
27
30
  const I3S = 'I3S';
28
31
 
@@ -35,9 +38,18 @@ export default class Tiles3DConverter {
35
38
  vertexCounter: number;
36
39
  conversionStartTime: [number, number];
37
40
  geoidHeightModel: Geoid | null;
38
- sourceTileset: Tileset3D | null;
39
- attributeStorageInfo: AttributeStorageInfo | null;
41
+ sourceTileset: I3STilesetHeader | null;
42
+ attributeStorageInfo?: AttributeStorageInfo[] | null;
40
43
  workerSource: {[key: string]: string} = {};
44
+ loaderOptions: I3SLoaderOptions = {
45
+ _nodeWorkers: true,
46
+ reuseWorkers: true,
47
+ i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false},
48
+ // We need to load local fs workers because nodejs can't load workers from the Internet
49
+ 'i3s-content': {
50
+ workerUrl: './modules/i3s/dist/i3s-content-worker-node.js'
51
+ }
52
+ };
41
53
 
42
54
  constructor() {
43
55
  this.options = {};
@@ -78,30 +90,19 @@ export default class Tiles3DConverter {
78
90
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
79
91
  console.log('Loading egm file completed!'); // eslint-disable-line
80
92
 
81
- await this.loadWorkers();
82
-
83
- const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
93
+ this.sourceTileset = await load(inputUrl, I3SLoader, this.loaderOptions);
84
94
 
85
- this.sourceTileset = new Tileset3D(sourceTilesetJson, {
86
- loadOptions: {
87
- _nodeWorkers: true,
88
- reuseWorkers: true,
89
- i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}
90
- // TODO should no longer be needed with new workers
91
- // 'i3s-content-nodejs': {
92
- // workerUrl: './modules/i3s/dist/i3s-content-nodejs-worker.js'
93
- // }
94
- }
95
- });
95
+ if (!this.sourceTileset) {
96
+ return;
97
+ }
96
98
 
97
- await this.sourceTileset.tilesetInitializationPromise;
98
- const rootNode = this.sourceTileset.root!;
99
- if (!rootNode.header.obb) {
100
- rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
99
+ const rootNode = this.sourceTileset?.root;
100
+ if (!rootNode.obb) {
101
+ rootNode.obb = createObbFromMbs(rootNode.mbs);
101
102
  }
102
103
 
103
104
  this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);
104
- this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
105
+ this.attributeStorageInfo = this.sourceTileset.attributeStorageInfo;
105
106
  // Removing the tilesetPath needed to exclude erroneous files after conversion
106
107
  try {
107
108
  await removeDir(this.tilesetPath);
@@ -111,7 +112,7 @@ export default class Tiles3DConverter {
111
112
 
112
113
  const rootTile: Tiles3DTileJSON = {
113
114
  boundingVolume: {
114
- box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)
115
+ box: i3sObbTo3dTilesObb(rootNode.obb, this.geoidHeightModel)
115
116
  },
116
117
  geometricError: convertScreenThresholdToGeometricError(rootNode),
117
118
  children: []
@@ -137,28 +138,33 @@ export default class Tiles3DConverter {
137
138
  * @param childNodeInfo child node to convert
138
139
  */
139
140
  private async convertChildNode(
140
- parentSourceNode: Tile3D,
141
+ parentSourceNode: I3STileHeader,
141
142
  parentNode: Tiles3DTileJSON,
142
143
  level: number,
143
144
  childNodeInfo: NodeReference
144
145
  ): Promise<void> {
145
146
  const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
146
- parentSourceNode.children.push(sourceChild);
147
147
  if (sourceChild.contentUrl) {
148
- await this.sourceTileset!._loadTile(sourceChild);
149
- this.vertexCounter += sourceChild.content.vertexCount;
148
+ const content = await loadI3SContent(this.sourceTileset, sourceChild, this.loaderOptions);
149
+
150
+ if (!content) {
151
+ await this._addChildren(sourceChild, parentNode, level + 1);
152
+ return;
153
+ }
154
+
155
+ this.vertexCounter += content?.vertexCount || 0;
150
156
 
151
157
  let featureAttributes: FeatureAttribute | null = null;
152
158
  if (this.attributeStorageInfo) {
153
159
  featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
154
160
  }
155
161
 
156
- if (!sourceChild.header.obb) {
157
- sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
162
+ if (!sourceChild.obb) {
163
+ sourceChild.obb = createObbFromMbs(sourceChild.mbs);
158
164
  }
159
165
 
160
166
  const boundingVolume = {
161
- box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
167
+ box: i3sObbTo3dTilesObb(sourceChild.obb, this.geoidHeightModel)
162
168
  };
163
169
  const child: Tiles3DTileJSON = {
164
170
  boundingVolume,
@@ -167,14 +173,13 @@ export default class Tiles3DConverter {
167
173
  };
168
174
 
169
175
  const i3sAttributesData: I3SAttributesData = {
170
- tileContent: sourceChild.content,
171
- textureFormat: sourceChild?.header?.textureFormat
176
+ tileContent: content,
177
+ box: boundingVolume.box,
178
+ textureFormat: sourceChild.textureFormat
172
179
  };
173
180
 
174
- const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
175
- source: this.workerSource.tile3dWorkerSource,
176
- featureAttributes
177
- });
181
+ const b3dmConverter = new B3dmConverter();
182
+ const b3dm = await b3dmConverter.convert(i3sAttributesData, featureAttributes);
178
183
 
179
184
  child.content = {
180
185
  uri: `${sourceChild.id}.b3dm`,
@@ -183,7 +188,6 @@ export default class Tiles3DConverter {
183
188
  await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
184
189
  parentNode.children.push(child);
185
190
 
186
- sourceChild.unloadContent();
187
191
  await this._addChildren(sourceChild, child, level + 1);
188
192
  } else {
189
193
  await this._addChildren(sourceChild, parentNode, level + 1);
@@ -197,7 +201,7 @@ export default class Tiles3DConverter {
197
201
  * @param level a current level of a tree depth
198
202
  */
199
203
  private async _addChildren(
200
- parentSourceNode: Tile3D,
204
+ parentSourceNode: I3STileHeader,
201
205
  parentNode: Tiles3DTileJSON,
202
206
  level: number
203
207
  ): Promise<void> {
@@ -205,7 +209,7 @@ export default class Tiles3DConverter {
205
209
  return;
206
210
  }
207
211
  const promises: Promise<void>[] = [];
208
- for (const childNodeInfo of parentSourceNode.header.children || []) {
212
+ for (const childNodeInfo of parentSourceNode.children || []) {
209
213
  promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
210
214
  }
211
215
  await Promise.all(promises);
@@ -217,29 +221,31 @@ export default class Tiles3DConverter {
217
221
  * @param childNodeInfo child information from 3DNodeIndexDocument
218
222
  * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)
219
223
  */
220
- private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {
224
+ private async _loadChildNode(
225
+ parentNode: I3STileHeader,
226
+ childNodeInfo: NodeReference
227
+ ): Promise<I3STileHeader> {
221
228
  let header;
222
- if (this.sourceTileset!.tileset.nodePages) {
229
+ if (this.sourceTileset?.nodePagesTile) {
223
230
  console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef
224
- header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(
225
- childNodeInfo.id
231
+ header = await this.sourceTileset.nodePagesTile.formTileFromNodePages(
232
+ parseInt(childNodeInfo.id)
226
233
  );
227
234
  } else {
228
- const {loader} = this.sourceTileset!;
229
235
  const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);
230
236
  // load metadata
231
237
  const options = {
232
238
  i3s: {
233
- ...this.sourceTileset!.loadOptions,
239
+ ...this.loaderOptions,
234
240
  isTileHeader: true,
235
241
  loadContent: false
236
242
  }
237
243
  };
238
244
 
239
245
  console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef
240
- header = await load(nodeUrl, loader, options);
246
+ header = await load(nodeUrl, I3SLoader, options);
241
247
  }
242
- return new Tile3D(this.sourceTileset!, header, parentNode);
248
+ return header;
243
249
  }
244
250
 
245
251
  /**
@@ -247,7 +253,7 @@ export default class Tiles3DConverter {
247
253
  * @param baseUrl the base url. A resulting url will be related from this url
248
254
  * @param relativeUrl a realtive url of a resource
249
255
  */
250
- private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {
256
+ private _relativeUrlToFullUrl(baseUrl: string = '', relativeUrl: string): string {
251
257
  let resultArray = baseUrl.split('/');
252
258
  const relativeUrlArray = relativeUrl.split('/');
253
259
  for (const folder of relativeUrlArray) {
@@ -271,11 +277,11 @@ export default class Tiles3DConverter {
271
277
  * @returns Promise of attributes object.
272
278
  */
273
279
  private async _loadChildAttributes(
274
- sourceChild: Tile3D,
275
- attributeStorageInfo: AttributeStorageInfo
280
+ sourceChild: I3STileHeader,
281
+ attributeStorageInfo: AttributeStorageInfo[]
276
282
  ): Promise<FeatureAttribute> {
277
283
  const promises: any[] = [];
278
- const {attributeUrls} = sourceChild.header;
284
+ const {attributeUrls = []} = sourceChild;
279
285
 
280
286
  for (let index = 0; index < attributeUrls.length; index++) {
281
287
  const inputUrl = attributeUrls[index];
@@ -342,14 +348,4 @@ export default class Tiles3DConverter {
342
348
  console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line
343
349
  console.log(`------------------------------------------------`); // eslint-disable-line
344
350
  }
345
-
346
- private async loadWorkers(): Promise<void> {
347
- console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console
348
- const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});
349
- const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);
350
- const source = await sourceResponse.text();
351
-
352
- this.workerSource.tile3dWorkerSource = source;
353
- console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console
354
- }
355
351
  }
@@ -1,5 +1,4 @@
1
- import type {I3SAttributesData} from '../../3d-tiles-attributes-worker';
2
-
1
+ import type {I3STileContent} from '@loaders.gl/i3s';
3
2
  import {encodeSync} from '@loaders.gl/core';
4
3
  import {GLTFScenegraph, GLTFWriter} from '@loaders.gl/gltf';
5
4
  import {Tile3DWriter} from '@loaders.gl/3d-tiles';
@@ -11,6 +10,12 @@ import {generateSyntheticIndices} from '../../lib/utils/geometry-utils';
11
10
  const Z_UP_TO_Y_UP_MATRIX = new Matrix4([1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
12
11
  const scratchVector = new Vector3();
13
12
 
13
+ export type I3SAttributesData = {
14
+ tileContent: I3STileContent;
15
+ box: number[];
16
+ textureFormat: string;
17
+ };
18
+
14
19
  /**
15
20
  * Converts content of an I3S node to *.b3dm's file content
16
21
  */
@@ -28,7 +33,7 @@ export default class B3dmConverter {
28
33
  i3sAttributesData: I3SAttributesData,
29
34
  featureAttributes: any = null
30
35
  ): Promise<ArrayBuffer> {
31
- const gltf = await this.buildGltf(i3sAttributesData, featureAttributes);
36
+ const gltf = await this.buildGLTF(i3sAttributesData, featureAttributes);
32
37
  const b3dm = encodeSync(
33
38
  {
34
39
  gltfEncoded: new Uint8Array(gltf),
@@ -46,23 +51,16 @@ export default class B3dmConverter {
46
51
  * @param i3sTile - Tile3D instance for I3S node
47
52
  * @returns - encoded glb content
48
53
  */
49
- async buildGltf(
54
+ async buildGLTF(
50
55
  i3sAttributesData: I3SAttributesData,
51
56
  featureAttributes: any
52
57
  ): Promise<ArrayBuffer> {
53
- const {tileContent, textureFormat} = i3sAttributesData;
54
- const {
55
- material,
56
- attributes,
57
- indices: originalIndices,
58
- cartesianOrigin,
59
- cartographicOrigin,
60
- modelMatrix
61
- } = tileContent;
58
+ const {tileContent, textureFormat, box} = i3sAttributesData;
59
+ const {material, attributes, indices: originalIndices, modelMatrix} = tileContent;
62
60
  const gltfBuilder = new GLTFScenegraph();
63
61
 
64
- const textureIndex = await this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
65
- const pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
62
+ const textureIndex = await this._addI3sTextureToGLTF(tileContent, textureFormat, gltfBuilder);
63
+ const pbrMaterialInfo = this._convertI3sMaterialToGLTFMaterial(material, textureIndex);
66
64
  const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
67
65
 
68
66
  const positions = attributes.positions;
@@ -75,6 +73,12 @@ export default class B3dmConverter {
75
73
  );
76
74
  }
77
75
 
76
+ const cartesianOrigin = new Vector3(box);
77
+ const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(
78
+ cartesianOrigin,
79
+ new Vector3()
80
+ );
81
+
78
82
  attributes.positions.value = this._normalizePositions(
79
83
  positionsValue,
80
84
  cartesianOrigin,
@@ -111,7 +115,7 @@ export default class B3dmConverter {
111
115
  * @param {GLTFScenegraph} gltfBuilder - gltfScenegraph instance to construct GLTF
112
116
  * @returns {Promise<number | null>} - GLTF texture index
113
117
  */
114
- async _addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder) {
118
+ async _addI3sTextureToGLTF(tileContent, textureFormat, gltfBuilder) {
115
119
  const {texture, material, attributes} = tileContent;
116
120
  let textureIndex = null;
117
121
  let selectedTexture = texture;
@@ -218,7 +222,7 @@ export default class B3dmConverter {
218
222
  * @param {number | null} textureIndex - texture index in GLTF
219
223
  * @returns {object} GLTF material
220
224
  */
221
- _convertI3sMaterialToGltfMaterial(material, textureIndex) {
225
+ _convertI3sMaterialToGLTFMaterial(material, textureIndex) {
222
226
  const isTextureIndexExists = textureIndex !== null;
223
227
 
224
228
  if (!material) {
@@ -244,7 +248,7 @@ export default class B3dmConverter {
244
248
  }
245
249
 
246
250
  if (textureIndex !== null) {
247
- material = this._setGltfTexture(material, textureIndex);
251
+ material = this._setGLTFTexture(material, textureIndex);
248
252
  }
249
253
 
250
254
  return material;
@@ -256,7 +260,7 @@ export default class B3dmConverter {
256
260
  * @param {number} textureIndex - texture index in GLTF
257
261
  * @returns {void}
258
262
  */
259
- _setGltfTexture(materialDefinition, textureIndex) {
263
+ _setGLTFTexture(materialDefinition, textureIndex) {
260
264
  const material = {
261
265
  ...materialDefinition,
262
266
  pbrMetallicRoughness: {...materialDefinition.pbrMetallicRoughness}
@@ -0,0 +1,52 @@
1
+ import {load} from '@loaders.gl/core';
2
+ import {
3
+ I3STileContent,
4
+ I3STileHeader,
5
+ I3STilesetHeader,
6
+ I3SLoader,
7
+ I3SLoaderOptions
8
+ } from '@loaders.gl/i3s';
9
+
10
+ /**
11
+ * Load I3S node content
12
+ * @param sourceTileset - source layer JSON
13
+ * @param sourceTile - source I3S node metadata
14
+ * @param tilesetLoadOptions - load options for Tiles3DLoader
15
+ * @returns - 3DTiles tile content or null
16
+ */
17
+ export const loadI3SContent = async (
18
+ sourceTileset: I3STilesetHeader | null,
19
+ sourceTile: I3STileHeader,
20
+ tilesetLoadOptions: I3SLoaderOptions
21
+ ): Promise<I3STileContent | null> => {
22
+ if (!sourceTileset || !sourceTile.contentUrl) {
23
+ return null;
24
+ }
25
+
26
+ const loadOptions = {
27
+ ...tilesetLoadOptions,
28
+ i3s: {
29
+ ...tilesetLoadOptions.i3s,
30
+ isTileset: false,
31
+ isTileHeader: false,
32
+ _tileOptions: {
33
+ attributeUrls: sourceTile.attributeUrls,
34
+ textureUrl: sourceTile.textureUrl,
35
+ textureFormat: sourceTile.textureFormat,
36
+ textureLoaderOptions: sourceTile.textureLoaderOptions,
37
+ materialDefinition: sourceTile.materialDefinition,
38
+ isDracoGeometry: sourceTile.isDracoGeometry,
39
+ mbs: sourceTile.mbs
40
+ },
41
+ _tilesetOptions: {
42
+ store: sourceTileset.store,
43
+ attributeStorageInfo: sourceTileset.attributeStorageInfo,
44
+ fields: sourceTileset.fields
45
+ }
46
+ }
47
+ };
48
+ const tileContent = await load(sourceTile.contentUrl, I3SLoader, loadOptions);
49
+
50
+ // @ts-expect-error
51
+ return tileContent;
52
+ };
@@ -1,3 +1,5 @@
1
+ import type {TypedArray} from '@loaders.gl/loader-utils';
2
+
1
3
  /**
2
4
  * Apply uvRegions to texture coordinates.
3
5
  * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md
@@ -5,7 +7,7 @@
5
7
  * @param texCoords
6
8
  * @param uvRegions
7
9
  */
8
- export function convertTextureAtlas(texCoords: Float32Array, uvRegions: Uint16Array): Float32Array {
10
+ export function convertTextureAtlas(texCoords: TypedArray, uvRegions: TypedArray): Float32Array {
9
11
  const convertedTexCoords = new Float32Array(texCoords.length);
10
12
  const normalisedRegions = normalizeRegions(uvRegions);
11
13
 
@@ -43,7 +45,9 @@ function fract(uv: [number, number]): [number, number] {
43
45
  * Normalize uvRegions by dividing by the maximum Uint16 value
44
46
  * @param regions
45
47
  */
46
- function normalizeRegions(regions: Uint16Array): number[] {
48
+ function normalizeRegions(regions: TypedArray): number[] {
49
+ // The code is for Uint16Array because it is the spec requirement
50
+ // https://github.com/Esri/i3s-spec/blob/master/docs/1.8/geometryUVRegion.cmn.md
47
51
  const MAX_UINT_16_VALUE = 65535;
48
52
  const normalizedRegions: number[] = [];
49
53