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

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 (468) hide show
  1. package/bin/converter.js +1 -1
  2. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  3. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  4. package/dist/3d-tiles-attributes-worker.js +3 -0
  5. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +90 -0
  7. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
  8. package/dist/3d-tiles-converter/3d-tiles-converter.js +275 -226
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +71 -18
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
  11. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -236
  12. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
  13. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
  14. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
  15. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
  16. package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
  17. package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
  18. package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
  19. package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
  20. package/dist/3d-tiles-converter/json-templates/tileset.js +42 -36
  21. package/dist/bundle.d.ts +2 -0
  22. package/dist/bundle.d.ts.map +1 -0
  23. package/dist/bundle.js +2 -2
  24. package/dist/constants.d.ts +2 -0
  25. package/dist/constants.d.ts.map +1 -0
  26. package/dist/constants.js +4 -0
  27. package/dist/converter-cli.d.ts +2 -0
  28. package/dist/converter-cli.d.ts.map +1 -0
  29. package/dist/converter-cli.js +280 -0
  30. package/dist/converter.min.js +185 -190
  31. package/dist/deps-installer/deps-installer.d.ts +11 -3
  32. package/dist/deps-installer/deps-installer.d.ts.map +1 -0
  33. package/dist/deps-installer/deps-installer.js +61 -23
  34. package/dist/dist.min.js +64143 -0
  35. package/dist/es5/3d-tiles-attributes-worker.js +25 -0
  36. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  37. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
  38. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  39. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
  40. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  41. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
  42. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  43. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  44. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  45. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
  46. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  47. package/dist/es5/bundle.js +6 -0
  48. package/dist/es5/bundle.js.map +1 -0
  49. package/dist/es5/constants.js +9 -0
  50. package/dist/es5/constants.js.map +1 -0
  51. package/dist/es5/converter-cli.js +289 -0
  52. package/dist/es5/converter-cli.js.map +1 -0
  53. package/dist/es5/deps-installer/deps-installer.js +124 -0
  54. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  55. package/dist/es5/i3s-attributes-worker.js +25 -0
  56. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  57. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
  58. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  59. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +89 -0
  60. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  61. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
  62. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  63. package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
  64. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  65. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
  66. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  67. package/dist/es5/i3s-converter/helpers/geometry-converter.js +1192 -0
  68. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  69. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +113 -0
  70. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  71. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
  72. package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  73. package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
  74. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  75. package/dist/es5/i3s-converter/helpers/node-index-document.js +521 -0
  76. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  77. package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
  78. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  79. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
  80. package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  81. package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
  82. package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  83. package/dist/es5/i3s-converter/i3s-converter.js +1541 -0
  84. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  85. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  86. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  87. package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
  88. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  89. package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
  90. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  91. package/dist/es5/i3s-converter/json-templates/node.js +99 -0
  92. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  93. package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
  94. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  95. package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
  96. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  97. package/dist/es5/i3s-converter/json-templates/store.js +107 -0
  98. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  99. package/dist/es5/i3s-converter/types.js +18 -0
  100. package/dist/es5/i3s-converter/types.js.map +1 -0
  101. package/dist/es5/i3s-server/README.md +19 -0
  102. package/dist/es5/i3s-server/app.js +27 -0
  103. package/dist/es5/i3s-server/app.js.map +1 -0
  104. package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
  105. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  106. package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
  107. package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
  108. package/dist/es5/i3s-server/routes/index.js +37 -0
  109. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  110. package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
  111. package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
  112. package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
  113. package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
  114. package/dist/es5/index.js +21 -0
  115. package/dist/es5/index.js.map +1 -0
  116. package/dist/es5/lib/utils/compress-util.js +346 -0
  117. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  118. package/dist/es5/lib/utils/file-utils.js +208 -0
  119. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  120. package/dist/es5/lib/utils/geometry-utils.js +15 -0
  121. package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
  122. package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
  123. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  124. package/dist/es5/lib/utils/queue.js +47 -0
  125. package/dist/es5/lib/utils/queue.js.map +1 -0
  126. package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
  127. package/dist/es5/lib/utils/statistic-utills.js +147 -0
  128. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  129. package/dist/es5/lib/utils/write-queue.js +214 -0
  130. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  131. package/dist/es5/pgm-loader.js +41 -0
  132. package/dist/es5/pgm-loader.js.map +1 -0
  133. package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
  134. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  135. package/dist/es5/workers/i3s-attributes-worker.js +30 -0
  136. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  137. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  138. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  139. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
  140. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  141. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
  142. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  143. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
  144. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  145. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
  146. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  147. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
  148. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  149. package/dist/esm/bundle.js +4 -0
  150. package/dist/esm/bundle.js.map +1 -0
  151. package/dist/esm/constants.js +2 -0
  152. package/dist/esm/constants.js.map +1 -0
  153. package/dist/esm/converter-cli.js +232 -0
  154. package/dist/esm/converter-cli.js.map +1 -0
  155. package/dist/esm/deps-installer/deps-installer.js +45 -0
  156. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  157. package/dist/esm/i3s-attributes-worker.js +16 -0
  158. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  159. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
  160. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  161. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +79 -0
  162. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  163. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
  164. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  165. package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
  166. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  167. package/{src → dist/esm}/i3s-converter/helpers/geometry-attributes.js +80 -106
  168. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  169. package/dist/esm/i3s-converter/helpers/geometry-converter.js +906 -0
  170. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  171. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +110 -0
  172. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  173. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
  174. package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
  175. package/{src → dist/esm}/i3s-converter/helpers/node-debug.js +20 -41
  176. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  177. package/dist/esm/i3s-converter/helpers/node-index-document.js +201 -0
  178. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  179. package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
  180. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  181. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
  182. package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
  183. package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
  184. package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
  185. package/dist/esm/i3s-converter/i3s-converter.js +778 -0
  186. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  187. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  188. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  189. package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
  190. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  191. package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
  192. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  193. package/dist/esm/i3s-converter/json-templates/node.js +80 -0
  194. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  195. package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
  196. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  197. package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
  198. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  199. package/dist/esm/i3s-converter/json-templates/store.js +98 -0
  200. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  201. package/dist/esm/i3s-converter/types.js +11 -0
  202. package/dist/esm/i3s-converter/types.js.map +1 -0
  203. package/dist/esm/i3s-server/README.md +19 -0
  204. package/dist/esm/i3s-server/app.js +26 -0
  205. package/dist/esm/i3s-server/app.js.map +1 -0
  206. package/dist/esm/i3s-server/bin/www +102 -0
  207. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  208. package/dist/esm/i3s-server/certs/key.pem +27 -0
  209. package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
  210. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  211. package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
  212. package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
  213. package/dist/esm/i3s-server/routes/index.js +16 -0
  214. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  215. package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
  216. package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
  217. package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
  218. package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
  219. package/dist/esm/index.js +3 -0
  220. package/dist/esm/index.js.map +1 -0
  221. package/dist/esm/lib/utils/compress-util.js +168 -0
  222. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  223. package/dist/esm/lib/utils/file-utils.js +87 -0
  224. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  225. package/dist/esm/lib/utils/geometry-utils.js +8 -0
  226. package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
  227. package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
  228. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  229. package/dist/esm/lib/utils/queue.js +15 -0
  230. package/dist/esm/lib/utils/queue.js.map +1 -0
  231. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  232. package/dist/esm/lib/utils/statistic-utills.js +62 -0
  233. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  234. package/dist/esm/lib/utils/write-queue.js +85 -0
  235. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  236. package/dist/esm/pgm-loader.js +15 -0
  237. package/dist/esm/pgm-loader.js.map +1 -0
  238. package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
  239. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  240. package/dist/esm/workers/i3s-attributes-worker.js +7 -0
  241. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  242. package/dist/i3s-attributes-worker.d.ts +45 -0
  243. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  244. package/dist/i3s-attributes-worker.js +9 -0
  245. package/dist/i3s-attributes-worker.js.map +7 -0
  246. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
  247. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  248. package/dist/i3s-converter/helpers/batch-ids-extensions.js +138 -0
  249. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +40 -0
  250. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
  251. package/dist/i3s-converter/helpers/coordinate-converter.js +119 -42
  252. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
  253. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
  254. package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
  255. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  256. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  257. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  258. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
  259. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
  260. package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
  261. package/dist/i3s-converter/helpers/geometry-converter.d.ts +41 -35
  262. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
  263. package/dist/i3s-converter/helpers/geometry-converter.js +1179 -650
  264. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +28 -0
  265. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  266. package/dist/i3s-converter/helpers/gltf-attributes.js +128 -0
  267. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
  268. package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
  269. package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
  270. package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
  271. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
  272. package/dist/i3s-converter/helpers/node-debug.js +106 -74
  273. package/dist/i3s-converter/helpers/node-index-document.d.ts +103 -0
  274. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  275. package/dist/i3s-converter/helpers/node-index-document.js +268 -0
  276. package/dist/i3s-converter/helpers/node-pages.d.ts +125 -113
  277. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
  278. package/dist/i3s-converter/helpers/node-pages.js +313 -133
  279. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +23 -0
  280. package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
  281. package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +76 -0
  282. package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
  283. package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
  284. package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
  285. package/dist/i3s-converter/i3s-converter.d.ts +267 -0
  286. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
  287. package/dist/i3s-converter/i3s-converter.js +891 -867
  288. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  289. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  290. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  291. package/dist/i3s-converter/json-templates/layers.d.ts +70 -0
  292. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
  293. package/dist/i3s-converter/json-templates/layers.js +138 -190
  294. package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
  295. package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
  296. package/dist/i3s-converter/json-templates/metadata.js +25 -22
  297. package/dist/i3s-converter/json-templates/node.d.ts +61 -0
  298. package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
  299. package/dist/i3s-converter/json-templates/node.js +88 -79
  300. package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
  301. package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
  302. package/dist/i3s-converter/json-templates/scene-server.js +31 -28
  303. package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
  304. package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
  305. package/dist/i3s-converter/json-templates/shared-resources.js +124 -125
  306. package/dist/i3s-converter/json-templates/store.d.ts +95 -0
  307. package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
  308. package/dist/i3s-converter/json-templates/store.js +100 -95
  309. package/dist/i3s-converter/types.d.ts +163 -0
  310. package/dist/i3s-converter/types.d.ts.map +1 -0
  311. package/dist/i3s-converter/types.js +17 -0
  312. package/dist/i3s-server/app.d.ts +3 -0
  313. package/dist/i3s-server/app.d.ts.map +1 -0
  314. package/dist/i3s-server/app.js +11 -10
  315. package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
  316. package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
  317. package/dist/i3s-server/controllers/index-controller.js +16 -24
  318. package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
  319. package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
  320. package/dist/i3s-server/controllers/slpk-controller.js +32 -0
  321. package/dist/i3s-server/routes/index.d.ts +3 -0
  322. package/dist/i3s-server/routes/index.d.ts.map +1 -0
  323. package/dist/i3s-server/routes/index.js +11 -15
  324. package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
  325. package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
  326. package/dist/i3s-server/routes/slpk-router.js +33 -0
  327. package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
  328. package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
  329. package/dist/i3s-server/utils/create-scene-server.js +14 -0
  330. package/dist/index.d.ts +3 -0
  331. package/dist/index.d.ts.map +1 -0
  332. package/dist/index.js +10 -5
  333. package/dist/lib/utils/compress-util.d.ts +45 -0
  334. package/dist/lib/utils/compress-util.d.ts.map +1 -0
  335. package/dist/lib/utils/compress-util.js +238 -160
  336. package/dist/lib/utils/file-utils.d.ts +22 -14
  337. package/dist/lib/utils/file-utils.d.ts.map +1 -0
  338. package/dist/lib/utils/file-utils.js +134 -36
  339. package/dist/lib/utils/geometry-utils.d.ts +9 -0
  340. package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
  341. package/dist/lib/utils/geometry-utils.js +18 -0
  342. package/dist/lib/utils/lod-conversion-utils.d.ts +23 -13
  343. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
  344. package/dist/lib/utils/lod-conversion-utils.js +72 -39
  345. package/dist/lib/utils/queue.d.ts +7 -0
  346. package/dist/lib/utils/queue.d.ts.map +1 -0
  347. package/dist/lib/utils/queue.js +18 -0
  348. package/dist/lib/utils/statistic-utills.d.ts +3 -25
  349. package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
  350. package/dist/lib/utils/statistic-utills.js +58 -67
  351. package/dist/lib/utils/write-queue.d.ts +39 -0
  352. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  353. package/dist/lib/utils/write-queue.js +80 -0
  354. package/dist/pgm-loader.d.ts +6 -0
  355. package/dist/pgm-loader.d.ts.map +1 -0
  356. package/dist/pgm-loader.js +23 -14
  357. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  358. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  359. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  360. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  361. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  362. package/dist/workers/i3s-attributes-worker.js +5 -0
  363. package/package.json +34 -24
  364. package/src/3d-tiles-attributes-worker.ts +43 -0
  365. package/src/3d-tiles-converter/3d-tiles-converter.ts +131 -63
  366. package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +72 -53
  367. package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
  368. package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
  369. package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
  370. package/src/constants.ts +2 -0
  371. package/src/converter-cli.ts +370 -0
  372. package/src/deps-installer/deps-installer.ts +72 -0
  373. package/src/i3s-attributes-worker.ts +59 -0
  374. package/src/i3s-converter/helpers/batch-ids-extensions.ts +202 -0
  375. package/src/i3s-converter/helpers/coordinate-converter.ts +94 -33
  376. package/src/i3s-converter/helpers/create-scene-server-path.ts +29 -0
  377. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  378. package/src/i3s-converter/helpers/geometry-attributes.ts +267 -0
  379. package/src/i3s-converter/helpers/geometry-converter.ts +1667 -0
  380. package/src/i3s-converter/helpers/gltf-attributes.ts +163 -0
  381. package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
  382. package/src/i3s-converter/helpers/node-debug.ts +146 -0
  383. package/src/i3s-converter/helpers/node-index-document.ts +335 -0
  384. package/src/i3s-converter/helpers/node-pages.ts +344 -0
  385. package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +81 -0
  386. package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
  387. package/src/i3s-converter/i3s-converter.ts +650 -669
  388. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  389. package/src/i3s-converter/json-templates/layers.ts +137 -0
  390. package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
  391. package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
  392. package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
  393. package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +17 -17
  394. package/src/i3s-converter/types.ts +185 -0
  395. package/src/i3s-server/README.md +19 -0
  396. package/src/i3s-server/app.js +8 -1
  397. package/src/i3s-server/controllers/slpk-controller.js +38 -0
  398. package/src/i3s-server/routes/slpk-router.js +33 -0
  399. package/src/i3s-server/utils/create-scene-server.js +15 -0
  400. package/src/index.ts +0 -4
  401. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  402. package/src/lib/utils/file-utils.ts +140 -0
  403. package/src/lib/utils/geometry-utils.ts +14 -0
  404. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +31 -5
  405. package/src/lib/utils/queue.ts +17 -0
  406. package/src/lib/utils/write-queue.ts +110 -0
  407. package/src/pgm-loader.ts +3 -3
  408. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  409. package/src/workers/i3s-attributes-worker.ts +7 -0
  410. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  411. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  412. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  413. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  414. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  415. package/dist/bundle.js.map +0 -1
  416. package/dist/deps-installer/deps-installer.js.map +0 -1
  417. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  418. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  419. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  420. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  421. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  422. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  423. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  424. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  425. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  426. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  427. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  428. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  429. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  430. package/dist/i3s-server/app.js.map +0 -1
  431. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  432. package/dist/i3s-server/routes/index.js.map +0 -1
  433. package/dist/index.js.map +0 -1
  434. package/dist/lib/geoid-height-model.d.ts +0 -41
  435. package/dist/lib/geoid-height-model.js +0 -140
  436. package/dist/lib/geoid-height-model.js.map +0 -1
  437. package/dist/lib/pgm-parser.d.ts +0 -14
  438. package/dist/lib/pgm-parser.js +0 -183
  439. package/dist/lib/pgm-parser.js.map +0 -1
  440. package/dist/lib/utils/compress-util.js.map +0 -1
  441. package/dist/lib/utils/compress-utils.d.ts +0 -53
  442. package/dist/lib/utils/file-utils.js.map +0 -1
  443. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  444. package/dist/lib/utils/statistic-utills.js.map +0 -1
  445. package/dist/pgm-loader.js.map +0 -1
  446. package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  447. package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  448. package/src/deps-installer/deps-installer.d.ts +0 -10
  449. package/src/deps-installer/deps-installer.js +0 -22
  450. package/src/i3s-converter/helpers/create-scene-server-path.js +0 -25
  451. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -40
  452. package/src/i3s-converter/helpers/geometry-converter.js +0 -915
  453. package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
  454. package/src/i3s-converter/helpers/node-pages.js +0 -208
  455. package/src/i3s-converter/json-templates/layers.js +0 -199
  456. package/src/lib/geoid-height-model.d.ts +0 -41
  457. package/src/lib/geoid-height-model.js +0 -239
  458. package/src/lib/pgm-parser.d.ts +0 -14
  459. package/src/lib/pgm-parser.js +0 -179
  460. package/src/lib/utils/compress-utils.d.ts +0 -53
  461. package/src/lib/utils/file-utils.d.ts +0 -43
  462. package/src/lib/utils/file-utils.js +0 -38
  463. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
  464. /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  465. /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  466. /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  467. /package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
  468. /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const queue_1 = require("./queue");
7
+ const process_1 = __importDefault(require("process"));
8
+ /** Memory limit size is based on testing */
9
+ const MEMORY_LIMIT = 4 * 1024 * 1024 * 1024; // 4GB
10
+ class WriteQueue extends queue_1.Queue {
11
+ constructor(listeningInterval = 2000, writeConcurrency = 400) {
12
+ super();
13
+ this.writePromise = null;
14
+ this.fileMap = {};
15
+ this.listeningInterval = listeningInterval;
16
+ this.writeConcurrency = writeConcurrency;
17
+ }
18
+ async enqueue(val, writeImmediately = false) {
19
+ if (writeImmediately) {
20
+ const { archiveKey, writePromise } = val;
21
+ const result = await writePromise();
22
+ if (archiveKey && result) {
23
+ this.fileMap[archiveKey] = result;
24
+ }
25
+ }
26
+ else {
27
+ super.enqueue(val);
28
+ /** https://nodejs.org/docs/latest-v14.x/api/process.html#process_process_memoryusage */
29
+ if (process_1.default.memoryUsage().rss > MEMORY_LIMIT) {
30
+ await this.startWrite();
31
+ }
32
+ }
33
+ }
34
+ startListening() {
35
+ this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
36
+ }
37
+ stopListening() {
38
+ if (this.intervalId) {
39
+ clearInterval(this.intervalId);
40
+ }
41
+ }
42
+ async startWrite() {
43
+ if (!this.writePromise) {
44
+ this.writePromise = this.doWrite();
45
+ }
46
+ await this.writePromise;
47
+ this.writePromise = null;
48
+ }
49
+ async finalize() {
50
+ this.stopListening();
51
+ await this.startWrite();
52
+ }
53
+ async doWrite() {
54
+ while (this.length) {
55
+ const promises = [];
56
+ const archiveKeys = [];
57
+ for (let i = 0; i < this.writeConcurrency; i++) {
58
+ const item = this.dequeue();
59
+ if (!item) {
60
+ break;
61
+ }
62
+ const { archiveKey, writePromise } = item;
63
+ archiveKeys.push(archiveKey);
64
+ const promise = writePromise();
65
+ promises.push(promise);
66
+ }
67
+ const writeResults = await Promise.allSettled(promises);
68
+ this.updateFileMap(archiveKeys, writeResults);
69
+ }
70
+ }
71
+ updateFileMap(archiveKeys, writeResults) {
72
+ for (let i = 0; i < archiveKeys.length; i++) {
73
+ const archiveKey = archiveKeys[i];
74
+ if (archiveKey && 'value' in writeResults[i]) {
75
+ this.fileMap[archiveKey] = writeResults[i].value;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ exports.default = WriteQueue;
@@ -0,0 +1,6 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ /**
3
+ * Loader for PGM - Netpbm grayscale image format
4
+ */
5
+ export declare const PGMLoader: LoaderWithParser;
6
+ //# sourceMappingURL=pgm-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgm-loader.d.ts","sourceRoot":"","sources":["../src/pgm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAO/D;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAavB,CAAC"}
@@ -1,15 +1,24 @@
1
- const VERSION = typeof "4.0.0-alpha.1" !== 'undefined' ? "4.0.0-alpha.1" : 'latest';
2
- import { parsePgm } from './lib/pgm-parser';
3
- export const PGMLoader = {
4
- name: 'PGM - Netpbm grayscale image format',
5
- id: 'pgm',
6
- module: 'tile-converter',
7
- version: VERSION,
8
- mimeTypes: ['image/x-portable-graymap'],
9
- parse: (arrayBuffer, options) => parsePgm(new Uint8Array(arrayBuffer), options),
10
- extensions: ['pgm'],
11
- options: {
12
- cubic: false
13
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PGMLoader = void 0;
4
+ const geoid_1 = require("@math.gl/geoid");
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
8
+ /**
9
+ * Loader for PGM - Netpbm grayscale image format
10
+ */
11
+ exports.PGMLoader = {
12
+ name: 'PGM - Netpbm grayscale image format',
13
+ id: 'pgm',
14
+ module: 'tile-converter',
15
+ version: VERSION,
16
+ mimeTypes: ['image/x-portable-graymap'],
17
+ // @ts-expect-error LoaderOptions does not have cubic parameter
18
+ parse: async (arrayBuffer, options) => (0, geoid_1.parsePGM)(new Uint8Array(arrayBuffer), options),
19
+ extensions: ['pgm'],
20
+ options: {
21
+ // TODO - use pgm namespace
22
+ cubic: false
23
+ }
14
24
  };
15
- //# sourceMappingURL=pgm-loader.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=3d-tiles-attributes-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d-tiles-attributes-worker.d.ts","sourceRoot":"","sources":["../../src/workers/3d-tiles-attributes-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
7
+ const b3dm_converter_1 = __importDefault(require("../3d-tiles-converter/helpers/b3dm-converter"));
8
+ const b3dmConverter = new b3dm_converter_1.default();
9
+ (0, worker_utils_1.createWorker)(async (data, options = {}) => b3dmConverter.convert(data, options.featureAttributes));
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i3s-attributes-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-attributes-worker.d.ts","sourceRoot":"","sources":["../../src/workers/i3s-attributes-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
4
+ const geometry_converter_1 = require("../i3s-converter/helpers/geometry-converter");
5
+ (0, worker_utils_1.createWorker)(async (data, options = {}) => await (0, geometry_converter_1.convertAttributes)(data, options.materialAndTextureList, options.useCartesianPositions));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "4.0.0-alpha.1",
3
+ "version": "4.0.0-alpha.10",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -15,9 +15,9 @@
15
15
  "3dTiles",
16
16
  "i3s"
17
17
  ],
18
- "types": "src/index.ts",
19
- "main": "dist/index.js",
20
- "module": "dist/index.js",
18
+ "types": "dist/index.d.ts",
19
+ "main": "dist/es5/index.js",
20
+ "module": "dist/esm/index.js",
21
21
  "sideEffects": false,
22
22
  "bin": {
23
23
  "tile-converter": "./bin/converter.js",
@@ -30,35 +30,41 @@
30
30
  "README.md"
31
31
  ],
32
32
  "browser": {
33
- "fs": false
33
+ "fs": false,
34
+ "path": false,
35
+ "process": false,
36
+ "archiver": false,
37
+ "join-images": false
34
38
  },
35
39
  "scripts": {
36
- "pre-build": "npm run build-bundle",
37
- "post-build": "npm run build-converter-bundle",
38
- "build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/bundle.js --platform=node",
39
- "build-converter-bundle": "webpack --display errors-only --config ./converter-webpack/bundle.js"
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
+ "build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/dist.min.js --platform=node --external:join-images",
42
+ "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\\\""
40
45
  },
41
46
  "dependencies": {
42
- "@loaders.gl/3d-tiles": "4.0.0-alpha.1",
43
- "@loaders.gl/crypto": "4.0.0-alpha.1",
44
- "@loaders.gl/draco": "4.0.0-alpha.1",
45
- "@loaders.gl/gltf": "4.0.0-alpha.1",
46
- "@loaders.gl/i3s": "4.0.0-alpha.1",
47
- "@loaders.gl/images": "4.0.0-alpha.1",
48
- "@loaders.gl/loader-utils": "4.0.0-alpha.1",
49
- "@loaders.gl/polyfills": "4.0.0-alpha.1",
50
- "@loaders.gl/tiles": "4.0.0-alpha.1",
51
- "@loaders.gl/worker-utils": "4.0.0-alpha.1",
52
- "@loaders.gl/zip": "4.0.0-alpha.1",
53
- "@luma.gl/engine": "^8.5.4",
47
+ "@loaders.gl/3d-tiles": "4.0.0-alpha.10",
48
+ "@loaders.gl/crypto": "4.0.0-alpha.10",
49
+ "@loaders.gl/draco": "4.0.0-alpha.10",
50
+ "@loaders.gl/gltf": "4.0.0-alpha.10",
51
+ "@loaders.gl/i3s": "4.0.0-alpha.10",
52
+ "@loaders.gl/images": "4.0.0-alpha.10",
53
+ "@loaders.gl/loader-utils": "4.0.0-alpha.10",
54
+ "@loaders.gl/polyfills": "4.0.0-alpha.10",
55
+ "@loaders.gl/textures": "4.0.0-alpha.10",
56
+ "@loaders.gl/tiles": "4.0.0-alpha.10",
57
+ "@loaders.gl/worker-utils": "4.0.0-alpha.10",
58
+ "@loaders.gl/zip": "4.0.0-alpha.10",
54
59
  "@math.gl/core": "^3.5.1",
55
60
  "@math.gl/culling": "^3.5.1",
61
+ "@math.gl/geoid": "^3.5.1",
56
62
  "@math.gl/geospatial": "^3.5.1",
57
63
  "archiver": "^5.0.0",
58
64
  "cors": "^2.8.5",
59
65
  "crypt": "^0.0.2",
60
66
  "debug": "~2.6.9",
61
- "express": "~4.16.1",
67
+ "express": "~4.17.3",
62
68
  "json-map-transform": "^1.2.6",
63
69
  "jszip": "^3.5.0",
64
70
  "md5": "^2.3.0",
@@ -66,7 +72,11 @@
66
72
  "uuid": "^8.1.0"
67
73
  },
68
74
  "peerDependencies": {
69
- "@loaders.gl/core": "^3.0.0"
75
+ "@loaders.gl/core": "^4.0.0-alpha.8"
70
76
  },
71
- "gitHead": "e48f5534fe7188c810f23f965a440c144b3cf6d0"
77
+ "quarantinedDependencies": {
78
+ "join-images": "^1.1.3",
79
+ "sharp": "^0.31.3"
80
+ },
81
+ "gitHead": "7efdbe09e02098aad6d985e4d6465d08806e19a9"
72
82
  }
@@ -0,0 +1,43 @@
1
+ import type {WorkerObject} from '@loaders.gl/worker-utils';
2
+ import type {FeatureAttribute} from '@loaders.gl/i3s';
3
+
4
+ import {processOnWorker} from '@loaders.gl/worker-utils';
5
+
6
+ // __VERSION__ is injected by babel-plugin-version-inline
7
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
9
+
10
+ export type Tile3DAttributesWorkerOptions = {
11
+ featureAttributes: FeatureAttribute | null;
12
+ source: string;
13
+ };
14
+
15
+ export type I3SAttributesData = {
16
+ tileContent: any;
17
+ textureFormat: string;
18
+ };
19
+
20
+ /**
21
+ * I3S Attributes Worker to handle B3DM object
22
+ */
23
+ export const Tile3dAttributesWorker = {
24
+ id: '3d-tiles-attributes',
25
+ name: '3DTiles Attributes Worker',
26
+ module: 'tile-converter',
27
+ version: VERSION,
28
+ options: {
29
+ featureAttributes: null
30
+ }
31
+ };
32
+
33
+ /**
34
+ * Performs I3S attributes transformation
35
+ */
36
+ export function transform3DTilesAttributesOnWorker(
37
+ i3sAttributesData: I3SAttributesData,
38
+ options: Tile3DAttributesWorkerOptions
39
+ ): Promise<ArrayBuffer> {
40
+ return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);
41
+ }
42
+
43
+ export const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;
@@ -1,12 +1,13 @@
1
1
  import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';
2
- import type {Node3D} from '@loaders.gl/3d-tiles';
2
+ import type {Tiles3DTileJSON} from '@loaders.gl/3d-tiles';
3
3
 
4
4
  import {join} from 'path';
5
5
  import process from 'process';
6
6
  import transform from 'json-map-transform';
7
- import {load} from '@loaders.gl/core';
8
- import {I3SLoader, I3SAttributeLoader} from '@loaders.gl/i3s';
7
+ import {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';
8
+ import {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';
9
9
  import {Tileset3D, Tile3D} from '@loaders.gl/tiles';
10
+ import {Geoid} from '@math.gl/geoid';
10
11
 
11
12
  import {PGMLoader} from '../pgm-loader';
12
13
  import {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';
@@ -14,9 +15,14 @@ import {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversio
14
15
  import {writeFile, removeDir} from '../lib/utils/file-utils';
15
16
  import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
16
17
  import {TILESET as tilesetTemplate} from './json-templates/tileset';
17
- import B3dmConverter from './helpers/b3dm-converter';
18
18
  import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
19
- import {GeoidHeightModel} from '../lib/geoid-height-model';
19
+ import {
20
+ I3SAttributesData,
21
+ Tile3dAttributesWorker,
22
+ transform3DTilesAttributesOnWorker
23
+ } from '../3d-tiles-attributes-worker';
24
+ import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
25
+ import {BROWSER_ERROR_MESSAGE} from '../constants';
20
26
 
21
27
  const I3S = 'I3S';
22
28
 
@@ -28,9 +34,10 @@ export default class Tiles3DConverter {
28
34
  tilesetPath: string;
29
35
  vertexCounter: number;
30
36
  conversionStartTime: [number, number];
31
- geoidHeightModel: GeoidHeightModel;
32
- sourceTileset: Tileset3D;
33
- attributeStorageInfo: AttributeStorageInfo;
37
+ geoidHeightModel: Geoid | null;
38
+ sourceTileset: Tileset3D | null;
39
+ attributeStorageInfo: AttributeStorageInfo | null;
40
+ workerSource: {[key: string]: string} = {};
34
41
 
35
42
  constructor() {
36
43
  this.options = {};
@@ -40,6 +47,7 @@ export default class Tiles3DConverter {
40
47
  this.geoidHeightModel = null;
41
48
  this.sourceTileset = null;
42
49
  this.attributeStorageInfo = null;
50
+ this.workerSource = {};
43
51
  }
44
52
 
45
53
  /**
@@ -51,13 +59,17 @@ export default class Tiles3DConverter {
51
59
  * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format
52
60
  * @param options.maxDepth The max tree depth of conversion
53
61
  */
54
- private async convert(options: {
62
+ public async convert(options: {
55
63
  inputUrl: string;
56
64
  outputPath: string;
57
65
  tilesetName: string;
58
- maxDepth: number;
66
+ maxDepth?: number;
59
67
  egmFilePath: string;
60
68
  }): Promise<any> {
69
+ if (isBrowser) {
70
+ console.log(BROWSER_ERROR_MESSAGE);
71
+ return BROWSER_ERROR_MESSAGE;
72
+ }
61
73
  const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;
62
74
  this.conversionStartTime = process.hrtime();
63
75
  this.options = {maxDepth};
@@ -66,11 +78,26 @@ export default class Tiles3DConverter {
66
78
  this.geoidHeightModel = await load(egmFilePath, PGMLoader);
67
79
  console.log('Loading egm file completed!'); // eslint-disable-line
68
80
 
81
+ await this.loadWorkers();
82
+
69
83
  const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
70
- this.sourceTileset = new Tileset3D(sourceTilesetJson, {});
71
84
 
72
- if (!this.sourceTileset.root.header.obb) {
73
- this.sourceTileset.root.header.obb = createObbFromMbs(this.sourceTileset.root.header.mbs);
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
+ });
96
+
97
+ await this.sourceTileset.tilesetInitializationPromise;
98
+ const rootNode = this.sourceTileset.root!;
99
+ if (!rootNode.header.obb) {
100
+ rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
74
101
  }
75
102
 
76
103
  this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);
@@ -82,20 +109,85 @@ export default class Tiles3DConverter {
82
109
  // do nothing
83
110
  }
84
111
 
85
- const rootTile: Node3D = {
112
+ const rootTile: Tiles3DTileJSON = {
86
113
  boundingVolume: {
87
- box: i3sObbTo3dTilesObb(this.sourceTileset.root.header.obb, this.geoidHeightModel)
114
+ box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)
88
115
  },
89
- geometricError: convertScreenThresholdToGeometricError(this.sourceTileset.root),
116
+ geometricError: convertScreenThresholdToGeometricError(rootNode),
90
117
  children: []
91
118
  };
92
119
 
93
- await this._addChildren(this.sourceTileset.root, rootTile, 1);
120
+ await this._addChildren(rootNode, rootTile, 1);
94
121
 
95
- const tileset = transform({root: rootTile}, tilesetTemplate);
122
+ const tileset = transform({root: rootTile}, tilesetTemplate());
96
123
  await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
97
124
 
98
125
  this._finishConversion({slpk: false, outputPath, tilesetName});
126
+
127
+ // Clean up worker pools
128
+ const workerFarm = WorkerFarm.getWorkerFarm({});
129
+ workerFarm.destroy();
130
+ }
131
+
132
+ /**
133
+ * Convert particular I3S Node
134
+ * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
135
+ * @param parentNode object in resulting tileset
136
+ * @param level a current level of a tree depth
137
+ * @param childNodeInfo child node to convert
138
+ */
139
+ private async convertChildNode(
140
+ parentSourceNode: Tile3D,
141
+ parentNode: Tiles3DTileJSON,
142
+ level: number,
143
+ childNodeInfo: NodeReference
144
+ ): Promise<void> {
145
+ const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
146
+ parentSourceNode.children.push(sourceChild);
147
+ if (sourceChild.contentUrl) {
148
+ await this.sourceTileset!._loadTile(sourceChild);
149
+ this.vertexCounter += sourceChild.content.vertexCount;
150
+
151
+ let featureAttributes: FeatureAttribute | null = null;
152
+ if (this.attributeStorageInfo) {
153
+ featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
154
+ }
155
+
156
+ if (!sourceChild.header.obb) {
157
+ sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
158
+ }
159
+
160
+ const boundingVolume = {
161
+ box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
162
+ };
163
+ const child: Tiles3DTileJSON = {
164
+ boundingVolume,
165
+ geometricError: convertScreenThresholdToGeometricError(sourceChild),
166
+ children: []
167
+ };
168
+
169
+ const i3sAttributesData: I3SAttributesData = {
170
+ tileContent: sourceChild.content,
171
+ textureFormat: sourceChild?.header?.textureFormat
172
+ };
173
+
174
+ const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
175
+ source: this.workerSource.tile3dWorkerSource,
176
+ featureAttributes
177
+ });
178
+
179
+ child.content = {
180
+ uri: `${sourceChild.id}.b3dm`,
181
+ boundingVolume
182
+ };
183
+ await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
184
+ parentNode.children.push(child);
185
+
186
+ sourceChild.unloadContent();
187
+ await this._addChildren(sourceChild, child, level + 1);
188
+ } else {
189
+ await this._addChildren(sourceChild, parentNode, level + 1);
190
+ }
99
191
  }
100
192
 
101
193
  /**
@@ -106,51 +198,17 @@ export default class Tiles3DConverter {
106
198
  */
107
199
  private async _addChildren(
108
200
  parentSourceNode: Tile3D,
109
- parentNode: Node3D,
201
+ parentNode: Tiles3DTileJSON,
110
202
  level: number
111
203
  ): Promise<void> {
112
204
  if (this.options.maxDepth && level > this.options.maxDepth) {
113
205
  return;
114
206
  }
207
+ const promises: Promise<void>[] = [];
115
208
  for (const childNodeInfo of parentSourceNode.header.children || []) {
116
- const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
117
- parentSourceNode.children.push(sourceChild);
118
- if (sourceChild.contentUrl) {
119
- await this.sourceTileset._loadTile(sourceChild);
120
- this.vertexCounter += sourceChild.content.vertexCount;
121
-
122
- let attributes = null;
123
- if (this.attributeStorageInfo) {
124
- attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
125
- }
126
-
127
- if (!sourceChild.header.obb) {
128
- sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
129
- }
130
-
131
- const boundingVolume = {
132
- box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
133
- };
134
- const child: Node3D = {
135
- boundingVolume,
136
- geometricError: convertScreenThresholdToGeometricError(sourceChild),
137
- children: []
138
- };
139
-
140
- const b3dm = await new B3dmConverter().convert(sourceChild, attributes);
141
- child.content = {
142
- uri: `${sourceChild.id}.b3dm`,
143
- boundingVolume
144
- };
145
- await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
146
- parentNode.children.push(child);
147
-
148
- sourceChild.unloadContent();
149
- await this._addChildren(sourceChild, child, level + 1);
150
- } else {
151
- await this._addChildren(sourceChild, parentNode, level + 1);
152
- }
209
+ promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
153
210
  }
211
+ await Promise.all(promises);
154
212
  }
155
213
 
156
214
  /**
@@ -161,18 +219,18 @@ export default class Tiles3DConverter {
161
219
  */
162
220
  private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {
163
221
  let header;
164
- if (this.sourceTileset.tileset.nodePages) {
222
+ if (this.sourceTileset!.tileset.nodePages) {
165
223
  console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef
166
- header = await this.sourceTileset.tileset.nodePagesTile.formTileFromNodePages(
224
+ header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(
167
225
  childNodeInfo.id
168
226
  );
169
227
  } else {
170
- const {loader} = this.sourceTileset;
171
- const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
228
+ const {loader} = this.sourceTileset!;
229
+ const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);
172
230
  // load metadata
173
231
  const options = {
174
232
  i3s: {
175
- ...this.sourceTileset.loadOptions,
233
+ ...this.sourceTileset!.loadOptions,
176
234
  isTileHeader: true,
177
235
  loadContent: false
178
236
  }
@@ -181,7 +239,7 @@ export default class Tiles3DConverter {
181
239
  console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef
182
240
  header = await load(nodeUrl, loader, options);
183
241
  }
184
- return new Tile3D(this.sourceTileset, header, parentNode);
242
+ return new Tile3D(this.sourceTileset!, header, parentNode);
185
243
  }
186
244
 
187
245
  /**
@@ -216,7 +274,7 @@ export default class Tiles3DConverter {
216
274
  sourceChild: Tile3D,
217
275
  attributeStorageInfo: AttributeStorageInfo
218
276
  ): Promise<FeatureAttribute> {
219
- const promises = [];
277
+ const promises: any[] = [];
220
278
  const {attributeUrls} = sourceChild.header;
221
279
 
222
280
  for (let index = 0; index < attributeUrls.length; index++) {
@@ -284,4 +342,14 @@ export default class Tiles3DConverter {
284
342
  console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line
285
343
  console.log(`------------------------------------------------`); // eslint-disable-line
286
344
  }
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
+ }
287
355
  }