@loaders.gl/tile-converter 3.3.0-alpha.1 → 3.3.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 (252) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +3 -3
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -1
  3. package/dist/3d-tiles-attributes-worker.js +2 -3
  4. package/dist/3d-tiles-attributes-worker.js.map +3 -3
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +8 -0
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +57 -43
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -5
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +21 -17
  11. package/dist/converter-cli.js +29 -4
  12. package/dist/converter.min.js +24 -21
  13. package/dist/deps-installer/deps-installer.d.ts +5 -1
  14. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  15. package/dist/deps-installer/deps-installer.js +29 -1
  16. package/dist/dist.min.js +61034 -64112
  17. package/dist/es5/3d-tiles-attributes-worker.js +4 -7
  18. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
  19. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +125 -210
  20. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  21. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +53 -85
  22. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  23. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -8
  24. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  25. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +0 -5
  26. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  27. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +0 -6
  28. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  29. package/dist/es5/bundle.js +0 -1
  30. package/dist/es5/bundle.js.map +1 -1
  31. package/dist/es5/constants.js.map +1 -1
  32. package/dist/es5/converter-cli.js +25 -58
  33. package/dist/es5/converter-cli.js.map +1 -1
  34. package/dist/es5/deps-installer/deps-installer.js +73 -28
  35. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  36. package/dist/es5/i3s-attributes-worker.js +3 -6
  37. package/dist/es5/i3s-attributes-worker.js.map +1 -1
  38. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +18 -29
  39. package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  40. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +8 -25
  41. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  42. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +0 -11
  43. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  44. package/dist/es5/i3s-converter/helpers/feature-attributes.js +184 -0
  45. package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
  46. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +60 -51
  47. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  48. package/dist/es5/i3s-converter/helpers/geometry-converter.js +504 -350
  49. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  50. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +57 -57
  51. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  52. package/dist/es5/i3s-converter/helpers/node-debug.js +4 -23
  53. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  54. package/dist/es5/i3s-converter/helpers/node-index-document.js +507 -0
  55. package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
  56. package/dist/es5/i3s-converter/helpers/node-pages.js +478 -168
  57. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  58. package/dist/es5/i3s-converter/i3s-converter.js +794 -1125
  59. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  60. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
  61. package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  62. package/dist/es5/i3s-converter/json-templates/layers.js +2 -107
  63. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  64. package/dist/es5/i3s-converter/json-templates/metadata.js +0 -2
  65. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  66. package/dist/es5/i3s-converter/json-templates/node.js +2 -12
  67. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  68. package/dist/es5/i3s-converter/json-templates/scene-server.js +0 -2
  69. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  70. package/dist/es5/i3s-converter/json-templates/shared-resources.js +9 -32
  71. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  72. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  73. package/dist/es5/i3s-converter/types.js.map +1 -1
  74. package/dist/es5/i3s-server/app.js +0 -5
  75. package/dist/es5/i3s-server/app.js.map +1 -1
  76. package/dist/es5/i3s-server/controllers/index-controller.js +0 -16
  77. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  78. package/dist/es5/i3s-server/routes/index.js +1 -10
  79. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  80. package/dist/es5/index.js +0 -3
  81. package/dist/es5/index.js.map +1 -1
  82. package/dist/es5/lib/utils/compress-util.js +19 -74
  83. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  84. package/dist/es5/lib/utils/file-utils.js +103 -47
  85. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  86. package/dist/es5/lib/utils/lod-conversion-utils.js +0 -7
  87. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  88. package/dist/es5/lib/utils/queue.js +0 -14
  89. package/dist/es5/lib/utils/queue.js.map +1 -1
  90. package/dist/es5/lib/utils/statistic-utills.js +1 -46
  91. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  92. package/dist/es5/lib/utils/write-queue.js +86 -87
  93. package/dist/es5/lib/utils/write-queue.js.map +1 -1
  94. package/dist/es5/pgm-loader.js +1 -8
  95. package/dist/es5/pgm-loader.js.map +1 -1
  96. package/dist/es5/workers/3d-tiles-attributes-worker.js +2 -9
  97. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -1
  98. package/dist/es5/workers/i3s-attributes-worker.js +2 -10
  99. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -1
  100. package/dist/esm/3d-tiles-attributes-worker.js +4 -2
  101. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
  102. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +60 -77
  103. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  104. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +29 -50
  105. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  106. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +1 -0
  107. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  108. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -4
  109. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  110. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +0 -3
  111. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  112. package/dist/esm/bundle.js +1 -1
  113. package/dist/esm/bundle.js.map +1 -1
  114. package/dist/esm/constants.js.map +1 -1
  115. package/dist/esm/converter-cli.js +26 -43
  116. package/dist/esm/converter-cli.js.map +1 -1
  117. package/dist/esm/deps-installer/deps-installer.js +30 -4
  118. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  119. package/dist/esm/i3s-attributes-worker.js +3 -1
  120. package/dist/esm/i3s-attributes-worker.js.map +1 -1
  121. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +20 -24
  122. package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
  123. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +11 -12
  124. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  125. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +1 -0
  126. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  127. package/dist/esm/i3s-converter/helpers/feature-attributes.js +158 -0
  128. package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
  129. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +39 -33
  130. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  131. package/dist/esm/i3s-converter/helpers/geometry-converter.js +286 -192
  132. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  133. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +59 -48
  134. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
  135. package/dist/esm/i3s-converter/helpers/node-debug.js +3 -13
  136. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  137. package/dist/esm/i3s-converter/helpers/node-index-document.js +197 -0
  138. package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
  139. package/dist/esm/i3s-converter/helpers/node-pages.js +161 -87
  140. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  141. package/dist/esm/i3s-converter/i3s-converter.js +235 -508
  142. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  143. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
  144. package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
  145. package/dist/esm/i3s-converter/json-templates/layers.js +2 -95
  146. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  147. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  148. package/dist/esm/i3s-converter/json-templates/node.js +0 -4
  149. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
  150. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  151. package/dist/esm/i3s-converter/json-templates/shared-resources.js +3 -15
  152. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  153. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  154. package/dist/esm/i3s-converter/types.js.map +1 -1
  155. package/dist/esm/i3s-server/app.js +0 -5
  156. package/dist/esm/i3s-server/app.js.map +1 -1
  157. package/dist/esm/i3s-server/controllers/index-controller.js +0 -5
  158. package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
  159. package/dist/esm/i3s-server/routes/index.js +0 -3
  160. package/dist/esm/i3s-server/routes/index.js.map +1 -1
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lib/utils/compress-util.js +19 -12
  163. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  164. package/dist/esm/lib/utils/file-utils.js +54 -11
  165. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  166. package/dist/esm/lib/utils/lod-conversion-utils.js +2 -6
  167. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  168. package/dist/esm/lib/utils/queue.js +0 -4
  169. package/dist/esm/lib/utils/queue.js.map +1 -1
  170. package/dist/esm/lib/utils/statistic-utills.js +0 -11
  171. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  172. package/dist/esm/lib/utils/write-queue.js +29 -28
  173. package/dist/esm/lib/utils/write-queue.js.map +1 -1
  174. package/dist/esm/pgm-loader.js +3 -1
  175. package/dist/esm/pgm-loader.js.map +1 -1
  176. package/dist/esm/workers/3d-tiles-attributes-worker.js +4 -1
  177. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -1
  178. package/dist/esm/workers/i3s-attributes-worker.js +4 -1
  179. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -1
  180. package/dist/i3s-attributes-worker.d.ts +7 -3
  181. package/dist/i3s-attributes-worker.d.ts.map +1 -1
  182. package/dist/i3s-attributes-worker.js +2 -3
  183. package/dist/i3s-attributes-worker.js.map +3 -3
  184. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +5 -6
  185. package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
  186. package/dist/i3s-converter/helpers/batch-ids-extensions.js +18 -4
  187. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +2 -2
  188. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  189. package/dist/i3s-converter/helpers/coordinate-converter.js +8 -6
  190. package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
  191. package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
  192. package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
  193. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  194. package/dist/i3s-converter/helpers/geometry-attributes.js +42 -17
  195. package/dist/i3s-converter/helpers/geometry-converter.d.ts +18 -6
  196. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  197. package/dist/i3s-converter/helpers/geometry-converter.js +337 -92
  198. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
  199. package/dist/i3s-converter/helpers/gltf-attributes.js +51 -32
  200. package/dist/i3s-converter/helpers/node-index-document.d.ts +91 -0
  201. package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
  202. package/dist/i3s-converter/helpers/node-index-document.js +242 -0
  203. package/dist/i3s-converter/helpers/node-pages.d.ts +81 -42
  204. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  205. package/dist/i3s-converter/helpers/node-pages.js +200 -92
  206. package/dist/i3s-converter/i3s-converter.d.ts +52 -108
  207. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  208. package/dist/i3s-converter/i3s-converter.js +234 -420
  209. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
  210. package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
  211. package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
  212. package/dist/i3s-converter/json-templates/layers.d.ts +1 -30
  213. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  214. package/dist/i3s-converter/json-templates/layers.js +2 -86
  215. package/dist/i3s-converter/json-templates/shared-resources.js +3 -3
  216. package/dist/i3s-converter/types.d.ts +37 -55
  217. package/dist/i3s-converter/types.d.ts.map +1 -1
  218. package/dist/lib/utils/file-utils.d.ts +17 -1
  219. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  220. package/dist/lib/utils/file-utils.js +64 -7
  221. package/dist/lib/utils/write-queue.d.ts +19 -2
  222. package/dist/lib/utils/write-queue.d.ts.map +1 -1
  223. package/dist/lib/utils/write-queue.js +26 -7
  224. package/dist/pgm-loader.d.ts.map +1 -1
  225. package/dist/pgm-loader.js +2 -1
  226. package/dist/workers/3d-tiles-attributes-worker.js +1 -1
  227. package/dist/workers/i3s-attributes-worker.js +1 -1
  228. package/package.json +18 -16
  229. package/src/3d-tiles-attributes-worker.ts +1 -1
  230. package/src/3d-tiles-converter/3d-tiles-converter.ts +71 -55
  231. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +25 -18
  232. package/src/converter-cli.ts +38 -4
  233. package/src/deps-installer/deps-installer.ts +38 -2
  234. package/src/i3s-attributes-worker.ts +5 -1
  235. package/src/i3s-converter/helpers/batch-ids-extensions.ts +38 -14
  236. package/src/i3s-converter/helpers/coordinate-converter.ts +10 -8
  237. package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
  238. package/src/i3s-converter/helpers/geometry-attributes.ts +46 -18
  239. package/src/i3s-converter/helpers/geometry-converter.ts +405 -108
  240. package/src/i3s-converter/helpers/gltf-attributes.ts +55 -35
  241. package/src/i3s-converter/helpers/node-index-document.ts +306 -0
  242. package/src/i3s-converter/helpers/node-pages.ts +222 -109
  243. package/src/i3s-converter/i3s-converter.ts +279 -499
  244. package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
  245. package/src/i3s-converter/json-templates/layers.ts +2 -91
  246. package/src/i3s-converter/json-templates/shared-resources.ts +3 -3
  247. package/src/i3s-converter/types.ts +31 -51
  248. package/src/lib/utils/file-utils.ts +62 -7
  249. package/src/lib/utils/write-queue.ts +43 -10
  250. package/src/pgm-loader.ts +2 -2
  251. package/src/workers/3d-tiles-attributes-worker.ts +1 -1
  252. package/src/workers/i3s-attributes-worker.ts +2 -1
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const queue_1 = require("./queue");
7
+ const process_1 = __importDefault(require("process"));
8
+ /** Memory limit size is based on testing */
9
+ const MEMORY_LIMIT = 4 * 1024 * 1024 * 1024; // 4GB
4
10
  class WriteQueue extends queue_1.Queue {
5
11
  constructor(listeningInterval = 2000, writeConcurrency = 400) {
6
12
  super();
@@ -9,6 +15,22 @@ class WriteQueue extends queue_1.Queue {
9
15
  this.listeningInterval = listeningInterval;
10
16
  this.writeConcurrency = writeConcurrency;
11
17
  }
18
+ async enqueue(val, writeImmediately = false) {
19
+ if (writeImmediately) {
20
+ const { archiveKey, writePromise } = val;
21
+ const result = await writePromise();
22
+ if (archiveKey && result) {
23
+ this.fileMap[archiveKey] = result;
24
+ }
25
+ }
26
+ else {
27
+ super.enqueue(val);
28
+ /** https://nodejs.org/docs/latest-v14.x/api/process.html#process_process_memoryusage */
29
+ if (process_1.default.memoryUsage().rss > MEMORY_LIMIT) {
30
+ await this.startWrite();
31
+ }
32
+ }
33
+ }
12
34
  startListening() {
13
35
  this.intervalId = setInterval(this.startWrite.bind(this), this.listeningInterval);
14
36
  }
@@ -18,12 +40,9 @@ class WriteQueue extends queue_1.Queue {
18
40
  }
19
41
  }
20
42
  async startWrite() {
21
- if (this.writePromise) {
22
- await this.writePromise;
23
- this.writePromise = null;
24
- return;
43
+ if (!this.writePromise) {
44
+ this.writePromise = this.doWrite();
25
45
  }
26
- this.writePromise = this.doWrite();
27
46
  await this.writePromise;
28
47
  this.writePromise = null;
29
48
  }
@@ -42,12 +61,12 @@ class WriteQueue extends queue_1.Queue {
42
61
  }
43
62
  const { archiveKey, writePromise } = item;
44
63
  archiveKeys.push(archiveKey);
45
- promises.push(writePromise);
64
+ const promise = writePromise();
65
+ promises.push(promise);
46
66
  }
47
67
  const writeResults = await Promise.allSettled(promises);
48
68
  this.updateFileMap(archiveKeys, writeResults);
49
69
  }
50
- this.writePromise = null;
51
70
  }
52
71
  updateFileMap(archiveKeys, writeResults) {
53
72
  for (let i = 0; i < archiveKeys.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"pgm-loader.d.ts","sourceRoot":"","sources":["../src/pgm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAQ/D;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAYvB,CAAC"}
1
+ {"version":3,"file":"pgm-loader.d.ts","sourceRoot":"","sources":["../src/pgm-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAO/D;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAavB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PGMLoader = void 0;
4
+ const geoid_1 = require("@math.gl/geoid");
4
5
  // __VERSION__ is injected by babel-plugin-version-inline
5
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
7
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
7
- const geoid_1 = require("@math.gl/geoid");
8
8
  /**
9
9
  * Loader for PGM - Netpbm grayscale image format
10
10
  */
@@ -14,6 +14,7 @@ exports.PGMLoader = {
14
14
  module: 'tile-converter',
15
15
  version: VERSION,
16
16
  mimeTypes: ['image/x-portable-graymap'],
17
+ // @ts-expect-error LoaderOptions does not have cubic parameter
17
18
  parse: async (arrayBuffer, options) => (0, geoid_1.parsePGM)(new Uint8Array(arrayBuffer), options),
18
19
  extensions: ['pgm'],
19
20
  options: {
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const worker_utils_1 = require("@loaders.gl/worker-utils");
7
7
  const b3dm_converter_1 = __importDefault(require("../3d-tiles-converter/helpers/b3dm-converter"));
8
8
  const b3dmConverter = new b3dm_converter_1.default();
9
- (0, worker_utils_1.createWorker)(async (data, options = {}) => b3dmConverter.convert(data, options.attributes));
9
+ (0, worker_utils_1.createWorker)(async (data, options = {}) => b3dmConverter.convert(data, options.featureAttributes));
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const worker_utils_1 = require("@loaders.gl/worker-utils");
4
4
  const geometry_converter_1 = require("../i3s-converter/helpers/geometry-converter");
5
- (0, worker_utils_1.createWorker)(async (data, options = {}) => await (0, geometry_converter_1.convertAttributes)(data, options.useCartesianPositions));
5
+ (0, worker_utils_1.createWorker)(async (data, options = {}) => await (0, geometry_converter_1.convertAttributes)(data, options.materialAndTextureList, options.useCartesianPositions));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "3.3.0-alpha.1",
3
+ "version": "3.3.0-alpha.10",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -43,19 +43,19 @@
43
43
  "build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
44
44
  },
45
45
  "dependencies": {
46
- "@loaders.gl/3d-tiles": "3.3.0-alpha.1",
47
- "@loaders.gl/crypto": "3.3.0-alpha.1",
48
- "@loaders.gl/draco": "3.3.0-alpha.1",
49
- "@loaders.gl/gltf": "3.3.0-alpha.1",
50
- "@loaders.gl/i3s": "3.3.0-alpha.1",
51
- "@loaders.gl/images": "3.3.0-alpha.1",
52
- "@loaders.gl/loader-utils": "3.3.0-alpha.1",
53
- "@loaders.gl/polyfills": "3.3.0-alpha.1",
54
- "@loaders.gl/schema": "3.3.0-alpha.1",
55
- "@loaders.gl/textures": "3.3.0-alpha.1",
56
- "@loaders.gl/tiles": "3.3.0-alpha.1",
57
- "@loaders.gl/worker-utils": "3.3.0-alpha.1",
58
- "@loaders.gl/zip": "3.3.0-alpha.1",
46
+ "@loaders.gl/3d-tiles": "3.3.0-alpha.10",
47
+ "@loaders.gl/crypto": "3.3.0-alpha.10",
48
+ "@loaders.gl/draco": "3.3.0-alpha.10",
49
+ "@loaders.gl/gltf": "3.3.0-alpha.10",
50
+ "@loaders.gl/i3s": "3.3.0-alpha.10",
51
+ "@loaders.gl/images": "3.3.0-alpha.10",
52
+ "@loaders.gl/loader-utils": "3.3.0-alpha.10",
53
+ "@loaders.gl/polyfills": "3.3.0-alpha.10",
54
+ "@loaders.gl/schema": "3.3.0-alpha.10",
55
+ "@loaders.gl/textures": "3.3.0-alpha.10",
56
+ "@loaders.gl/tiles": "3.3.0-alpha.10",
57
+ "@loaders.gl/worker-utils": "3.3.0-alpha.10",
58
+ "@loaders.gl/zip": "3.3.0-alpha.10",
59
59
  "@luma.gl/engine": "^8.5.4",
60
60
  "@math.gl/core": "^3.5.1",
61
61
  "@math.gl/culling": "^3.5.1",
@@ -65,15 +65,17 @@
65
65
  "cors": "^2.8.5",
66
66
  "crypt": "^0.0.2",
67
67
  "debug": "~2.6.9",
68
- "express": "~4.16.1",
68
+ "express": "~4.17.3",
69
+ "join-images": "^1.1.3",
69
70
  "json-map-transform": "^1.2.6",
70
71
  "jszip": "^3.5.0",
71
72
  "md5": "^2.3.0",
72
73
  "morgan": "~1.9.1",
74
+ "sharp": "^0.31.3",
73
75
  "uuid": "^8.1.0"
74
76
  },
75
77
  "peerDependencies": {
76
78
  "@loaders.gl/core": "^3.2.0"
77
79
  },
78
- "gitHead": "85ed2df7d17dd0d204c8bd8feb44779f70bc693b"
80
+ "gitHead": "53bc8d3f18fbc3445a00f8509038479119895c78"
79
81
  }
@@ -26,7 +26,7 @@ export const Tile3dAttributesWorker = {
26
26
  module: 'tile-converter',
27
27
  version: VERSION,
28
28
  options: {
29
- attributes: null
29
+ featureAttributes: null
30
30
  }
31
31
  };
32
32
 
@@ -15,12 +15,11 @@ 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';
20
19
  import {
21
20
  I3SAttributesData,
22
- Tile3dAttributesWorker
23
- /*transform3DTilesAttributesOnWorker*/
21
+ Tile3dAttributesWorker,
22
+ transform3DTilesAttributesOnWorker
24
23
  } from '../3d-tiles-attributes-worker';
25
24
  import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
26
25
  import {BROWSER_ERROR_MESSAGE} from '../constants';
@@ -85,6 +84,11 @@ export default class Tiles3DConverter {
85
84
 
86
85
  this.sourceTileset = new Tileset3D(sourceTilesetJson, {
87
86
  loadOptions: {
87
+ _nodeWorkers: true,
88
+ reuseWorkers: true,
89
+ 'i3s-content-nodejs': {
90
+ workerUrl: './modules/i3s/dist/i3s-content-nodejs-worker.js'
91
+ },
88
92
  i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}
89
93
  }
90
94
  });
@@ -124,6 +128,67 @@ export default class Tiles3DConverter {
124
128
  workerFarm.destroy();
125
129
  }
126
130
 
131
+ /**
132
+ * Convert particular I3S Node
133
+ * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
134
+ * @param parentNode object in resulting tileset
135
+ * @param level a current level of a tree depth
136
+ * @param childNodeInfo child node to convert
137
+ */
138
+ private async convertChildNode(
139
+ parentSourceNode: Tile3D,
140
+ parentNode: Node3D,
141
+ level: number,
142
+ childNodeInfo: NodeReference
143
+ ): Promise<void> {
144
+ const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
145
+ parentSourceNode.children.push(sourceChild);
146
+ if (sourceChild.contentUrl) {
147
+ await this.sourceTileset!._loadTile(sourceChild);
148
+ this.vertexCounter += sourceChild.content.vertexCount;
149
+
150
+ let featureAttributes: FeatureAttribute | null = null;
151
+ if (this.attributeStorageInfo) {
152
+ featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
153
+ }
154
+
155
+ if (!sourceChild.header.obb) {
156
+ sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
157
+ }
158
+
159
+ const boundingVolume = {
160
+ box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
161
+ };
162
+ const child: Node3D = {
163
+ boundingVolume,
164
+ geometricError: convertScreenThresholdToGeometricError(sourceChild),
165
+ children: []
166
+ };
167
+
168
+ const i3sAttributesData: I3SAttributesData = {
169
+ tileContent: sourceChild.content,
170
+ textureFormat: sourceChild?.header?.textureFormat
171
+ };
172
+
173
+ const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
174
+ source: this.workerSource.tile3dWorkerSource,
175
+ featureAttributes
176
+ });
177
+
178
+ child.content = {
179
+ uri: `${sourceChild.id}.b3dm`,
180
+ boundingVolume
181
+ };
182
+ await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
183
+ parentNode.children.push(child);
184
+
185
+ sourceChild.unloadContent();
186
+ await this._addChildren(sourceChild, child, level + 1);
187
+ } else {
188
+ await this._addChildren(sourceChild, parentNode, level + 1);
189
+ }
190
+ }
191
+
127
192
  /**
128
193
  * The recursive function of traversal of a nodes tree
129
194
  * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
@@ -138,60 +203,11 @@ export default class Tiles3DConverter {
138
203
  if (this.options.maxDepth && level > this.options.maxDepth) {
139
204
  return;
140
205
  }
206
+ const promises: Promise<void>[] = [];
141
207
  for (const childNodeInfo of parentSourceNode.header.children || []) {
142
- const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
143
- parentSourceNode.children.push(sourceChild);
144
- if (sourceChild.contentUrl) {
145
- await this.sourceTileset!._loadTile(sourceChild);
146
- this.vertexCounter += sourceChild.content.vertexCount;
147
-
148
- let featureAttributes: FeatureAttribute | null = null;
149
- if (this.attributeStorageInfo) {
150
- featureAttributes = await this._loadChildAttributes(
151
- sourceChild,
152
- this.attributeStorageInfo
153
- );
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
- // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.
175
- // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
176
- // source: this.workerSource.tile3dWorkerSource,
177
- // featureAttributes
178
- // });
179
-
180
- const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);
181
-
182
- child.content = {
183
- uri: `${sourceChild.id}.b3dm`,
184
- boundingVolume
185
- };
186
- await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
187
- parentNode.children.push(child);
188
-
189
- sourceChild.unloadContent();
190
- await this._addChildren(sourceChild, child, level + 1);
191
- } else {
192
- await this._addChildren(sourceChild, parentNode, level + 1);
193
- }
208
+ promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
194
209
  }
210
+ await Promise.all(promises);
195
211
  }
196
212
 
197
213
  /**
@@ -27,7 +27,7 @@ export default class B3dmConverter {
27
27
  i3sAttributesData: I3SAttributesData,
28
28
  featureAttributes: any = null
29
29
  ): Promise<ArrayBuffer> {
30
- const gltf = await this.buildGltf(i3sAttributesData);
30
+ const gltf = await this.buildGltf(i3sAttributesData, featureAttributes);
31
31
  const b3dm = encodeSync(
32
32
  {
33
33
  gltfEncoded: new Uint8Array(gltf),
@@ -45,7 +45,10 @@ export default class B3dmConverter {
45
45
  * @param i3sTile - Tile3D instance for I3S node
46
46
  * @returns - encoded glb content
47
47
  */
48
- async buildGltf(i3sAttributesData: I3SAttributesData): Promise<ArrayBuffer> {
48
+ async buildGltf(
49
+ i3sAttributesData: I3SAttributesData,
50
+ featureAttributes: any
51
+ ): Promise<ArrayBuffer> {
49
52
  const {tileContent, textureFormat} = i3sAttributesData;
50
53
  const {
51
54
  material,
@@ -77,6 +80,7 @@ export default class B3dmConverter {
77
80
  cartographicOrigin,
78
81
  modelMatrix
79
82
  );
83
+ this._createBatchIds(tileContent, featureAttributes);
80
84
  if (attributes.normals && !this._checkNormals(attributes.normals.value)) {
81
85
  delete attributes.normals;
82
86
  }
@@ -163,25 +167,28 @@ export default class B3dmConverter {
163
167
  }
164
168
 
165
169
  /**
166
- * Generate batchId attribute from faceRanges.
167
- * @param {Uint32Array} faceRanges - the source array
168
- * @returns {Float32Array} batchId list.
170
+ * Create _BATCHID attribute
171
+ * @param {Object} i3sContent - the source object
172
+ * @returns {void}
169
173
  */
170
- _generateBatchId(faceRanges) {
171
- const batchIdArraySize = (faceRanges[faceRanges.length - 1] + 1) * 3;
172
- const batchId = new Float32Array(batchIdArraySize);
173
- let rangeIndex = 0;
174
- let currentBatchId = 0;
175
-
176
- for (let index = 0; index < faceRanges.length / 2; index++) {
177
- const fromIndex = faceRanges[rangeIndex] * 3;
178
- const untilPosition = (faceRanges[rangeIndex + 1] + 1) * 3;
174
+ _createBatchIds(i3sContent, featureAttributes) {
175
+ const {featureIds} = i3sContent;
176
+ const {OBJECTID: objectIds} = featureAttributes || {};
177
+ if (!featureIds || !objectIds) {
178
+ return;
179
+ }
179
180
 
180
- batchId.fill(currentBatchId, fromIndex, untilPosition);
181
- rangeIndex += 2;
182
- currentBatchId += 1;
181
+ for (let i = 0; i < featureIds.length; i++) {
182
+ const featureId = featureIds[i];
183
+ const batchId = objectIds.indexOf(featureId);
184
+ featureIds[i] = batchId;
183
185
  }
184
- return batchId;
186
+
187
+ i3sContent.attributes._BATCHID = {
188
+ size: 1,
189
+ byteOffset: 0,
190
+ value: featureIds
191
+ };
185
192
  }
186
193
 
187
194
  /**
@@ -14,6 +14,10 @@ type TileConversionOptions = {
14
14
  /** Output folder. This folder will be created by converter if doesn't exist. It is relative to the converter path.
15
15
  * Default: "data" folder */
16
16
  output: string;
17
+ /** Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed */
18
+ instantNodeWriting: boolean;
19
+ /** Try to merge similar materials to be able to merge meshes into one node (I3S to 3DTiles conversion only) */
20
+ mergeMaterials: boolean;
17
21
  /** 3DTiles->I3S only. location of 7z.exe archiver to create slpk on Windows OS, default: "C:\Program Files\7-Zip\7z.exe" */
18
22
  sevenZipExe: string;
19
23
  /** location of the Earth Gravity Model (*.pgm) file to convert heights from ellipsoidal to gravity-related format,
@@ -99,6 +103,12 @@ function printHelp(): void {
99
103
  );
100
104
  console.log('--name [Tileset name]');
101
105
  console.log('--output [Output folder, default: "data" folder]');
106
+ console.log(
107
+ '--instant-node-writing [Keep created 3DNodeIndexDocument files on disk instead of memory. This option reduce memory usage but decelerates conversion speed]'
108
+ );
109
+ console.log(
110
+ '--split-nodes [Prevent to merge similar materials that could lead to incorrect visualization (I3S to 3DTiles conversion only)]'
111
+ );
102
112
  console.log('--slpk [Generate slpk (Scene Layer Packages) I3S output file]');
103
113
  console.log(
104
114
  '--tileset [tileset.json file (3DTiles) / http://..../SceneServer/layers/0 resource (I3S)]'
@@ -154,9 +164,11 @@ async function convert(options: ValidatedTileConversionOptions) {
154
164
  egmFilePath: options.egm,
155
165
  token: options.token,
156
166
  draco: options.draco,
167
+ mergeMaterials: options.mergeMaterials,
157
168
  generateTextures: options.generateTextures,
158
169
  generateBoundingVolumes: options.generateBoundingVolumes,
159
- validate: options.validate
170
+ validate: options.validate,
171
+ instantNodeWriting: options.instantNodeWriting
160
172
  });
161
173
  break;
162
174
  default:
@@ -196,7 +208,7 @@ function validateOptions(options: TileConversionOptions): ValidatedTileConversio
196
208
  }
197
209
  if (exceptions.length) {
198
210
  exceptions.forEach((exeption) => exeption());
199
- process.exit(0); // eslint-disable-line
211
+ process.exit(1);
200
212
  }
201
213
  return <ValidatedTileConversionOptions>options;
202
214
  }
@@ -222,6 +234,8 @@ function validateOptionsWithEqual(args: string[]): string[] {
222
234
  function parseOptions(args: string[]): TileConversionOptions {
223
235
  const opts: TileConversionOptions = {
224
236
  output: 'data',
237
+ instantNodeWriting: false,
238
+ mergeMaterials: true,
225
239
  sevenZipExe: 'C:\\Program Files\\7-Zip\\7z.exe',
226
240
  egm: join(process.cwd(), 'deps', 'egm2008-5.pgm'),
227
241
  draco: true,
@@ -240,7 +254,7 @@ function parseOptions(args: string[]): TileConversionOptions {
240
254
  opts.inputType = getStringValue(index, args);
241
255
  break;
242
256
  case '--tileset':
243
- opts.tileset = getStringValue(index, args);
257
+ opts.tileset = getURLValue(index, args);
244
258
  break;
245
259
  case '--name':
246
260
  opts.name = getStringValue(index, args);
@@ -248,6 +262,12 @@ function parseOptions(args: string[]): TileConversionOptions {
248
262
  case '--output':
249
263
  opts.output = getStringValue(index, args);
250
264
  break;
265
+ case '--instant-node-writing':
266
+ opts.instantNodeWriting = getBooleanValue(index, args);
267
+ break;
268
+ case '--split-nodes':
269
+ opts.mergeMaterials = getBooleanValue(index, args);
270
+ break;
251
271
  case '--max-depth':
252
272
  opts.maxDepth = getIntegerValue(index, args);
253
273
  break;
@@ -308,6 +328,20 @@ function getStringValue(index: number, args: string[]): string {
308
328
  return value;
309
329
  }
310
330
 
331
+ /**
332
+ * Modyfy URL path to be compatible with fetch
333
+ * @param index - option's name index in the argument's array.
334
+ * The value of the option should be next to name of the option.
335
+ * @param args - cli arguments array
336
+ * @returns - string value of the option
337
+ */
338
+ function getURLValue(index: number, args: string[]): string {
339
+ const value = getStringValue(index, args);
340
+ console.log(`Input tileset value: ${value}`);
341
+ console.log(`Modified tileset value: ${value.replace(/\\/g, '/')}`);
342
+ return value.replace(/\\/g, '/');
343
+ }
344
+
311
345
  /**
312
346
  * Get integer option value from cli arguments
313
347
  * @param index - option's name index in the argument's array
@@ -326,7 +360,7 @@ function getIntegerValue(index: number, args: string[]): number {
326
360
 
327
361
  function getBooleanValue(index: number, args: string[]): boolean {
328
362
  const stringValue: string = getStringValue(index, args).toLowerCase().trim();
329
- if (args[index] === '--no-draco' && !stringValue) {
363
+ if (['--no-draco', '--split-nodes'].includes(args[index]) && !stringValue) {
330
364
  return false;
331
365
  }
332
366
  if (!stringValue || stringValue === 'true') {
@@ -1,7 +1,11 @@
1
- import {load} from '@loaders.gl/core';
1
+ import {load, fetchFile} from '@loaders.gl/core';
2
2
  import {ZipLoader} from '@loaders.gl/zip';
3
3
  import {writeFile} from '../lib/utils/file-utils';
4
4
  import {join} from 'path';
5
+ import {ChildProcessProxy} from '@loaders.gl/worker-utils';
6
+
7
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
5
9
 
6
10
  const PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
7
11
 
@@ -15,8 +19,11 @@ export class DepsInstaller {
15
19
  /**
16
20
  * Run instalation
17
21
  * @param path destination folder
22
+ * @param workersPath destination folder for workers.
23
+ * This path is '' by default and is not used by tile-converter.
24
+ * It is used in tests to prevent rewriting actual workers during tests running
18
25
  */
19
- async install(path: string = ''): Promise<void> {
26
+ async install(path: string = '', workersPath: string = ''): Promise<void> {
20
27
  console.log('Installing "EGM2008-5" model...'); // eslint-disable-line no-console
21
28
  const fileMap = await load(PGM_LINK, ZipLoader, {});
22
29
 
@@ -27,6 +34,35 @@ export class DepsInstaller {
27
34
 
28
35
  await writeFile(depsPath, new Uint8Array(fileMap['geoids/egm2008-5.pgm']), 'egm2008-5.pgm');
29
36
 
37
+ console.log('Installing "I3S Content Loader worker"'); // eslint-disable-line no-console
38
+ await this.installWorker('i3s', 'i3s-content-nodejs-worker.js', workersPath);
39
+
40
+ console.log('Installing "Draco Loader worker"'); // eslint-disable-line no-console
41
+ await this.installWorker('draco', 'draco-nodejs-worker.js', workersPath);
42
+
43
+ console.log('Installing "Basis Loader worker"'); // eslint-disable-line no-console
44
+ await this.installWorker('textures', 'basis-nodejs-worker.js', workersPath);
45
+
46
+ console.log('Installing "join-images" npm package');
47
+ const childProcess = new ChildProcessProxy();
48
+ await childProcess.start({
49
+ command: 'npm',
50
+ arguments: ['install', 'sharp', 'join-images'],
51
+ wait: 0
52
+ });
53
+
30
54
  console.log('All dependencies were installed succesfully.'); // eslint-disable-line no-console
31
55
  }
56
+
57
+ private async installWorker(module: string, name: string, extraPath: string) {
58
+ const fileResponse = await fetchFile(
59
+ `https://unpkg.com/@loaders.gl/${module}@${VERSION}/dist/${name}`
60
+ );
61
+ const fileData = await fileResponse.arrayBuffer();
62
+ if (!fileData) {
63
+ return;
64
+ }
65
+ const path = join(process.cwd(), extraPath, 'modules', module, 'dist');
66
+ await writeFile(path, fileData, name);
67
+ }
32
68
  }
@@ -1,6 +1,7 @@
1
1
  import type {WorkerObject} from '@loaders.gl/worker-utils';
2
2
  import type {ConvertedAttributes} from './i3s-converter/types';
3
3
  import type {Matrix4, Vector3} from '@math.gl/core';
4
+ import type {GLTFImagePostprocessed, GLTFNodePostprocessed} from '@loaders.gl/gltf';
4
5
 
5
6
  import {processOnWorker} from '@loaders.gl/worker-utils';
6
7
 
@@ -9,13 +10,16 @@ import {processOnWorker} from '@loaders.gl/worker-utils';
9
10
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
10
11
 
11
12
  export type I3SAttributesWorkerOptions = {
13
+ _nodeWorkers: boolean;
14
+ reuseWorkers: boolean;
12
15
  useCartesianPositions: boolean;
13
16
  source: string;
14
17
  };
15
18
 
16
19
  export type B3DMAttributesData = {
17
20
  gltfMaterials?: {id: string}[];
18
- nodes: any;
21
+ nodes: GLTFNodePostprocessed[];
22
+ images: GLTFImagePostprocessed[];
19
23
  cartographicOrigin: Vector3;
20
24
  cartesianModelMatrix: Matrix4;
21
25
  };