@loaders.gl/tile-converter 3.2.0-alpha.1 → 3.2.0-alpha.2

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 (170) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  3. package/dist/3d-tiles-attributes-worker.js +4 -0
  4. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +4 -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 +29 -3
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -4
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +10 -10
  11. package/dist/converter.min.js +20 -20
  12. package/dist/dist.min.js +789 -645
  13. package/dist/es5/3d-tiles-attributes-worker.js +29 -0
  14. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  15. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +102 -43
  16. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  17. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +21 -23
  18. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  19. package/dist/es5/i3s-attributes-worker.js +29 -0
  20. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  21. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
  22. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
  24. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  25. package/dist/es5/i3s-converter/helpers/geometry-converter.js +267 -178
  26. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  27. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
  28. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  29. package/dist/es5/i3s-converter/helpers/node-pages.js +47 -99
  30. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  31. package/dist/es5/i3s-converter/i3s-converter.js +230 -195
  32. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  33. package/dist/es5/index.js +8 -0
  34. package/dist/es5/index.js.map +1 -1
  35. package/dist/es5/lib/utils/compress-util.js +14 -17
  36. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  37. package/dist/es5/lib/utils/file-utils.js +39 -14
  38. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  39. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  40. package/dist/es5/lib/utils/queue.js +61 -0
  41. package/dist/es5/lib/utils/queue.js.map +1 -0
  42. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  43. package/dist/es5/lib/utils/write-queue.js +225 -0
  44. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  45. package/dist/es5/pgm-loader.js +1 -1
  46. package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
  47. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  48. package/dist/es5/workers/i3s-attributes-worker.js +40 -0
  49. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  50. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  51. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  52. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +30 -4
  53. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  54. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +16 -18
  55. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  56. package/dist/esm/i3s-attributes-worker.js +16 -0
  57. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  58. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
  59. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  60. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
  61. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  62. package/dist/esm/i3s-converter/helpers/geometry-converter.js +117 -58
  63. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  64. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
  65. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  66. package/dist/esm/i3s-converter/helpers/node-pages.js +12 -4
  67. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  68. package/dist/esm/i3s-converter/i3s-converter.js +105 -28
  69. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  70. package/dist/esm/index.js +1 -0
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/lib/utils/compress-util.js +6 -8
  73. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  74. package/dist/esm/lib/utils/file-utils.js +11 -1
  75. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  76. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  77. package/dist/esm/lib/utils/queue.js +19 -0
  78. package/dist/esm/lib/utils/queue.js.map +1 -0
  79. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  80. package/dist/esm/lib/utils/write-queue.js +88 -0
  81. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  82. package/dist/esm/pgm-loader.js +1 -1
  83. package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
  84. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  85. package/dist/esm/workers/i3s-attributes-worker.js +4 -0
  86. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  87. package/dist/i3s-attributes-worker.d.ts +33 -0
  88. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  89. package/dist/i3s-attributes-worker.js +10 -0
  90. package/dist/i3s-attributes-worker.js.map +7 -0
  91. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +7 -7
  92. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  93. package/dist/i3s-converter/helpers/coordinate-converter.js +25 -21
  94. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +2 -2
  95. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  96. package/dist/i3s-converter/helpers/geometry-attributes.js +2 -1
  97. package/dist/i3s-converter/helpers/geometry-converter.d.ts +28 -11
  98. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  99. package/dist/i3s-converter/helpers/geometry-converter.js +220 -110
  100. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  101. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  102. package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
  103. package/dist/i3s-converter/helpers/node-pages.d.ts +6 -5
  104. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  105. package/dist/i3s-converter/helpers/node-pages.js +13 -8
  106. package/dist/i3s-converter/i3s-converter.d.ts +7 -3
  107. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  108. package/dist/i3s-converter/i3s-converter.js +88 -26
  109. package/dist/i3s-converter/types.d.ts +83 -8
  110. package/dist/i3s-converter/types.d.ts.map +1 -1
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.d.ts.map +1 -1
  113. package/dist/index.js +3 -1
  114. package/dist/lib/utils/compress-util.d.ts +44 -5
  115. package/dist/lib/utils/compress-util.d.ts.map +1 -1
  116. package/dist/lib/utils/compress-util.js +73 -6
  117. package/dist/lib/utils/file-utils.d.ts +34 -5
  118. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  119. package/dist/lib/utils/file-utils.js +40 -1
  120. package/dist/lib/utils/lod-conversion-utils.d.ts +25 -4
  121. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  122. package/dist/lib/utils/lod-conversion-utils.js +21 -2
  123. package/dist/lib/utils/queue.d.ts +7 -0
  124. package/dist/lib/utils/queue.d.ts.map +1 -0
  125. package/dist/lib/utils/queue.js +18 -0
  126. package/dist/lib/utils/statistic-utills.d.ts +2 -2
  127. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  128. package/dist/lib/utils/write-queue.d.ts +22 -0
  129. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  130. package/dist/lib/utils/write-queue.js +62 -0
  131. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  132. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  133. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  134. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  135. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  136. package/dist/workers/i3s-attributes-worker.js +5 -0
  137. package/package.json +20 -17
  138. package/src/3d-tiles-attributes-worker.ts +43 -0
  139. package/src/3d-tiles-converter/3d-tiles-converter.ts +44 -4
  140. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +15 -13
  141. package/src/i3s-attributes-worker.ts +46 -0
  142. package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
  143. package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
  144. package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +421 -175
  145. package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
  146. package/src/i3s-converter/helpers/node-pages.ts +25 -17
  147. package/src/i3s-converter/i3s-converter.ts +112 -69
  148. package/src/i3s-converter/types.ts +90 -8
  149. package/src/index.ts +1 -0
  150. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  151. package/src/lib/utils/file-utils.ts +84 -0
  152. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  153. package/src/lib/utils/queue.ts +17 -0
  154. package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
  155. package/src/lib/utils/write-queue.ts +75 -0
  156. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  157. package/src/workers/i3s-attributes-worker.ts +6 -0
  158. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  159. package/dist/es5/lib/utils/compress-util.d.ts +0 -53
  160. package/dist/es5/lib/utils/file-utils.d.ts +0 -43
  161. package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
  162. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  163. package/dist/esm/lib/utils/compress-util.d.ts +0 -53
  164. package/dist/esm/lib/utils/file-utils.d.ts +0 -43
  165. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
  166. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  167. package/src/lib/utils/compress-util.d.ts +0 -53
  168. package/src/lib/utils/file-utils.d.ts +0 -43
  169. package/src/lib/utils/file-utils.js +0 -38
  170. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.transform3DTilesAttributesOnWorker = transform3DTilesAttributesOnWorker;
7
+ exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
8
+
9
+ var _workerUtils = require("@loaders.gl/worker-utils");
10
+
11
+ var VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
12
+ var Tile3dAttributesWorker = {
13
+ id: '3d-tiles-attributes',
14
+ name: '3DTiles Attributes Worker',
15
+ module: 'tile-converter',
16
+ version: VERSION,
17
+ options: {
18
+ attributes: null
19
+ }
20
+ };
21
+ exports.Tile3dAttributesWorker = Tile3dAttributesWorker;
22
+
23
+ function transform3DTilesAttributesOnWorker(i3sAttributesData, options) {
24
+ return (0, _workerUtils.processOnWorker)(Tile3dAttributesWorker, i3sAttributesData, options);
25
+ }
26
+
27
+ var _typecheckI3SAttributesWorker = Tile3dAttributesWorker;
28
+ exports._typecheckI3SAttributesWorker = _typecheckI3SAttributesWorker;
29
+ //# sourceMappingURL=3d-tiles-attributes-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/3d-tiles-attributes-worker.ts"],"names":["VERSION","Tile3dAttributesWorker","id","name","module","version","options","attributes","transform3DTilesAttributesOnWorker","i3sAttributesData","_typecheckI3SAttributesWorker"],"mappings":";;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAeO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,EAAE,EAAE,qBADgC;AAEpCC,EAAAA,IAAI,EAAE,2BAF8B;AAGpCC,EAAAA,MAAM,EAAE,gBAH4B;AAIpCC,EAAAA,OAAO,EAAEL,OAJ2B;AAKpCM,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AAL2B,CAA/B;;;AAaA,SAASC,kCAAT,CACLC,iBADK,EAELH,OAFK,EAGiB;AACtB,SAAO,kCAAgBL,sBAAhB,EAAwCQ,iBAAxC,EAA2DH,OAA3D,CAAP;AACD;;AAEM,IAAMI,6BAA2C,GAAGT,sBAApD","sourcesContent":["import type {WorkerObject} from '@loaders.gl/worker-utils';\nimport type {FeatureAttribute} from '@loaders.gl/i3s';\n\nimport {processOnWorker} from '@loaders.gl/worker-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type Tile3DAttributesWorkerOptions = {\n featureAttributes: FeatureAttribute | null;\n source: string;\n};\n\nexport type I3SAttributesData = {\n tileContent: any;\n textureFormat: string;\n};\n\n/**\n * I3S Attributes Worker to handle B3DM object\n */\nexport const Tile3dAttributesWorker = {\n id: '3d-tiles-attributes',\n name: '3DTiles Attributes Worker',\n module: 'tile-converter',\n version: VERSION,\n options: {\n attributes: null\n }\n};\n\n/**\n * Performs I3S attributes transformation\n */\nexport function transform3DTilesAttributesOnWorker(\n i3sAttributesData: I3SAttributesData,\n options: Tile3DAttributesWorkerOptions\n): Promise<ArrayBuffer> {\n return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);\n}\n\nexport const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;\n"],"file":"3d-tiles-attributes-worker.js"}
@@ -47,6 +47,10 @@ var _b3dmConverter = _interopRequireDefault(require("./helpers/b3dm-converter"))
47
47
 
48
48
  var _coordinateConverter = require("../i3s-converter/helpers/coordinate-converter");
49
49
 
50
+ var _dTilesAttributesWorker = require("../3d-tiles-attributes-worker");
51
+
52
+ var _workerUtils = require("@loaders.gl/worker-utils");
53
+
50
54
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
51
55
 
52
56
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -69,6 +73,7 @@ var Tiles3DConverter = function () {
69
73
  (0, _defineProperty2.default)(this, "geoidHeightModel", void 0);
70
74
  (0, _defineProperty2.default)(this, "sourceTileset", void 0);
71
75
  (0, _defineProperty2.default)(this, "attributeStorageInfo", void 0);
76
+ (0, _defineProperty2.default)(this, "workerSource", {});
72
77
  this.options = {};
73
78
  this.tilesetPath = '';
74
79
  this.vertexCounter = 0;
@@ -76,13 +81,14 @@ var Tiles3DConverter = function () {
76
81
  this.geoidHeightModel = null;
77
82
  this.sourceTileset = null;
78
83
  this.attributeStorageInfo = null;
84
+ this.workerSource = {};
79
85
  }
80
86
 
81
87
  (0, _createClass2.default)(Tiles3DConverter, [{
82
88
  key: "convert",
83
89
  value: function () {
84
90
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
85
- var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset;
91
+ var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset, workerFarm;
86
92
  return _regenerator.default.wrap(function _callee$(_context) {
87
93
  while (1) {
88
94
  switch (_context.prev = _context.next) {
@@ -100,9 +106,13 @@ var Tiles3DConverter = function () {
100
106
  this.geoidHeightModel = _context.sent;
101
107
  console.log('Loading egm file completed!');
102
108
  _context.next = 10;
103
- return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
109
+ return this.loadWorkers();
104
110
 
105
111
  case 10:
112
+ _context.next = 12;
113
+ return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
114
+
115
+ case 12:
106
116
  sourceTilesetJson = _context.sent;
107
117
  this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
108
118
  loadOptions: {
@@ -112,6 +122,10 @@ var Tiles3DConverter = function () {
112
122
  }
113
123
  }
114
124
  });
125
+ _context.next = 16;
126
+ return this.sourceTileset.tilesetInitializationPromise;
127
+
128
+ case 16:
115
129
  rootNode = this.sourceTileset.root;
116
130
 
117
131
  if (!rootNode.header.obb) {
@@ -120,19 +134,19 @@ var Tiles3DConverter = function () {
120
134
 
121
135
  this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
122
136
  this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
123
- _context.prev = 16;
124
- _context.next = 19;
137
+ _context.prev = 20;
138
+ _context.next = 23;
125
139
  return (0, _fileUtils.removeDir)(this.tilesetPath);
126
140
 
127
- case 19:
128
- _context.next = 23;
141
+ case 23:
142
+ _context.next = 27;
129
143
  break;
130
144
 
131
- case 21:
132
- _context.prev = 21;
133
- _context.t0 = _context["catch"](16);
145
+ case 25:
146
+ _context.prev = 25;
147
+ _context.t0 = _context["catch"](20);
134
148
 
135
- case 23:
149
+ case 27:
136
150
  rootTile = {
137
151
  boundingVolume: {
138
152
  box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
@@ -140,29 +154,32 @@ var Tiles3DConverter = function () {
140
154
  geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
141
155
  children: []
142
156
  };
143
- _context.next = 26;
157
+ _context.next = 30;
144
158
  return this._addChildren(rootNode, rootTile, 1);
145
159
 
146
- case 26:
160
+ case 30:
147
161
  tileset = (0, _jsonMapTransform.default)({
148
162
  root: rootTile
149
163
  }, (0, _tileset.TILESET)());
150
- _context.next = 29;
164
+ _context.next = 33;
151
165
  return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
152
166
 
153
- case 29:
167
+ case 33:
154
168
  this._finishConversion({
155
169
  slpk: false,
156
170
  outputPath: outputPath,
157
171
  tilesetName: tilesetName
158
172
  });
159
173
 
160
- case 30:
174
+ workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
175
+ workerFarm.destroy();
176
+
177
+ case 36:
161
178
  case "end":
162
179
  return _context.stop();
163
180
  }
164
181
  }
165
- }, _callee, this, [[16, 21]]);
182
+ }, _callee, this, [[20, 25]]);
166
183
  }));
167
184
 
168
185
  function convert(_x) {
@@ -175,7 +192,7 @@ var Tiles3DConverter = function () {
175
192
  key: "_addChildren",
176
193
  value: function () {
177
194
  var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
178
- var _iterator, _step, childNodeInfo, sourceChild, attributes, boundingVolume, child, b3dm;
195
+ var _iterator, _step, childNodeInfo, sourceChild, _sourceChild$header, featureAttributes, boundingVolume, child, i3sAttributesData, b3dm;
179
196
 
180
197
  return _regenerator.default.wrap(function _callee2$(_context2) {
181
198
  while (1) {
@@ -196,7 +213,7 @@ var Tiles3DConverter = function () {
196
213
 
197
214
  case 5:
198
215
  if ((_step = _iterator.n()).done) {
199
- _context2.next = 39;
216
+ _context2.next = 40;
200
217
  break;
201
218
  }
202
219
 
@@ -209,7 +226,7 @@ var Tiles3DConverter = function () {
209
226
  parentSourceNode.children.push(sourceChild);
210
227
 
211
228
  if (!sourceChild.contentUrl) {
212
- _context2.next = 35;
229
+ _context2.next = 36;
213
230
  break;
214
231
  }
215
232
 
@@ -218,7 +235,7 @@ var Tiles3DConverter = function () {
218
235
 
219
236
  case 14:
220
237
  this.vertexCounter += sourceChild.content.vertexCount;
221
- attributes = null;
238
+ featureAttributes = null;
222
239
 
223
240
  if (!this.attributeStorageInfo) {
224
241
  _context2.next = 20;
@@ -229,7 +246,7 @@ var Tiles3DConverter = function () {
229
246
  return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
230
247
 
231
248
  case 19:
232
- attributes = _context2.sent;
249
+ featureAttributes = _context2.sent;
233
250
 
234
251
  case 20:
235
252
  if (!sourceChild.header.obb) {
@@ -244,59 +261,63 @@ var Tiles3DConverter = function () {
244
261
  geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
245
262
  children: []
246
263
  };
247
- _context2.next = 25;
248
- return new _b3dmConverter.default().convert(sourceChild, attributes);
264
+ i3sAttributesData = {
265
+ tileContent: sourceChild.content,
266
+ textureFormat: sourceChild === null || sourceChild === void 0 ? void 0 : (_sourceChild$header = sourceChild.header) === null || _sourceChild$header === void 0 ? void 0 : _sourceChild$header.textureFormat
267
+ };
268
+ _context2.next = 26;
269
+ return new _b3dmConverter.default().convert(i3sAttributesData, featureAttributes);
249
270
 
250
- case 25:
271
+ case 26:
251
272
  b3dm = _context2.sent;
252
273
  child.content = {
253
274
  uri: "".concat(sourceChild.id, ".b3dm"),
254
275
  boundingVolume: boundingVolume
255
276
  };
256
- _context2.next = 29;
277
+ _context2.next = 30;
257
278
  return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
258
279
 
259
- case 29:
280
+ case 30:
260
281
  parentNode.children.push(child);
261
282
  sourceChild.unloadContent();
262
- _context2.next = 33;
283
+ _context2.next = 34;
263
284
  return this._addChildren(sourceChild, child, level + 1);
264
285
 
265
- case 33:
266
- _context2.next = 37;
286
+ case 34:
287
+ _context2.next = 38;
267
288
  break;
268
289
 
269
- case 35:
270
- _context2.next = 37;
290
+ case 36:
291
+ _context2.next = 38;
271
292
  return this._addChildren(sourceChild, parentNode, level + 1);
272
293
 
273
- case 37:
294
+ case 38:
274
295
  _context2.next = 5;
275
296
  break;
276
297
 
277
- case 39:
278
- _context2.next = 44;
298
+ case 40:
299
+ _context2.next = 45;
279
300
  break;
280
301
 
281
- case 41:
282
- _context2.prev = 41;
302
+ case 42:
303
+ _context2.prev = 42;
283
304
  _context2.t0 = _context2["catch"](3);
284
305
 
285
306
  _iterator.e(_context2.t0);
286
307
 
287
- case 44:
288
- _context2.prev = 44;
308
+ case 45:
309
+ _context2.prev = 45;
289
310
 
290
311
  _iterator.f();
291
312
 
292
- return _context2.finish(44);
313
+ return _context2.finish(45);
293
314
 
294
- case 47:
315
+ case 48:
295
316
  case "end":
296
317
  return _context2.stop();
297
318
  }
298
319
  }
299
- }, _callee2, this, [[3, 41, 44, 47]]);
320
+ }, _callee2, this, [[3, 42, 45, 48]]);
300
321
  }));
301
322
 
302
323
  function _addChildren(_x2, _x3, _x4) {
@@ -458,8 +479,8 @@ var Tiles3DConverter = function () {
458
479
  for (var index = 0; index < attributesList.length; index++) {
459
480
  var attributeObject = attributesList[index];
460
481
 
461
- for (var key in attributeObject) {
462
- attributeObject[key] = Array.from(attributeObject[key]);
482
+ for (var _key in attributeObject) {
483
+ attributeObject[_key] = Array.from(attributeObject[_key]);
463
484
  }
464
485
  }
465
486
  }
@@ -500,6 +521,44 @@ var Tiles3DConverter = function () {
500
521
 
501
522
  return _finishConversion;
502
523
  }()
524
+ }, {
525
+ key: "loadWorkers",
526
+ value: function () {
527
+ var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
528
+ var tile3dAttributesWorkerUrl, sourceResponse, source;
529
+ return _regenerator.default.wrap(function _callee6$(_context6) {
530
+ while (1) {
531
+ switch (_context6.prev = _context6.next) {
532
+ case 0:
533
+ console.log("Loading workers source...");
534
+ tile3dAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_dTilesAttributesWorker.Tile3dAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
535
+ _context6.next = 4;
536
+ return (0, _core.fetchFile)(tile3dAttributesWorkerUrl);
537
+
538
+ case 4:
539
+ sourceResponse = _context6.sent;
540
+ _context6.next = 7;
541
+ return sourceResponse.text();
542
+
543
+ case 7:
544
+ source = _context6.sent;
545
+ this.workerSource.tile3dWorkerSource = source;
546
+ console.log("Loading workers source completed!");
547
+
548
+ case 10:
549
+ case "end":
550
+ return _context6.stop();
551
+ }
552
+ }
553
+ }, _callee6, this);
554
+ }));
555
+
556
+ function loadWorkers() {
557
+ return _loadWorkers.apply(this, arguments);
558
+ }
559
+
560
+ return loadWorkers;
561
+ }()
503
562
  }]);
504
563
  return Tiles3DConverter;
505
564
  }();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","attributes","_loadChildAttributes","child","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let attributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const b3dm = await new B3dmConverter().convert(sourceChild, attributes);\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n}\n"],"file":"3d-tiles-converter.js"}
1
+ {"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","workerSource","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","loadWorkers","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","tilesetInitializationPromise","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","workerFarm","WorkerFarm","getWorkerFarm","destroy","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","featureAttributes","_loadChildAttributes","child","i3sAttributesData","tileContent","textureFormat","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime","tile3dAttributesWorkerUrl","Tile3dAttributesWorker","sourceResponse","text","source","tile3dWorkerSource"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,KAAZ;;IAKqBC,gB;AAUnB,8BAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAF0B,EAE1B;AACZ,SAAKC,OAAL,GAAe,EAAf;AACA,SAAKC,WAAL,GAAmB,EAAnB;AACA,SAAKC,aAAL,GAAqB,CAArB;AACA,SAAKC,mBAAL,GAA2B,CAAC,CAAD,EAAI,CAAJ,CAA3B;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,oBAAL,GAA4B,IAA5B;AACA,SAAKC,YAAL,GAAoB,EAApB;AACD;;;;;+EAWD,iBAAqBP,OAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOSQ,gBAAAA,QAPT,GAOqER,OAPrE,CAOSQ,QAPT,EAOmBC,UAPnB,GAOqET,OAPrE,CAOmBS,UAPnB,EAO+BC,WAP/B,GAOqEV,OAPrE,CAO+BU,WAP/B,EAO4CC,QAP5C,GAOqEX,OAPrE,CAO4CW,QAP5C,EAOsDC,WAPtD,GAOqEZ,OAPrE,CAOsDY,WAPtD;AAQE,qBAAKT,mBAAL,GAA2BU,iBAAQC,MAAR,EAA3B;AACA,qBAAKd,OAAL,GAAe;AAACW,kBAAAA,QAAQ,EAARA;AAAD,iBAAf;AAEAI,gBAAAA,OAAO,CAACC,GAAR,CAAY,qBAAZ;AAXF;AAAA,uBAYgC,gBAAKJ,WAAL,EAAkBK,oBAAlB,CAZhC;;AAAA;AAYE,qBAAKb,gBAZP;AAaEW,gBAAAA,OAAO,CAACC,GAAR,CAAY,6BAAZ;AAbF;AAAA,uBAeQ,KAAKE,WAAL,EAfR;;AAAA;AAAA;AAAA,uBAiBkC,gBAAKV,QAAL,EAAeW,cAAf,EAA0B,EAA1B,CAjBlC;;AAAA;AAiBQC,gBAAAA,iBAjBR;AAmBE,qBAAKf,aAAL,GAAqB,IAAIgB,gBAAJ,CAAcD,iBAAd,EAAiC;AACpDE,kBAAAA,WAAW,EAAE;AACXC,oBAAAA,GAAG,EAAE;AAACC,sBAAAA,gBAAgB,EAAEC,uBAAkBC,cAArC;AAAqDC,sBAAAA,cAAc,EAAE;AAArE;AADM;AADuC,iBAAjC,CAArB;AAnBF;AAAA,uBAyBQ,KAAKtB,aAAL,CAAmBuB,4BAzB3B;;AAAA;AA0BQC,gBAAAA,QA1BR,GA0BmB,KAAKxB,aAAL,CAAmByB,IA1BtC;;AA2BE,oBAAI,CAACD,QAAQ,CAACE,MAAT,CAAgBC,GAArB,EAA0B;AACxBH,kBAAAA,QAAQ,CAACE,MAAT,CAAgBC,GAAhB,GAAsB,2CAAiBH,QAAQ,CAACE,MAAT,CAAgBE,GAAjC,CAAtB;AACD;;AAED,qBAAKhC,WAAL,GAAmB,0BAAQQ,UAAR,aAAyBC,WAAzB,EAAnB;AACA,qBAAKJ,oBAAL,GAA4Bc,iBAAiB,CAACd,oBAA9C;AAhCF;AAAA;AAAA,uBAmCU,0BAAU,KAAKL,WAAf,CAnCV;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAwCQiC,gBAAAA,QAxCR,GAwC2B;AACvBC,kBAAAA,cAAc,EAAE;AACdC,oBAAAA,GAAG,EAAE,4CAAmBP,QAAQ,CAACE,MAAT,CAAgBC,GAAnC,EAAwC,KAAK5B,gBAA7C;AADS,mBADO;AAIvBiC,kBAAAA,cAAc,EAAE,gEAAuCR,QAAvC,CAJO;AAKvBS,kBAAAA,QAAQ,EAAE;AALa,iBAxC3B;AAAA;AAAA,uBAgDQ,KAAKC,YAAL,CAAkBV,QAAlB,EAA4BK,QAA5B,EAAsC,CAAtC,CAhDR;;AAAA;AAkDQM,gBAAAA,OAlDR,GAkDkB,+BAAU;AAACV,kBAAAA,IAAI,EAAEI;AAAP,iBAAV,EAA4B,uBAA5B,CAlDlB;AAAA;AAAA,uBAmDQ,0BAAU,KAAKjC,WAAf,EAA4BwC,IAAI,CAACC,SAAL,CAAeF,OAAf,CAA5B,EAAqD,cAArD,CAnDR;;AAAA;AAqDE,qBAAKG,iBAAL,CAAuB;AAACC,kBAAAA,IAAI,EAAE,KAAP;AAAcnC,kBAAAA,UAAU,EAAVA,UAAd;AAA0BC,kBAAAA,WAAW,EAAXA;AAA1B,iBAAvB;;AAGMmC,gBAAAA,UAxDR,GAwDqBC,wBAAWC,aAAX,CAAyB,EAAzB,CAxDrB;AAyDEF,gBAAAA,UAAU,CAACG,OAAX;;AAzDF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oFAkEA,kBACEC,gBADF,EAEEC,UAFF,EAGEC,KAHF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKM,KAAKnD,OAAL,CAAaW,QAAb,IAAyBwC,KAAK,GAAG,KAAKnD,OAAL,CAAaW,QALpD;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,uDAQ8BsC,gBAAgB,CAAClB,MAAjB,CAAwBO,QAAxB,IAAoC,EARlE;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAQac,gBAAAA,aARb;AAAA;AAAA,uBAS8B,KAAKC,cAAL,CAAoBJ,gBAApB,EAAsCG,aAAtC,CAT9B;;AAAA;AASUE,gBAAAA,WATV;AAUIL,gBAAAA,gBAAgB,CAACX,QAAjB,CAA0BiB,IAA1B,CAA+BD,WAA/B;;AAVJ,qBAWQA,WAAW,CAACE,UAXpB;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAYY,KAAKnD,aAAL,CAAoBoD,SAApB,CAA8BH,WAA9B,CAZZ;;AAAA;AAaM,qBAAKpD,aAAL,IAAsBoD,WAAW,CAACI,OAAZ,CAAoBC,WAA1C;AAEIC,gBAAAA,iBAfV,GAeuD,IAfvD;;AAAA,qBAgBU,KAAKtD,oBAhBf;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAiBkC,KAAKuD,oBAAL,CACxBP,WADwB,EAExB,KAAKhD,oBAFmB,CAjBlC;;AAAA;AAiBQsD,gBAAAA,iBAjBR;;AAAA;AAuBM,oBAAI,CAACN,WAAW,CAACvB,MAAZ,CAAmBC,GAAxB,EAA6B;AAC3BsB,kBAAAA,WAAW,CAACvB,MAAZ,CAAmBC,GAAnB,GAAyB,2CAAiBsB,WAAW,CAACvB,MAAZ,CAAmBE,GAApC,CAAzB;AACD;;AAEKE,gBAAAA,cA3BZ,GA2B6B;AACrBC,kBAAAA,GAAG,EAAE,4CAAmBkB,WAAW,CAACvB,MAAZ,CAAmBC,GAAtC,EAA2C,KAAK5B,gBAAhD;AADgB,iBA3B7B;AA8BY0D,gBAAAA,KA9BZ,GA8B4B;AACpB3B,kBAAAA,cAAc,EAAdA,cADoB;AAEpBE,kBAAAA,cAAc,EAAE,gEAAuCiB,WAAvC,CAFI;AAGpBhB,kBAAAA,QAAQ,EAAE;AAHU,iBA9B5B;AAoCYyB,gBAAAA,iBApCZ,GAoCmD;AAC3CC,kBAAAA,WAAW,EAAEV,WAAW,CAACI,OADkB;AAE3CO,kBAAAA,aAAa,EAAEX,WAAF,aAAEA,WAAF,8CAAEA,WAAW,CAAEvB,MAAf,wDAAE,oBAAqBkC;AAFO,iBApCnD;AAAA;AAAA,uBA+CyB,IAAIC,sBAAJ,GAAoBC,OAApB,CAA4BJ,iBAA5B,EAA+CH,iBAA/C,CA/CzB;;AAAA;AA+CYQ,gBAAAA,IA/CZ;AAiDMN,gBAAAA,KAAK,CAACJ,OAAN,GAAgB;AACdW,kBAAAA,GAAG,YAAKf,WAAW,CAACgB,EAAjB,UADW;AAEdnC,kBAAAA,cAAc,EAAdA;AAFc,iBAAhB;AAjDN;AAAA,uBAqDY,0BAAU,KAAKlC,WAAf,EAA4B,IAAIsE,UAAJ,CAAeH,IAAf,CAA5B,YAAqDd,WAAW,CAACgB,EAAjE,WArDZ;;AAAA;AAsDMpB,gBAAAA,UAAU,CAACZ,QAAX,CAAoBiB,IAApB,CAAyBO,KAAzB;AAEAR,gBAAAA,WAAW,CAACkB,aAAZ;AAxDN;AAAA,uBAyDY,KAAKjC,YAAL,CAAkBe,WAAlB,EAA+BQ,KAA/B,EAAsCX,KAAK,GAAG,CAA9C,CAzDZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,uBA2DY,KAAKZ,YAAL,CAAkBe,WAAlB,EAA+BJ,UAA/B,EAA2CC,KAAK,GAAG,CAAnD,CA3DZ;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sFAsEA,kBAA6BD,UAA7B,EAAiDE,aAAjD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qBAEM,KAAK/C,aAAL,CAAoBmC,OAApB,CAA4BiC,SAFlC;AAAA;AAAA;AAAA;;AAGI1D,gBAAAA,OAAO,CAACC,GAAR,4BAAgCoC,aAAa,CAACkB,EAA9C;AAHJ;AAAA,uBAImB,KAAKjE,aAAL,CAAoBmC,OAApB,CAA4BkC,aAA5B,CAA0CC,qBAA1C,CACbvB,aAAa,CAACkB,EADD,CAJnB;;AAAA;AAIIvC,gBAAAA,MAJJ;AAAA;AAAA;;AAAA;AAAA,uBAQqB,KAAK1B,aAR1B,EAQWuE,MARX,QAQWA,MARX;AASUC,gBAAAA,OATV,GASoB,KAAKC,qBAAL,CAA2B5B,UAAU,CAAC6B,GAAtC,EAA2C3B,aAAa,CAAC4B,IAAzD,CATpB;AAWUhF,gBAAAA,OAXV,GAWoB;AACduB,kBAAAA,GAAG,kCACE,KAAKlB,aAAL,CAAoBiB,WADtB;AAED2D,oBAAAA,YAAY,EAAE,IAFb;AAGDC,oBAAAA,WAAW,EAAE;AAHZ;AADW,iBAXpB;AAmBInE,gBAAAA,OAAO,CAACC,GAAR,4BAAgC6D,OAAhC;AAnBJ;AAAA,uBAoBmB,gBAAKA,OAAL,EAAcD,MAAd,EAAsB5E,OAAtB,CApBnB;;AAAA;AAoBI+B,gBAAAA,MApBJ;;AAAA;AAAA,kDAsBS,IAAIoD,aAAJ,CAAW,KAAK9E,aAAhB,EAAgC0B,MAAhC,EAAwCmB,UAAxC,CAtBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA8BA,+BAA8BkC,OAA9B,EAA+CC,WAA/C,EAA4E;AAC1E,UAAIC,WAAW,GAAGF,OAAO,CAACG,KAAR,CAAc,GAAd,CAAlB;AACA,UAAMC,gBAAgB,GAAGH,WAAW,CAACE,KAAZ,CAAkB,GAAlB,CAAzB;;AAF0E,kDAGrDC,gBAHqD;AAAA;;AAAA;AAG1E,+DAAuC;AAAA,cAA5BC,MAA4B;;AACrC,kBAAQA,MAAR;AACE,iBAAK,GAAL;AACE;;AACF,iBAAK,IAAL;AACEH,cAAAA,WAAW,GAAGA,WAAW,CAACI,KAAZ,CAAkB,CAAlB,EAAqB,CAAC,CAAtB,CAAd;AACA;;AACF;AACEJ,cAAAA,WAAW,CAAC/B,IAAZ,CAAiBkC,MAAjB;AAPJ;AASD;AAbyE;AAAA;AAAA;AAAA;AAAA;;AAc1E,aAAOH,WAAW,CAACK,IAAZ,CAAiB,GAAjB,CAAP;AACD;;;;4FAQD,kBACErC,WADF,EAEEhD,oBAFF;AAAA;AAAA;AAAA;AAAA;AAAA;AAIQsF,gBAAAA,QAJR,GAI0B,EAJ1B;AAKSC,gBAAAA,aALT,GAK0BvC,WAAW,CAACvB,MALtC,CAKS8D,aALT;;AAOE,qBAASC,KAAT,GAAiB,CAAjB,EAAoBA,KAAK,GAAGD,aAAa,CAACE,MAA1C,EAAkDD,KAAK,EAAvD,EAA2D;AACnDtF,kBAAAA,QADmD,GACxCqF,aAAa,CAACC,KAAD,CAD2B;AAEnDE,kBAAAA,SAFmD,GAEvC1F,oBAAoB,CAACwF,KAAD,CAFmB;AAGnD9F,kBAAAA,OAHmD,GAGzC;AACdiG,oBAAAA,aAAa,EAAED,SAAS,CAACE,IADX;AAEdC,oBAAAA,aAAa,EAAE,KAAKC,iBAAL,CAAuBJ,SAAvB;AAFD,mBAHyC;AAQzDJ,kBAAAA,QAAQ,CAACrC,IAAT,CAAc,gBAAK/C,QAAL,EAAe6F,uBAAf,EAAmCrG,OAAnC,CAAd;AACD;;AAhBH;AAAA,uBAiB+BsG,OAAO,CAACC,GAAR,CAAYX,QAAZ,CAjB/B;;AAAA;AAiBQY,gBAAAA,cAjBR;;AAkBE,qBAAKC,oBAAL,CAA0BD,cAA1B;;AAlBF,kDAmBSE,MAAM,CAACC,MAAP,OAAAD,MAAM,GAAQ,EAAR,0CAAeF,cAAf,GAnBf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA6BA,2BAA0BR,SAA1B,EAAmE;AACjE,UAAIA,SAAS,CAACY,eAAd,EAA+B;AAC7B,eAAOZ,SAAS,CAACY,eAAV,CAA0BC,SAAjC;AACD,OAFD,MAEO,IAAIb,SAAS,CAACc,SAAd,EAAyB;AAC9B,eAAO,OAAP;AACD;;AACD,aAAO,EAAP;AACD;;;WAMD,8BAA6BN,cAA7B,EAAuE;AACrE,WAAK,IAAIV,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGU,cAAc,CAACT,MAA3C,EAAmDD,KAAK,EAAxD,EAA4D;AAC1D,YAAMiB,eAAe,GAAGP,cAAc,CAACV,KAAD,CAAtC;;AAEA,aAAK,IAAMkB,IAAX,IAAkBD,eAAlB,EAAmC;AACjCA,UAAAA,eAAe,CAACC,IAAD,CAAf,GAAuBC,KAAK,CAACC,IAAN,CAAWH,eAAe,CAACC,IAAD,CAA1B,CAAvB;AACD;AACF;AACF;;;;yFAMD,kBAAgCG,MAAhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK0B,yCAAmBA,MAAnB,CAL1B;;AAAA;AAKQC,gBAAAA,SALR;AAMQC,gBAAAA,IANR,GAMexG,iBAAQC,MAAR,CAAe,KAAKX,mBAApB,CANf;AAOQmH,gBAAAA,cAPR,GAOyB,oCAAcD,IAAd,CAPzB;AASEtG,gBAAAA,OAAO,CAACC,GAAR;AACAD,gBAAAA,OAAO,CAACC,GAAR,gCAAoClB,GAApC;AACAiB,gBAAAA,OAAO,CAACC,GAAR,kCAAsCsG,cAAtC;AACAvG,gBAAAA,OAAO,CAACC,GAAR,mBAA8B,KAAKd,aAAnC;AACAa,gBAAAA,OAAO,CAACC,GAAR,mBAA8BoG,SAA9B,EAAyC,QAAzC;AACArG,gBAAAA,OAAO,CAACC,GAAR;;AAdF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mFAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACED,gBAAAA,OAAO,CAACC,GAAR;AACMuG,gBAAAA,yBAFR,GAEoC,+BAAaC,8CAAb,oBAAyC,6BAAzC,EAFpC;AAAA;AAAA,uBAG+B,qBAAUD,yBAAV,CAH/B;;AAAA;AAGQE,gBAAAA,cAHR;AAAA;AAAA,uBAIuBA,cAAc,CAACC,IAAf,EAJvB;;AAAA;AAIQC,gBAAAA,MAJR;AAME,qBAAKpH,YAAL,CAAkBqH,kBAAlB,GAAuCD,MAAvC;AACA5G,gBAAAA,OAAO,CAACC,GAAR;;AAPF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {fetchFile, getLoaderOptions, load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\nimport {\n I3SAttributesData,\n Tile3dAttributesWorker\n /*transform3DTilesAttributesOnWorker*/\n} from '../3d-tiles-attributes-worker';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n workerSource: {[key: string]: string} = {};\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n this.workerSource = {};\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n await this.loadWorkers();\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n await this.sourceTileset.tilesetInitializationPromise;\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let featureAttributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n featureAttributes = await this._loadChildAttributes(\n sourceChild,\n this.attributeStorageInfo\n );\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const i3sAttributesData: I3SAttributesData = {\n tileContent: sourceChild.content,\n textureFormat: sourceChild?.header?.textureFormat\n };\n\n // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.\n // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {\n // source: this.workerSource.tile3dWorkerSource,\n // featureAttributes\n // });\n\n const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);\n\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);\n const source = await sourceResponse.text();\n\n this.workerSource.tile3dWorkerSource = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"file":"3d-tiles-converter.js"}
@@ -46,8 +46,8 @@ var B3dmConverter = function () {
46
46
  (0, _createClass2.default)(B3dmConverter, [{
47
47
  key: "convert",
48
48
  value: function () {
49
- var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sTile) {
50
- var attributes,
49
+ var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sAttributesData) {
50
+ var featureAttributes,
51
51
  gltf,
52
52
  b3dm,
53
53
  _args = arguments;
@@ -55,22 +55,21 @@ var B3dmConverter = function () {
55
55
  while (1) {
56
56
  switch (_context.prev = _context.next) {
57
57
  case 0:
58
- attributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
59
- this.i3sTile = i3sTile;
60
- _context.next = 4;
61
- return this.buildGltf(i3sTile);
58
+ featureAttributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
59
+ _context.next = 3;
60
+ return this.buildGltf(i3sAttributesData);
62
61
 
63
- case 4:
62
+ case 3:
64
63
  gltf = _context.sent;
65
64
  b3dm = (0, _core.encodeSync)({
66
65
  gltfEncoded: new Uint8Array(gltf),
67
66
  type: 'b3dm',
68
- featuresLength: this._getFeaturesLength(attributes),
69
- batchTable: attributes
67
+ featuresLength: this._getFeaturesLength(featureAttributes),
68
+ batchTable: featureAttributes
70
69
  }, _dTiles.Tile3DWriter);
71
70
  return _context.abrupt("return", b3dm);
72
71
 
73
- case 7:
72
+ case 6:
74
73
  case "end":
75
74
  return _context.stop();
76
75
  }
@@ -87,19 +86,19 @@ var B3dmConverter = function () {
87
86
  }, {
88
87
  key: "buildGltf",
89
88
  value: function () {
90
- var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(i3sTile) {
91
- var _i3sTile$content, material, attributes, originalIndices, cartesianOrigin, cartographicOrigin, modelMatrix, gltfBuilder, textureIndex, pbrMaterialInfo, materialIndex, positions, positionsValue, indices, meshIndex, transformMatrix, nodeIndex, sceneIndex, gltfBuffer;
92
-
89
+ var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(i3sAttributesData) {
90
+ var tileContent, textureFormat, material, attributes, originalIndices, cartesianOrigin, cartographicOrigin, modelMatrix, gltfBuilder, textureIndex, pbrMaterialInfo, materialIndex, positions, positionsValue, indices, meshIndex, transformMatrix, nodeIndex, sceneIndex, gltfBuffer;
93
91
  return _regenerator.default.wrap(function _callee2$(_context2) {
94
92
  while (1) {
95
93
  switch (_context2.prev = _context2.next) {
96
94
  case 0:
97
- _i3sTile$content = i3sTile.content, material = _i3sTile$content.material, attributes = _i3sTile$content.attributes, originalIndices = _i3sTile$content.indices, cartesianOrigin = _i3sTile$content.cartesianOrigin, cartographicOrigin = _i3sTile$content.cartographicOrigin, modelMatrix = _i3sTile$content.modelMatrix;
95
+ tileContent = i3sAttributesData.tileContent, textureFormat = i3sAttributesData.textureFormat;
96
+ material = tileContent.material, attributes = tileContent.attributes, originalIndices = tileContent.indices, cartesianOrigin = tileContent.cartesianOrigin, cartographicOrigin = tileContent.cartographicOrigin, modelMatrix = tileContent.modelMatrix;
98
97
  gltfBuilder = new _gltf.GLTFScenegraph();
99
- _context2.next = 4;
100
- return this._addI3sTextureToGltf(i3sTile, gltfBuilder);
98
+ _context2.next = 5;
99
+ return this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
101
100
 
102
- case 4:
101
+ case 5:
103
102
  textureIndex = _context2.sent;
104
103
  pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
105
104
  materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
@@ -136,7 +135,7 @@ var B3dmConverter = function () {
136
135
  gltfBuffer = (0, _core.encodeSync)(gltfBuilder.gltf, _gltf.GLTFWriter);
137
136
  return _context2.abrupt("return", gltfBuffer);
138
137
 
139
- case 21:
138
+ case 22:
140
139
  case "end":
141
140
  return _context2.stop();
142
141
  }
@@ -153,14 +152,13 @@ var B3dmConverter = function () {
153
152
  }, {
154
153
  key: "_addI3sTextureToGltf",
155
154
  value: function () {
156
- var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(i3sTile, gltfBuilder) {
157
- var _i3sTile$content2, texture, material, attributes, textureFormat, textureIndex, selectedTexture, mimeType, imageIndex;
158
-
155
+ var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tileContent, textureFormat, gltfBuilder) {
156
+ var texture, material, attributes, textureIndex, selectedTexture, mimeType, imageIndex;
159
157
  return _regenerator.default.wrap(function _callee3$(_context3) {
160
158
  while (1) {
161
159
  switch (_context3.prev = _context3.next) {
162
160
  case 0:
163
- _i3sTile$content2 = i3sTile.content, texture = _i3sTile$content2.texture, material = _i3sTile$content2.material, attributes = _i3sTile$content2.attributes, textureFormat = i3sTile.header.textureFormat;
161
+ texture = tileContent.texture, material = tileContent.material, attributes = tileContent.attributes;
164
162
  textureIndex = null;
165
163
  selectedTexture = texture;
166
164
 
@@ -187,7 +185,7 @@ var B3dmConverter = function () {
187
185
  }, _callee3, this);
188
186
  }));
189
187
 
190
- function _addI3sTextureToGltf(_x3, _x4) {
188
+ function _addI3sTextureToGltf(_x3, _x4, _x5) {
191
189
  return _addI3sTextureToGltf2.apply(this, arguments);
192
190
  }
193
191