@loaders.gl/tile-converter 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (368) 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 +13 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  8. package/dist/3d-tiles-converter/3d-tiles-converter.js +274 -233
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +9 -16
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  11. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -246
  12. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
  13. package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
  14. package/dist/3d-tiles-converter/json-templates/tileset.js +38 -35
  15. package/dist/bundle.js +2 -2
  16. package/dist/constants.d.ts +2 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +4 -0
  19. package/dist/converter-cli.d.ts +2 -0
  20. package/dist/converter-cli.d.ts.map +1 -0
  21. package/dist/converter-cli.js +280 -0
  22. package/dist/converter.min.js +185 -190
  23. package/dist/deps-installer/deps-installer.d.ts +11 -3
  24. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  25. package/dist/deps-installer/deps-installer.js +59 -18
  26. package/dist/dist.min.js +15153 -37895
  27. package/dist/es5/3d-tiles-attributes-worker.js +25 -0
  28. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  29. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
  30. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  31. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
  32. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  33. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
  34. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  35. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
  36. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  37. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
  38. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  39. package/dist/es5/bundle.js +6 -0
  40. package/dist/es5/bundle.js.map +1 -0
  41. package/dist/es5/constants.js +9 -0
  42. package/dist/es5/constants.js.map +1 -0
  43. package/dist/es5/converter-cli.js +289 -0
  44. package/dist/es5/converter-cli.js.map +1 -0
  45. package/dist/es5/deps-installer/deps-installer.js +123 -0
  46. package/dist/es5/deps-installer/deps-installer.js.map +1 -0
  47. package/dist/es5/i3s-attributes-worker.js +25 -0
  48. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  49. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
  50. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  51. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +90 -0
  52. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  53. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
  54. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  55. package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
  56. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  57. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
  58. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  59. package/dist/es5/i3s-converter/helpers/geometry-converter.js +1181 -0
  60. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
  61. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +80 -0
  62. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  63. package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
  64. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
  65. package/dist/es5/i3s-converter/helpers/node-index-document.js +492 -0
  66. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  67. package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
  68. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
  69. package/dist/es5/i3s-converter/i3s-converter.js +1512 -0
  70. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
  71. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  72. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  73. package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
  74. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
  75. package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
  76. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
  77. package/dist/es5/i3s-converter/json-templates/node.js +99 -0
  78. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
  79. package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
  80. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
  81. package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
  82. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
  83. package/dist/es5/i3s-converter/json-templates/store.js +107 -0
  84. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
  85. package/dist/es5/i3s-converter/types.js +2 -0
  86. package/dist/es5/i3s-converter/types.js.map +1 -0
  87. package/dist/es5/i3s-server/app.js +18 -0
  88. package/dist/es5/i3s-server/app.js.map +1 -0
  89. package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
  90. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
  91. package/dist/es5/i3s-server/routes/index.js +37 -0
  92. package/dist/es5/i3s-server/routes/index.js.map +1 -0
  93. package/dist/es5/index.js +21 -0
  94. package/dist/es5/index.js.map +1 -0
  95. package/dist/es5/lib/utils/compress-util.js +346 -0
  96. package/dist/es5/lib/utils/compress-util.js.map +1 -0
  97. package/dist/es5/lib/utils/file-utils.js +208 -0
  98. package/dist/es5/lib/utils/file-utils.js.map +1 -0
  99. package/dist/es5/lib/utils/geometry-utils.js +15 -0
  100. package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
  101. package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
  102. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
  103. package/dist/es5/lib/utils/queue.js +47 -0
  104. package/dist/es5/lib/utils/queue.js.map +1 -0
  105. package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
  106. package/dist/es5/lib/utils/statistic-utills.js +147 -0
  107. package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
  108. package/dist/es5/lib/utils/write-queue.js +214 -0
  109. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  110. package/dist/es5/pgm-loader.js +41 -0
  111. package/dist/es5/pgm-loader.js.map +1 -0
  112. package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
  113. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  114. package/dist/es5/workers/i3s-attributes-worker.js +30 -0
  115. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  116. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  117. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  118. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
  119. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
  120. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
  121. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
  122. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
  123. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
  124. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
  125. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
  126. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
  127. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
  128. package/dist/esm/bundle.js +4 -0
  129. package/dist/esm/bundle.js.map +1 -0
  130. package/dist/esm/constants.js +2 -0
  131. package/dist/esm/constants.js.map +1 -0
  132. package/dist/esm/converter-cli.js +232 -0
  133. package/dist/esm/converter-cli.js.map +1 -0
  134. package/dist/esm/deps-installer/deps-installer.js +44 -0
  135. package/dist/esm/deps-installer/deps-installer.js.map +1 -0
  136. package/dist/esm/i3s-attributes-worker.js +16 -0
  137. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  138. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
  139. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
  140. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +80 -0
  141. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
  142. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
  143. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
  144. package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
  145. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  146. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +190 -0
  147. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
  148. package/dist/esm/i3s-converter/helpers/geometry-converter.js +895 -0
  149. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
  150. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +73 -0
  151. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  152. package/dist/esm/i3s-converter/helpers/node-debug.js +72 -0
  153. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
  154. package/dist/esm/i3s-converter/helpers/node-index-document.js +188 -0
  155. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  156. package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
  157. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
  158. package/dist/esm/i3s-converter/i3s-converter.js +764 -0
  159. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
  160. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  161. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  162. package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
  163. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
  164. package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
  165. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
  166. package/dist/esm/i3s-converter/json-templates/node.js +80 -0
  167. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
  168. package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
  169. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
  170. package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
  171. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
  172. package/dist/esm/i3s-converter/json-templates/store.js +98 -0
  173. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
  174. package/dist/esm/i3s-converter/types.js +2 -0
  175. package/dist/esm/i3s-converter/types.js.map +1 -0
  176. package/dist/esm/i3s-server/app.js +16 -0
  177. package/dist/esm/i3s-server/app.js.map +1 -0
  178. package/dist/esm/i3s-server/bin/www +102 -0
  179. package/dist/esm/i3s-server/certs/cert.pem +19 -0
  180. package/dist/esm/i3s-server/certs/key.pem +27 -0
  181. package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
  182. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
  183. package/dist/esm/i3s-server/routes/index.js +16 -0
  184. package/dist/esm/i3s-server/routes/index.js.map +1 -0
  185. package/dist/esm/index.js +3 -0
  186. package/dist/esm/index.js.map +1 -0
  187. package/dist/esm/lib/utils/compress-util.js +168 -0
  188. package/dist/esm/lib/utils/compress-util.js.map +1 -0
  189. package/dist/esm/lib/utils/file-utils.js +87 -0
  190. package/dist/esm/lib/utils/file-utils.js.map +1 -0
  191. package/dist/esm/lib/utils/geometry-utils.js +8 -0
  192. package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
  193. package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
  194. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
  195. package/dist/esm/lib/utils/queue.js +15 -0
  196. package/dist/esm/lib/utils/queue.js.map +1 -0
  197. package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
  198. package/dist/esm/lib/utils/statistic-utills.js +62 -0
  199. package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
  200. package/dist/esm/lib/utils/write-queue.js +85 -0
  201. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  202. package/dist/esm/pgm-loader.js +15 -0
  203. package/dist/esm/pgm-loader.js.map +1 -0
  204. package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
  205. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  206. package/dist/esm/workers/i3s-attributes-worker.js +7 -0
  207. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  208. package/dist/i3s-attributes-worker.d.ts +45 -0
  209. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  210. package/dist/i3s-attributes-worker.js +9 -0
  211. package/dist/i3s-attributes-worker.js.map +7 -0
  212. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
  213. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
  214. package/dist/i3s-converter/helpers/batch-ids-extensions.js +141 -0
  215. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +9 -9
  216. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  217. package/dist/i3s-converter/helpers/coordinate-converter.js +118 -72
  218. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +5 -5
  219. package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -1
  220. package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
  221. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  222. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  223. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  224. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +4 -19
  225. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  226. package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
  227. package/dist/i3s-converter/helpers/geometry-converter.d.ts +36 -39
  228. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  229. package/dist/i3s-converter/helpers/geometry-converter.js +1150 -689
  230. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  231. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  232. package/dist/i3s-converter/helpers/gltf-attributes.js +85 -0
  233. package/dist/i3s-converter/helpers/node-debug.d.ts +7 -1
  234. package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -1
  235. package/dist/i3s-converter/helpers/node-debug.js +106 -72
  236. package/dist/i3s-converter/helpers/node-index-document.d.ts +95 -0
  237. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  238. package/dist/i3s-converter/helpers/node-index-document.js +250 -0
  239. package/dist/i3s-converter/helpers/node-pages.d.ts +81 -41
  240. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  241. package/dist/i3s-converter/helpers/node-pages.js +313 -144
  242. package/dist/i3s-converter/i3s-converter.d.ts +60 -113
  243. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  244. package/dist/i3s-converter/i3s-converter.js +858 -951
  245. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  246. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  247. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  248. package/dist/i3s-converter/json-templates/layers.d.ts +5 -30
  249. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  250. package/dist/i3s-converter/json-templates/layers.js +132 -194
  251. package/dist/i3s-converter/json-templates/metadata.js +24 -21
  252. package/dist/i3s-converter/json-templates/node.js +82 -77
  253. package/dist/i3s-converter/json-templates/scene-server.js +30 -27
  254. package/dist/i3s-converter/json-templates/shared-resources.js +116 -122
  255. package/dist/i3s-converter/json-templates/store.js +100 -95
  256. package/dist/i3s-converter/types.d.ts +137 -6
  257. package/dist/i3s-converter/types.d.ts.map +1 -1
  258. package/dist/i3s-converter/types.js +2 -2
  259. package/dist/i3s-server/app.js +2 -9
  260. package/dist/i3s-server/controllers/index-controller.js +16 -24
  261. package/dist/i3s-server/routes/index.js +11 -15
  262. package/dist/index.d.ts +0 -2
  263. package/dist/index.d.ts.map +1 -1
  264. package/dist/index.js +10 -5
  265. package/dist/lib/utils/compress-util.d.ts +12 -20
  266. package/dist/lib/utils/compress-util.d.ts.map +1 -1
  267. package/dist/lib/utils/compress-util.js +238 -160
  268. package/dist/lib/utils/file-utils.d.ts +22 -14
  269. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  270. package/dist/lib/utils/file-utils.js +133 -36
  271. package/dist/lib/utils/geometry-utils.d.ts +9 -0
  272. package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
  273. package/dist/lib/utils/geometry-utils.js +18 -0
  274. package/dist/lib/utils/lod-conversion-utils.d.ts +21 -12
  275. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  276. package/dist/lib/utils/lod-conversion-utils.js +72 -39
  277. package/dist/lib/utils/queue.d.ts +7 -0
  278. package/dist/lib/utils/queue.d.ts.map +1 -0
  279. package/dist/lib/utils/queue.js +18 -0
  280. package/dist/lib/utils/statistic-utills.d.ts +3 -25
  281. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  282. package/dist/lib/utils/statistic-utills.js +58 -67
  283. package/dist/lib/utils/write-queue.d.ts +39 -0
  284. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  285. package/dist/lib/utils/write-queue.js +80 -0
  286. package/dist/pgm-loader.d.ts.map +1 -1
  287. package/dist/pgm-loader.js +23 -14
  288. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  289. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  290. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  291. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  292. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  293. package/dist/workers/i3s-attributes-worker.js +5 -0
  294. package/package.json +32 -24
  295. package/src/3d-tiles-attributes-worker.ts +43 -0
  296. package/src/3d-tiles-converter/3d-tiles-converter.ts +102 -40
  297. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +39 -44
  298. package/src/constants.ts +2 -0
  299. package/src/converter-cli.ts +370 -0
  300. package/src/deps-installer/deps-installer.ts +71 -0
  301. package/src/i3s-attributes-worker.ts +59 -0
  302. package/src/i3s-converter/helpers/batch-ids-extensions.ts +205 -0
  303. package/src/i3s-converter/helpers/coordinate-converter.ts +33 -26
  304. package/src/i3s-converter/helpers/create-scene-server-path.ts +9 -5
  305. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  306. package/src/i3s-converter/helpers/geometry-attributes.ts +98 -47
  307. package/src/i3s-converter/helpers/geometry-converter.ts +1635 -0
  308. package/src/i3s-converter/helpers/gltf-attributes.ts +100 -0
  309. package/src/i3s-converter/helpers/node-debug.ts +68 -16
  310. package/src/i3s-converter/helpers/node-index-document.ts +315 -0
  311. package/src/i3s-converter/helpers/node-pages.ts +222 -101
  312. package/src/i3s-converter/i3s-converter.ts +408 -555
  313. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  314. package/src/i3s-converter/json-templates/layers.ts +27 -91
  315. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  316. package/src/i3s-converter/types.ts +156 -5
  317. package/src/index.ts +0 -4
  318. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  319. package/src/lib/utils/file-utils.ts +139 -0
  320. package/src/lib/utils/geometry-utils.ts +14 -0
  321. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  322. package/src/lib/utils/queue.ts +17 -0
  323. package/src/lib/utils/write-queue.ts +110 -0
  324. package/src/pgm-loader.ts +2 -2
  325. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  326. package/src/workers/i3s-attributes-worker.ts +7 -0
  327. package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
  328. package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
  329. package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
  330. package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
  331. package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
  332. package/dist/bundle.js.map +0 -1
  333. package/dist/deps-installer/deps-installer.js.map +0 -1
  334. package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
  335. package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
  336. package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
  337. package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
  338. package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
  339. package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
  340. package/dist/i3s-converter/i3s-converter.js.map +0 -1
  341. package/dist/i3s-converter/json-templates/layers.js.map +0 -1
  342. package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
  343. package/dist/i3s-converter/json-templates/node.js.map +0 -1
  344. package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
  345. package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
  346. package/dist/i3s-converter/json-templates/store.js.map +0 -1
  347. package/dist/i3s-converter/types.js.map +0 -1
  348. package/dist/i3s-server/app.js.map +0 -1
  349. package/dist/i3s-server/controllers/index-controller.js.map +0 -1
  350. package/dist/i3s-server/routes/index.js.map +0 -1
  351. package/dist/index.js.map +0 -1
  352. package/dist/lib/utils/compress-util.js.map +0 -1
  353. package/dist/lib/utils/file-utils.js.map +0 -1
  354. package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
  355. package/dist/lib/utils/statistic-utills.js.map +0 -1
  356. package/dist/pgm-loader.js.map +0 -1
  357. package/src/deps-installer/deps-installer.d.ts +0 -10
  358. package/src/deps-installer/deps-installer.js +0 -22
  359. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  360. package/src/i3s-converter/helpers/geometry-converter.js +0 -992
  361. package/src/lib/utils/compress-util.d.ts +0 -53
  362. package/src/lib/utils/file-utils.d.ts +0 -43
  363. package/src/lib/utils/file-utils.js +0 -38
  364. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
  365. /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
  366. /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
  367. /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
  368. /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "4.0.0-alpha.5",
3
+ "version": "4.0.0-alpha.7",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -16,8 +16,8 @@
16
16
  "i3s"
17
17
  ],
18
18
  "types": "dist/index.d.ts",
19
- "main": "dist/index.js",
20
- "module": "dist/index.js",
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,28 +30,32 @@
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 && npm run build-converter-bundle",
37
- "build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/dist.min.js --platform=node",
38
- "build-converter-bundle": "webpack --display errors-only --config ./converter-webpack/bundle.js",
39
- "build-bin": "BABEL_ENV=es5 babel scripts --config-file ../../babel.config.js --out-dir dist/scripts"
40
+ "pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-i3s-attributes-worker && npm run build-3d-tiles-attributes-worker",
41
+ "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.5",
43
- "@loaders.gl/crypto": "4.0.0-alpha.5",
44
- "@loaders.gl/draco": "4.0.0-alpha.5",
45
- "@loaders.gl/gltf": "4.0.0-alpha.5",
46
- "@loaders.gl/i3s": "4.0.0-alpha.5",
47
- "@loaders.gl/images": "4.0.0-alpha.5",
48
- "@loaders.gl/loader-utils": "4.0.0-alpha.5",
49
- "@loaders.gl/polyfills": "4.0.0-alpha.5",
50
- "@loaders.gl/textures": "4.0.0-alpha.5",
51
- "@loaders.gl/tiles": "4.0.0-alpha.5",
52
- "@loaders.gl/worker-utils": "4.0.0-alpha.5",
53
- "@loaders.gl/zip": "4.0.0-alpha.5",
54
- "@luma.gl/engine": "^8.5.4",
47
+ "@loaders.gl/3d-tiles": "4.0.0-alpha.7",
48
+ "@loaders.gl/crypto": "4.0.0-alpha.7",
49
+ "@loaders.gl/draco": "4.0.0-alpha.7",
50
+ "@loaders.gl/gltf": "4.0.0-alpha.7",
51
+ "@loaders.gl/i3s": "4.0.0-alpha.7",
52
+ "@loaders.gl/images": "4.0.0-alpha.7",
53
+ "@loaders.gl/loader-utils": "4.0.0-alpha.7",
54
+ "@loaders.gl/polyfills": "4.0.0-alpha.7",
55
+ "@loaders.gl/textures": "4.0.0-alpha.7",
56
+ "@loaders.gl/tiles": "4.0.0-alpha.7",
57
+ "@loaders.gl/worker-utils": "4.0.0-alpha.7",
58
+ "@loaders.gl/zip": "4.0.0-alpha.7",
55
59
  "@math.gl/core": "^3.5.1",
56
60
  "@math.gl/culling": "^3.5.1",
57
61
  "@math.gl/geoid": "^3.5.1",
@@ -60,7 +64,7 @@
60
64
  "cors": "^2.8.5",
61
65
  "crypt": "^0.0.2",
62
66
  "debug": "~2.6.9",
63
- "express": "~4.16.1",
67
+ "express": "~4.17.3",
64
68
  "json-map-transform": "^1.2.6",
65
69
  "jszip": "^3.5.0",
66
70
  "md5": "^2.3.0",
@@ -68,7 +72,11 @@
68
72
  "uuid": "^8.1.0"
69
73
  },
70
74
  "peerDependencies": {
71
- "@loaders.gl/core": "4.0.0-alpha.4"
75
+ "@loaders.gl/core": "4.0.0-alpha.6"
72
76
  },
73
- "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
77
+ "quarantinedDependencies": {
78
+ "join-images": "^1.1.3",
79
+ "sharp": "^0.31.3"
80
+ },
81
+ "gitHead": "afb59c4d8e5d8ebb9c28f111cb0c96c5527d0ffd"
74
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;
@@ -4,7 +4,7 @@ import type {Node3D} from '@loaders.gl/3d-tiles';
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';
7
+ import {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';
8
8
  import {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';
9
9
  import {Tileset3D, Tile3D} from '@loaders.gl/tiles';
10
10
  import {Geoid} from '@math.gl/geoid';
@@ -15,8 +15,14 @@ import {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversio
15
15
  import {writeFile, removeDir} from '../lib/utils/file-utils';
16
16
  import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
17
17
  import {TILESET as tilesetTemplate} from './json-templates/tileset';
18
- import B3dmConverter from './helpers/b3dm-converter';
19
18
  import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
19
+ import {
20
+ I3SAttributesData,
21
+ Tile3dAttributesWorker,
22
+ transform3DTilesAttributesOnWorker
23
+ } from '../3d-tiles-attributes-worker';
24
+ import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
25
+ import {BROWSER_ERROR_MESSAGE} from '../constants';
20
26
 
21
27
  const I3S = 'I3S';
22
28
 
@@ -31,6 +37,7 @@ export default class Tiles3DConverter {
31
37
  geoidHeightModel: Geoid | null;
32
38
  sourceTileset: Tileset3D | null;
33
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
  /**
@@ -55,9 +63,13 @@ export default class Tiles3DConverter {
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,14 +78,23 @@ 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
84
 
71
85
  this.sourceTileset = new Tileset3D(sourceTilesetJson, {
72
86
  loadOptions: {
87
+ _nodeWorkers: true,
88
+ reuseWorkers: true,
73
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
+ // }
74
94
  }
75
95
  });
76
96
 
97
+ await this.sourceTileset.tilesetInitializationPromise;
77
98
  const rootNode = this.sourceTileset.root!;
78
99
  if (!rootNode.header.obb) {
79
100
  rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
@@ -102,6 +123,71 @@ export default class Tiles3DConverter {
102
123
  await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
103
124
 
104
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: Node3D,
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: Node3D = {
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
+ }
105
191
  }
106
192
 
107
193
  /**
@@ -118,45 +204,11 @@ export default class Tiles3DConverter {
118
204
  if (this.options.maxDepth && level > this.options.maxDepth) {
119
205
  return;
120
206
  }
207
+ const promises: Promise<void>[] = [];
121
208
  for (const childNodeInfo of parentSourceNode.header.children || []) {
122
- const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
123
- parentSourceNode.children.push(sourceChild);
124
- if (sourceChild.contentUrl) {
125
- await this.sourceTileset!._loadTile(sourceChild);
126
- this.vertexCounter += sourceChild.content.vertexCount;
127
-
128
- let attributes: FeatureAttribute | null = null;
129
- if (this.attributeStorageInfo) {
130
- attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
131
- }
132
-
133
- if (!sourceChild.header.obb) {
134
- sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
135
- }
136
-
137
- const boundingVolume = {
138
- box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
139
- };
140
- const child: Node3D = {
141
- boundingVolume,
142
- geometricError: convertScreenThresholdToGeometricError(sourceChild),
143
- children: []
144
- };
145
-
146
- const b3dm = await new B3dmConverter().convert(sourceChild, attributes);
147
- child.content = {
148
- uri: `${sourceChild.id}.b3dm`,
149
- boundingVolume
150
- };
151
- await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
152
- parentNode.children.push(child);
153
-
154
- sourceChild.unloadContent();
155
- await this._addChildren(sourceChild, child, level + 1);
156
- } else {
157
- await this._addChildren(sourceChild, parentNode, level + 1);
158
- }
209
+ promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
159
210
  }
211
+ await Promise.all(promises);
160
212
  }
161
213
 
162
214
  /**
@@ -290,4 +342,14 @@ export default class Tiles3DConverter {
290
342
  console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line
291
343
  console.log(`------------------------------------------------`); // eslint-disable-line
292
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
+ }
293
355
  }
@@ -1,9 +1,12 @@
1
+ import type {I3SAttributesData} from '../../3d-tiles-attributes-worker';
2
+
1
3
  import {encodeSync} from '@loaders.gl/core';
2
4
  import {GLTFScenegraph, GLTFWriter} from '@loaders.gl/gltf';
3
5
  import {Tile3DWriter} from '@loaders.gl/3d-tiles';
4
6
  import {Matrix4, Vector3} from '@math.gl/core';
5
7
  import {Ellipsoid} from '@math.gl/geospatial';
6
8
  import {convertTextureAtlas} from './texture-atlas';
9
+ import {generateSyntheticIndices} from '../../lib/utils/geometry-utils';
7
10
 
8
11
  const Z_UP_TO_Y_UP_MATRIX = new Matrix4([1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
9
12
  const scratchVector = new Vector3();
@@ -21,15 +24,17 @@ export default class B3dmConverter {
21
24
  * @param i3sTile - Tile3D instance for I3S node
22
25
  * @returns - encoded content
23
26
  */
24
- async convert(i3sTile: Object, attributes: any = null): Promise<ArrayBuffer> {
25
- this.i3sTile = i3sTile;
26
- const gltf = await this.buildGltf(i3sTile);
27
+ async convert(
28
+ i3sAttributesData: I3SAttributesData,
29
+ featureAttributes: any = null
30
+ ): Promise<ArrayBuffer> {
31
+ const gltf = await this.buildGltf(i3sAttributesData, featureAttributes);
27
32
  const b3dm = encodeSync(
28
33
  {
29
34
  gltfEncoded: new Uint8Array(gltf),
30
35
  type: 'b3dm',
31
- featuresLength: this._getFeaturesLength(attributes),
32
- batchTable: attributes
36
+ featuresLength: this._getFeaturesLength(featureAttributes),
37
+ batchTable: featureAttributes
33
38
  },
34
39
  Tile3DWriter
35
40
  );
@@ -41,7 +46,11 @@ export default class B3dmConverter {
41
46
  * @param i3sTile - Tile3D instance for I3S node
42
47
  * @returns - encoded glb content
43
48
  */
44
- async buildGltf(i3sTile): Promise<ArrayBuffer> {
49
+ async buildGltf(
50
+ i3sAttributesData: I3SAttributesData,
51
+ featureAttributes: any
52
+ ): Promise<ArrayBuffer> {
53
+ const {tileContent, textureFormat} = i3sAttributesData;
45
54
  const {
46
55
  material,
47
56
  attributes,
@@ -49,10 +58,10 @@ export default class B3dmConverter {
49
58
  cartesianOrigin,
50
59
  cartographicOrigin,
51
60
  modelMatrix
52
- } = i3sTile.content;
61
+ } = tileContent;
53
62
  const gltfBuilder = new GLTFScenegraph();
54
63
 
55
- const textureIndex = await this._addI3sTextureToGltf(i3sTile, gltfBuilder);
64
+ const textureIndex = await this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
56
65
  const pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
57
66
  const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
58
67
 
@@ -72,11 +81,12 @@ export default class B3dmConverter {
72
81
  cartographicOrigin,
73
82
  modelMatrix
74
83
  );
84
+ this._createBatchIds(tileContent, featureAttributes);
75
85
  if (attributes.normals && !this._checkNormals(attributes.normals.value)) {
76
86
  delete attributes.normals;
77
87
  }
78
88
  const indices =
79
- originalIndices || this._generateSynteticIndices(positionsValue.length / positions.size);
89
+ originalIndices || generateSyntheticIndices(positionsValue.length / positions.size);
80
90
  const meshIndex = gltfBuilder.addMesh({
81
91
  attributes,
82
92
  indices,
@@ -101,11 +111,8 @@ export default class B3dmConverter {
101
111
  * @param {GLTFScenegraph} gltfBuilder - gltfScenegraph instance to construct GLTF
102
112
  * @returns {Promise<number | null>} - GLTF texture index
103
113
  */
104
- async _addI3sTextureToGltf(i3sTile, gltfBuilder) {
105
- const {
106
- content: {texture, material, attributes},
107
- header: {textureFormat}
108
- } = i3sTile;
114
+ async _addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder) {
115
+ const {texture, material, attributes} = tileContent;
109
116
  let textureIndex = null;
110
117
  let selectedTexture = texture;
111
118
  if (!texture && material) {
@@ -161,40 +168,28 @@ export default class B3dmConverter {
161
168
  }
162
169
 
163
170
  /**
164
- * Generate batchId attribute from faceRanges.
165
- * @param {Uint32Array} faceRanges - the source array
166
- * @returns {Float32Array} batchId list.
171
+ * Create _BATCHID attribute
172
+ * @param {Object} i3sContent - the source object
173
+ * @returns {void}
167
174
  */
168
- _generateBatchId(faceRanges) {
169
- const batchIdArraySize = (faceRanges[faceRanges.length - 1] + 1) * 3;
170
- const batchId = new Float32Array(batchIdArraySize);
171
- let rangeIndex = 0;
172
- let currentBatchId = 0;
173
-
174
- for (let index = 0; index < faceRanges.length / 2; index++) {
175
- const fromIndex = faceRanges[rangeIndex] * 3;
176
- const untilPosition = (faceRanges[rangeIndex + 1] + 1) * 3;
177
-
178
- batchId.fill(currentBatchId, fromIndex, untilPosition);
179
- rangeIndex += 2;
180
- currentBatchId += 1;
175
+ _createBatchIds(i3sContent, featureAttributes) {
176
+ const {featureIds} = i3sContent;
177
+ const {OBJECTID: objectIds} = featureAttributes || {};
178
+ if (!featureIds || !objectIds) {
179
+ return;
181
180
  }
182
- return batchId;
183
- }
184
181
 
185
- /**
186
- * luma.gl can not work without indices now:
187
- * https://github.com/visgl/luma.gl/blob/d8cad75b9f8ca3e578cf078ed9d19e619c2ddbc9/modules/experimental/src/gltf/gltf-instantiator.js#L115
188
- * This method generates syntetic indices array: [0, 1, 2, 3, .... , vertexCount-1]
189
- * @param {number} vertexCount - vertex count in the geometry
190
- * @returns {Uint32Array} indices array.
191
- */
192
- _generateSynteticIndices(vertexCount) {
193
- const result = new Uint32Array(vertexCount);
194
- for (let index = 0; index < vertexCount; index++) {
195
- result.set([index], index);
182
+ for (let i = 0; i < featureIds.length; i++) {
183
+ const featureId = featureIds[i];
184
+ const batchId = objectIds.indexOf(featureId);
185
+ featureIds[i] = batchId;
196
186
  }
197
- return result;
187
+
188
+ i3sContent.attributes._BATCHID = {
189
+ size: 1,
190
+ byteOffset: 0,
191
+ value: featureIds
192
+ };
198
193
  }
199
194
 
200
195
  /**
@@ -0,0 +1,2 @@
1
+ export const BROWSER_ERROR_MESSAGE =
2
+ 'Tile converter does not work in browser, only in node js environment';