@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
@@ -1,136 +1,316 @@
1
- import { join } from 'path';
2
- import transform from 'json-map-transform';
3
- import { METADATA as metadataTemplate } from '../json-templates/metadata';
4
- export default class NodePages {
5
- constructor(writeFileFunc, nodesPerPage) {
6
- this.nodesPerPage = nodesPerPage;
7
- this.nodesCounter = 0;
8
- this.nodePages = [{}];
9
- this.nodePages[0].nodes = [];
10
- this.writeFile = writeFileFunc;
11
- }
12
-
13
- useWriteFunction(func) {
14
- this.writeFile = func;
15
- }
16
-
17
- getNodeById(id) {
18
- const pageIndex = Math.floor(id / this.nodesPerPage);
19
- const nodeIndex = id % this.nodesPerPage;
20
- return this.nodePages[pageIndex].nodes[nodeIndex];
21
- }
22
-
23
- updateMaterialByNodeId(id, materialId) {
24
- const node = this.getNodeById(id);
25
-
26
- if (!node.mesh) {
27
- return;
28
- }
29
-
30
- node.mesh.material = {
31
- definition: materialId,
32
- resource: node.index
33
- };
34
- }
35
-
36
- updateVertexCountByNodeId(id, vertexCount) {
37
- const node = this.getNodeById(id);
38
-
39
- if (!node.mesh) {
40
- return;
41
- }
42
-
43
- node.mesh.geometry.vertexCount = vertexCount;
44
- }
45
-
46
- updateNodeAttributeByNodeId(id) {
47
- const node = this.getNodeById(id);
48
-
49
- if (!node.mesh) {
50
- return;
51
- }
52
-
53
- node.mesh.attribute.resource = node.index;
54
- }
55
-
56
- updateFeatureCountByNodeId(id, featureCount) {
57
- const node = this.getNodeById(id);
58
-
59
- if (!node.mesh) {
60
- return;
61
- }
62
-
63
- node.mesh.geometry.featureCount = featureCount;
64
- }
65
-
66
- updateTexelCountHintByNodeId(id, texelCountHint) {
67
- const node = this.getNodeById(id);
68
-
69
- if (!node.mesh || !node.mesh.material) {
70
- return;
71
- }
72
-
73
- node.mesh.material.texelCountHint = texelCountHint;
74
- }
75
-
76
- addChildRelation(parentId, childId) {
77
- if (parentId === null) {
78
- return;
79
- }
80
-
81
- const parentNode = this.getNodeById(parentId);
82
- parentNode.children.push(childId);
83
- }
84
-
85
- updateResourceInMesh(node) {
86
- if (node.mesh) {
87
- node.mesh.geometry.resource = node.index;
88
- }
89
- }
90
-
91
- push(node, parentId = null) {
92
- let currentNodePage = this.nodePages[this.nodePages.length - 1];
93
-
94
- if (currentNodePage.nodes.length === this.nodesPerPage) {
95
- currentNodePage = {
96
- nodes: []
97
- };
98
- this.nodePages.push(currentNodePage);
99
- }
100
-
101
- node.index = this.nodesCounter++;
102
- currentNodePage.nodes.push(node);
103
- this.addChildRelation(parentId, node.index);
104
- this.updateResourceInMesh(node);
105
- return node.index;
106
- }
107
-
108
- async save(layers0Path, fileMap, slpk = false) {
109
- const promises = [];
110
-
111
- if (slpk) {
112
- for (const [index, nodePage] of this.nodePages.entries()) {
113
- const nodePageStr = JSON.stringify(nodePage);
114
- const slpkPath = join(layers0Path, 'nodepages');
115
- promises.push(this.writeFile(slpkPath, nodePageStr, "".concat(index.toString(), ".json")));
116
- fileMap["nodePages/".concat(index.toString(), ".json.gz")] = "".concat(slpkPath, ".json.gz");
117
- }
118
-
119
- const metadata = transform({
120
- nodeCount: this.nodesCounter
121
- }, metadataTemplate);
122
- const compress = false;
123
- fileMap['metadata.json'] = await this.writeFile(layers0Path, JSON.stringify(metadata), 'metadata.json', compress);
124
- } else {
125
- for (const [index, nodePage] of this.nodePages.entries()) {
126
- const nodePageStr = JSON.stringify(nodePage);
127
- const nodePagePath = join(layers0Path, 'nodepages', index.toString());
128
- promises.push(this.writeFile(nodePagePath, nodePageStr));
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 path_1 = require("path");
7
+ const json_map_transform_1 = __importDefault(require("json-map-transform"));
8
+ const metadata_1 = require("../json-templates/metadata");
9
+ const file_utils_1 = require("../../lib/utils/file-utils");
10
+ /**
11
+ * class NodePages - wrapper of nodePages array
12
+ *
13
+ * @example
14
+ * import {writeFile} from './helpers/write-file';
15
+ *
16
+ * // create an instance of the class
17
+ * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);
18
+ * ...
19
+ * // push root node
20
+ * const parent = await nodePages.push({
21
+ lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
22
+ obb: coordinates.obb,
23
+ children: []
24
+ });
25
+ * ...
26
+ * // push node with parent relation
27
+ * const nodeInPage = {
28
+ lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,
29
+ obb: coordinates.obb,
30
+ children: [],
31
+ mesh: {
32
+ geometry: {
33
+ definition: 0
34
+ }
129
35
  }
36
+ };
37
+ * const node = await this.nodePages.push(nodeInPage, parent.index);
38
+ * ...
39
+ * // save all the nodePages in the end of pushing all the nodes
40
+ * await this.nodePages.save(layers0path);
41
+ */
42
+ class NodePages {
43
+ /**
44
+ * @constructs
45
+ * Create a nodePages instance.
46
+ * @param writeFileFunc - function to save one nodePage into a file
47
+ * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met
48
+ */
49
+ constructor(writeFileFunc, nodesPerPage, converter) {
50
+ this.length = 0;
51
+ this.nodesPerPage = nodesPerPage;
52
+ this.nodesCounter = 0;
53
+ // @ts-expect-error
54
+ this.nodePages = [{}];
55
+ this.nodePages[0].nodes = [];
56
+ this.writeFile = writeFileFunc;
57
+ this.converter = converter;
58
+ this.length = 0;
59
+ }
60
+ /**
61
+ * Setup function to save node pages
62
+ * @param func - function which should be used to save node pages
63
+ */
64
+ useWriteFunction(func) {
65
+ this.writeFile = func;
66
+ }
67
+ /**
68
+ * Get file path and file name of the node page with the particular id
69
+ * @param nodePageId - node page id
70
+ * @returns file path and file name
71
+ */
72
+ getNodePageFileName(nodePageId) {
73
+ let filePath;
74
+ let fileName;
75
+ if (this.converter.options.slpk) {
76
+ filePath = (0, path_1.join)(this.converter.layers0Path, 'nodepages');
77
+ fileName = `${nodePageId.toString()}.json`;
78
+ }
79
+ else {
80
+ filePath = (0, path_1.join)(this.converter.layers0Path, 'nodepages', nodePageId.toString());
81
+ fileName = 'index.json';
82
+ }
83
+ return { filePath, fileName };
84
+ }
85
+ /**
86
+ * Load node page from a file on the disk
87
+ * @param nodePageId - node page id
88
+ * @returns - node page data
89
+ */
90
+ async loadNodePage(nodePageId) {
91
+ const { filePath, fileName } = this.getNodePageFileName(nodePageId);
92
+ const fullName = (0, path_1.join)(filePath, fileName);
93
+ if (await (0, file_utils_1.isFileExists)(fullName)) {
94
+ console.log(`load ${fullName}.`); // eslint-disable-line
95
+ return (await (0, file_utils_1.openJson)(filePath, fileName));
96
+ }
97
+ else {
98
+ return { nodes: [] };
99
+ }
100
+ }
101
+ /**
102
+ * Get nodepage id by node id
103
+ * @param id node id
104
+ * @returns node page id
105
+ */
106
+ getPageIndexByNodeId(id) {
107
+ return Math.floor(id / this.nodesPerPage);
108
+ }
109
+ /**
110
+ * Get node page data by node id
111
+ * @param id node id
112
+ * @returns node page data
113
+ */
114
+ async getPageByNodeId(id) {
115
+ const pageIndex = this.getPageIndexByNodeId(id);
116
+ if (this.converter.options.instantNodeWriting) {
117
+ return await this.loadNodePage(pageIndex);
118
+ }
119
+ return this.nodePages[pageIndex];
120
+ }
121
+ /**
122
+ * Get the node by its end-to-end index
123
+ * @param id - end-to-end index of the node
124
+ * @return the node object
125
+ */
126
+ async getNodeById(id, nodePage) {
127
+ const nodeIndex = id % this.nodesPerPage;
128
+ nodePage = nodePage || (await this.getPageByNodeId(id));
129
+ return nodePage.nodes[nodeIndex];
130
+ }
131
+ /**
132
+ * Add a child id into the parent node.children array
133
+ * @param parentId - end-to-end parent node index
134
+ * @param childId - end-to-end child node index
135
+ */
136
+ async addChildRelation(parentId, childId) {
137
+ if (parentId === null || parentId === undefined) {
138
+ return;
139
+ }
140
+ const parentNode = await this.getNodeById(parentId);
141
+ parentNode.children?.push(childId);
142
+ await this.saveNode(parentNode);
143
+ }
144
+ /**
145
+ * Put new node in nodePages array
146
+ * @param node - node object
147
+ * @param parentId - index of parent node
148
+ * @return
149
+ */
150
+ async push(node, parentId) {
151
+ node.index = this.nodesCounter++;
152
+ if (!this.converter.options.instantNodeWriting) {
153
+ let currentNodePage = this.nodePages[this.nodePages.length - 1];
154
+ if (currentNodePage.nodes.length === this.nodesPerPage) {
155
+ currentNodePage = { nodes: [] };
156
+ this.nodePages.push(currentNodePage);
157
+ }
158
+ currentNodePage.nodes.push(node);
159
+ }
160
+ await this.addChildRelation(parentId, node.index);
161
+ NodePages.updateResourceInMesh(node);
162
+ await this.saveNode(node);
163
+ return node;
164
+ }
165
+ /**
166
+ * Save node to the file on the disk
167
+ * @param node - node data
168
+ */
169
+ async saveNode(node) {
170
+ if (!this.converter.options.instantNodeWriting) {
171
+ return;
172
+ }
173
+ else {
174
+ const nodePageIndex = this.getPageIndexByNodeId(node.index);
175
+ const nodePage = await this.getPageByNodeId(node.index);
176
+ const { filePath, fileName } = this.getNodePageFileName(nodePageIndex);
177
+ const nodeToUpdate = await this.getNodeById(node.index, nodePage);
178
+ if (nodeToUpdate) {
179
+ NodePages.updateAll(nodeToUpdate, node);
180
+ }
181
+ else {
182
+ nodePage.nodes.push(node);
183
+ }
184
+ const nodePageStr = JSON.stringify(nodePage);
185
+ if (this.converter.options.slpk) {
186
+ await this.converter.writeQueue.enqueue({
187
+ archiveKey: `nodePages/${nodePageIndex.toString()}.json.gz`,
188
+ writePromise: () => this.writeFile(filePath, nodePageStr, fileName, true, this.converter.compressList)
189
+ }, true);
190
+ }
191
+ else {
192
+ await this.converter.writeQueue.enqueue({
193
+ writePromise: () => this.writeFile(filePath, nodePageStr)
194
+ }, true);
195
+ }
196
+ }
197
+ }
198
+ /**
199
+ * Save metadata file (for slpk only)
200
+ */
201
+ async saveMetadata() {
202
+ const metadata = (0, json_map_transform_1.default)({ nodeCount: this.nodesCounter }, (0, metadata_1.METADATA)());
203
+ const compress = false;
204
+ await this.converter.writeQueue.enqueue({
205
+ archiveKey: 'metadata.json',
206
+ writePromise: () => this.writeFile(this.converter.layers0Path, JSON.stringify(metadata), 'metadata.json', compress)
207
+ });
208
+ }
209
+ /**
210
+ * Save all the node pages
211
+ * Run this method when all nodes is pushed in nodePages
212
+ */
213
+ async save() {
214
+ if (this.converter.options.instantNodeWriting) {
215
+ await this.saveMetadata();
216
+ return;
217
+ }
218
+ if (this.converter.options.slpk) {
219
+ for (const [index, nodePage] of this.nodePages.entries()) {
220
+ const nodePageStr = JSON.stringify(nodePage);
221
+ const slpkPath = (0, path_1.join)(this.converter.layers0Path, 'nodepages');
222
+ await this.converter.writeQueue.enqueue({
223
+ archiveKey: `nodePages/${index.toString()}.json.gz`,
224
+ writePromise: () => this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`)
225
+ });
226
+ }
227
+ await this.saveMetadata();
228
+ }
229
+ else {
230
+ for (const [index, nodePage] of this.nodePages.entries()) {
231
+ const nodePageStr = JSON.stringify(nodePage);
232
+ const nodePagePath = (0, path_1.join)(this.converter.layers0Path, 'nodepages', index.toString());
233
+ await this.converter.writeQueue.enqueue({
234
+ writePromise: () => this.writeFile(nodePagePath, nodePageStr)
235
+ });
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Update resource index in node.mesh object
241
+ * @param node - node object
242
+ */
243
+ static updateResourceInMesh(node) {
244
+ if (node.mesh && isFinite(node.index)) {
245
+ node.mesh.geometry.resource = node.index;
246
+ }
247
+ }
248
+ /**
249
+ * Update all fields in the node excluding id
250
+ * @param node - node object
251
+ * @param data - NodeInPage data to replace original data
252
+ */
253
+ static updateAll(node, data) {
254
+ Object.assign(node, data, { index: node.index });
255
+ NodePages.updateResourceInMesh(node);
256
+ return node;
257
+ }
258
+ /**
259
+ * Update material in node.mesh object by node id
260
+ * @param id - end-to-end index of the node
261
+ * @param materialId - id from scene layer materialDefinitions
262
+ */
263
+ static updateMaterialByNodeId(node, materialId) {
264
+ if (!node.mesh) {
265
+ return;
266
+ }
267
+ node.mesh.material = {
268
+ definition: materialId,
269
+ resource: node.index
270
+ };
271
+ }
272
+ /**
273
+ * Update vertexCount in node.mesh.geometry object by node id
274
+ * @param id - end-to-end index of the node
275
+ * @param vertexCount - vertex count for particular node
276
+ */
277
+ static updateVertexCountByNodeId(node, vertexCount) {
278
+ if (!node.mesh) {
279
+ return;
280
+ }
281
+ node.mesh.geometry.vertexCount = vertexCount;
282
+ }
283
+ /**
284
+ * Update resource in node.mesh.attribute object by node id
285
+ * @param node - node object
286
+ */
287
+ static updateNodeAttributeByNodeId(node) {
288
+ if (!node.mesh || !node.index) {
289
+ return;
290
+ }
291
+ node.mesh.attribute.resource = node.index;
292
+ }
293
+ /**
294
+ * Update featureCount in node.mesh.geometry object by node id
295
+ * @param node - node object
296
+ * @param featureCount - features count of the node
297
+ */
298
+ static updateFeatureCountByNodeId(node, featureCount) {
299
+ if (!node.mesh) {
300
+ return;
301
+ }
302
+ node.mesh.geometry.featureCount = featureCount;
303
+ }
304
+ /**
305
+ * Update texelCountHint in node.mesh.material object by node id
306
+ * @param node - node object
307
+ * @param texelCountHint - texelCountHint of particular node
308
+ */
309
+ static updateTexelCountHintByNodeId(node, texelCountHint) {
310
+ if (!node.mesh || !node.mesh.material) {
311
+ return;
312
+ }
313
+ node.mesh.material.texelCountHint = texelCountHint;
130
314
  }
131
-
132
- await Promise.all(promises);
133
- }
134
-
135
315
  }
136
- //# sourceMappingURL=node-pages.js.map
316
+ exports.default = NodePages;
@@ -0,0 +1,23 @@
1
+ import { Tiles3DTileContent, Tiles3DTileJSONPostprocessed } from '@loaders.gl/3d-tiles';
2
+ import { GltfPrimitiveModeString, PreprocessData } from '../types';
3
+ /**
4
+ * glTF primitive modes
5
+ * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
6
+ */
7
+ export declare const GLTF_PRIMITIVE_MODES: GltfPrimitiveModeString[];
8
+ /**
9
+ * Analyze tile content. This function is used during preprocess stage of
10
+ * conversion
11
+ * @param tile - 3DTiles tile JSON metadata
12
+ * @param tileContent - 3DTiles tile content ArrayBuffer
13
+ * @returns
14
+ */
15
+ export declare const analyzeTileContent: (tile: Tiles3DTileJSONPostprocessed, tileContent: Tiles3DTileContent | null) => Promise<PreprocessData>;
16
+ /**
17
+ * Merge object2 into object1
18
+ * @param object1
19
+ * @param object2
20
+ * @returns nothing
21
+ */
22
+ export declare const mergePreprocessData: (object1: PreprocessData, object2: PreprocessData) => void;
23
+ //# sourceMappingURL=preprocess-3d-tiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocess-3d-tiles.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/preprocess-3d-tiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,4BAA4B,EAAC,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAC,uBAAuB,EAAE,cAAc,EAAC,MAAM,UAAU,CAAC;AAIjE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2BAQhC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,SACvB,4BAA4B,eACrB,kBAAkB,GAAG,IAAI,KACrC,QAAQ,cAAc,CAmBxB,CAAC;AAqBF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,YAAa,cAAc,WAAW,cAAc,KAAG,IAKtF,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergePreprocessData = exports.analyzeTileContent = exports.GLTF_PRIMITIVE_MODES = void 0;
4
+ const types_1 = require("../types");
5
+ const gltf_1 = require("@loaders.gl/gltf");
6
+ const core_1 = require("@loaders.gl/core");
7
+ /**
8
+ * glTF primitive modes
9
+ * @see https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#_mesh_primitive_mode
10
+ */
11
+ exports.GLTF_PRIMITIVE_MODES = [
12
+ types_1.GltfPrimitiveModeString.POINTS,
13
+ types_1.GltfPrimitiveModeString.LINES,
14
+ types_1.GltfPrimitiveModeString.LINE_LOOP,
15
+ types_1.GltfPrimitiveModeString.LINE_STRIP,
16
+ types_1.GltfPrimitiveModeString.TRIANGLES,
17
+ types_1.GltfPrimitiveModeString.TRIANGLE_STRIP,
18
+ types_1.GltfPrimitiveModeString.TRIANGLE_FAN // 6
19
+ ];
20
+ /**
21
+ * Analyze tile content. This function is used during preprocess stage of
22
+ * conversion
23
+ * @param tile - 3DTiles tile JSON metadata
24
+ * @param tileContent - 3DTiles tile content ArrayBuffer
25
+ * @returns
26
+ */
27
+ const analyzeTileContent = async (tile, tileContent) => {
28
+ const result = {
29
+ meshTopologyTypes: new Set()
30
+ };
31
+ if (!tileContent?.gltfArrayBuffer) {
32
+ return result;
33
+ }
34
+ const gltfData = await (0, core_1.parse)(tileContent.gltfArrayBuffer, gltf_1.GLTFLoader, {
35
+ gltf: { normalize: false, loadBuffers: false, loadImages: false, decompressMeshes: false }
36
+ });
37
+ const gltf = gltfData.json;
38
+ if (!gltf) {
39
+ return result;
40
+ }
41
+ const meshTypes = getMeshTypesFromGltf(gltf);
42
+ result.meshTopologyTypes = meshTypes;
43
+ return result;
44
+ };
45
+ exports.analyzeTileContent = analyzeTileContent;
46
+ /**
47
+ * Get mesh topology types that the glb content has
48
+ * @param gltfJson - JSON part of GLB content
49
+ * @returns array of mesh types found
50
+ */
51
+ const getMeshTypesFromGltf = (gltfJson) => {
52
+ const result = new Set();
53
+ for (const mesh of gltfJson.meshes || []) {
54
+ for (const primitive of mesh.primitives) {
55
+ let { mode } = primitive;
56
+ if (typeof mode !== 'number') {
57
+ mode = 4; // Default is 4 - TRIANGLES
58
+ }
59
+ result.add(exports.GLTF_PRIMITIVE_MODES[mode]);
60
+ }
61
+ }
62
+ return result;
63
+ };
64
+ /**
65
+ * Merge object2 into object1
66
+ * @param object1
67
+ * @param object2
68
+ * @returns nothing
69
+ */
70
+ const mergePreprocessData = (object1, object2) => {
71
+ // Merge topology mesh types info
72
+ for (const type of object2.meshTopologyTypes) {
73
+ object1.meshTopologyTypes.add(type);
74
+ }
75
+ };
76
+ exports.mergePreprocessData = mergePreprocessData;
@@ -0,0 +1,25 @@
1
+ import { Tiles3DTileJSONPostprocessed } from '@loaders.gl/3d-tiles';
2
+ import { NodeIndexDocument } from './node-index-document';
3
+ import { Matrix4 } from '@math.gl/core';
4
+ /** Traversal props for the conversion stage */
5
+ export type TraversalConversionProps = {
6
+ /** Transformation matrix for the specific tile */
7
+ transform: Matrix4;
8
+ /** Parent nodes of the converted tile. Multiple nodes can be if one tile is converted to multiple nodes*/
9
+ parentNodes: NodeIndexDocument[];
10
+ };
11
+ /**
12
+ * Travesal of 3DTile tiles tree with making specific actions with each tile
13
+ * @param tile - 3DTiles tile JSON metadata
14
+ * @param traversalProps - traversal props used to pass data through recursive calls
15
+ * @param processTile - callback to make some actions with the current tile
16
+ * @param postprocessTile - callback to make some action after processing of the current tile and all the subtree
17
+ * @param maxDepth - max recursive calls number the travesal function will do. If not set, the traversal function will
18
+ * go through all the tree.
19
+ * This value is used to limit the convertion with only partial number of levels of the tileset
20
+ * @param level - counter to keep recursive calls number of the tiles tree. This value used to be able to break
21
+ * traversal at the some level of the tree
22
+ * @returns void
23
+ */
24
+ export declare const traverseDatasetWith: <TProps>(tile: Tiles3DTileJSONPostprocessed, traversalProps: TProps, processTile: (tile: Tiles3DTileJSONPostprocessed, traversalProps: TProps) => Promise<TProps>, postprocessTile?: ((processResults: TProps[], currentTraversalProps: TProps) => Promise<void>) | undefined, maxDepth?: number, level?: number) => Promise<void>;
25
+ //# sourceMappingURL=tileset-traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-traversal.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/tileset-traversal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAC,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,+CAA+C;AAC/C,MAAM,MAAM,wBAAwB,GAAG;IACrC,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,0GAA0G;IAC1G,WAAW,EAAE,iBAAiB,EAAE,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,iBACxB,4BAA4B,8CAEd,4BAA4B,8HAC+B,QAAQ,IAAI,CAAC,0BACjF,MAAM,qBAEhB,QAAQ,IAAI,CAkBd,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseDatasetWith = void 0;
4
+ /**
5
+ * Travesal of 3DTile tiles tree with making specific actions with each tile
6
+ * @param tile - 3DTiles tile JSON metadata
7
+ * @param traversalProps - traversal props used to pass data through recursive calls
8
+ * @param processTile - callback to make some actions with the current tile
9
+ * @param postprocessTile - callback to make some action after processing of the current tile and all the subtree
10
+ * @param maxDepth - max recursive calls number the travesal function will do. If not set, the traversal function will
11
+ * go through all the tree.
12
+ * This value is used to limit the convertion with only partial number of levels of the tileset
13
+ * @param level - counter to keep recursive calls number of the tiles tree. This value used to be able to break
14
+ * traversal at the some level of the tree
15
+ * @returns void
16
+ */
17
+ const traverseDatasetWith = async (tile, traversalProps, processTile, postprocessTile, maxDepth, level = 0) => {
18
+ if (maxDepth && level > maxDepth) {
19
+ return;
20
+ }
21
+ const processResults = [];
22
+ const newTraversalProps = await processTile(tile, traversalProps);
23
+ processResults.push(newTraversalProps);
24
+ for (const childTile of tile.children) {
25
+ await (0, exports.traverseDatasetWith)(childTile, newTraversalProps, processTile, postprocessTile, maxDepth, level + 1);
26
+ }
27
+ postprocessTile && (await postprocessTile(processResults, traversalProps));
28
+ };
29
+ exports.traverseDatasetWith = traverseDatasetWith;