@loaders.gl/tile-converter 3.1.0-beta.1 → 3.1.0

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 (153) hide show
  1. package/dist/bundle.js +1455 -1296
  2. package/dist/converter.min.js +292 -0
  3. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +429 -189
  4. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  5. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +306 -209
  6. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  7. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +8 -4
  8. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  9. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +13 -13
  10. package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  11. package/dist/es5/3d-tiles-converter/json-templates/tileset.js +51 -32
  12. package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  13. package/dist/es5/bundle.js +1 -1
  14. package/dist/es5/bundle.js.map +1 -1
  15. package/dist/es5/deps-installer/deps-installer.js +61 -17
  16. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  17. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +55 -16
  18. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  19. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +33 -9
  20. package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  21. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +103 -93
  22. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  23. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +5 -1
  24. package/dist/es5/i3s-converter/helpers/geometry-converter.js +546 -351
  25. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  26. package/dist/es5/i3s-converter/helpers/node-debug.js +27 -31
  27. package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -1
  28. package/dist/es5/i3s-converter/helpers/node-pages.js +209 -101
  29. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  30. package/dist/es5/i3s-converter/i3s-converter.js +1645 -700
  31. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  32. package/dist/es5/i3s-converter/json-templates/layers.js +213 -177
  33. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  34. package/dist/es5/i3s-converter/json-templates/metadata.js +24 -20
  35. package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -1
  36. package/dist/es5/i3s-converter/json-templates/node.js +92 -74
  37. package/dist/es5/i3s-converter/json-templates/node.js.map +1 -1
  38. package/dist/es5/i3s-converter/json-templates/scene-server.js +34 -28
  39. package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -1
  40. package/dist/es5/i3s-converter/json-templates/shared-resources.js +162 -107
  41. package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -1
  42. package/dist/es5/i3s-converter/json-templates/store.js +4 -2
  43. package/dist/es5/i3s-converter/json-templates/store.js.map +1 -1
  44. package/dist/es5/i3s-converter/types.js +2 -0
  45. package/dist/es5/i3s-converter/types.js.map +1 -0
  46. package/dist/es5/i3s-server/app.js +6 -6
  47. package/dist/es5/i3s-server/app.js.map +1 -1
  48. package/dist/es5/i3s-server/controllers/index-controller.js +60 -20
  49. package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
  50. package/dist/es5/i3s-server/routes/index.js +41 -14
  51. package/dist/es5/i3s-server/routes/index.js.map +1 -1
  52. package/dist/es5/index.js +4 -4
  53. package/dist/es5/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
  54. package/dist/es5/lib/utils/compress-util.js +345 -123
  55. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  56. package/dist/es5/lib/utils/file-utils.js +98 -20
  57. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  58. package/dist/es5/lib/utils/lod-conversion-utils.js +9 -9
  59. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  60. package/dist/es5/lib/utils/statistic-utills.js +152 -41
  61. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  62. package/dist/es5/pgm-loader.js +31 -4
  63. package/dist/es5/pgm-loader.js.map +1 -1
  64. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +7 -6
  65. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  66. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +7 -0
  67. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  68. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -1
  69. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +1 -1
  70. package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
  71. package/dist/esm/3d-tiles-converter/json-templates/tileset.js +12 -9
  72. package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -1
  73. package/dist/esm/deps-installer/deps-installer.js +2 -6
  74. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  75. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +35 -3
  76. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  77. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +2 -2
  78. package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -1
  79. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  80. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +5 -1
  81. package/dist/esm/i3s-converter/helpers/geometry-converter.js +52 -34
  82. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  83. package/dist/esm/i3s-converter/helpers/node-debug.js +2 -4
  84. package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -1
  85. package/dist/esm/i3s-converter/helpers/node-pages.js +15 -4
  86. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  87. package/dist/esm/i3s-converter/i3s-converter.js +147 -62
  88. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  89. package/dist/esm/i3s-converter/json-templates/layers.js +37 -27
  90. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  91. package/dist/esm/i3s-converter/json-templates/metadata.js +2 -2
  92. package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -1
  93. package/dist/esm/i3s-converter/json-templates/node.js +16 -12
  94. package/dist/esm/i3s-converter/json-templates/node.js.map +1 -1
  95. package/dist/esm/i3s-converter/json-templates/scene-server.js +2 -2
  96. package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -1
  97. package/dist/esm/i3s-converter/json-templates/shared-resources.js +19 -14
  98. package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -1
  99. package/dist/esm/i3s-converter/json-templates/store.js.map +1 -1
  100. package/dist/esm/i3s-converter/types.js +2 -0
  101. package/dist/esm/i3s-converter/types.js.map +1 -0
  102. package/dist/esm/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
  103. package/dist/esm/pgm-loader.js +3 -3
  104. package/dist/esm/pgm-loader.js.map +1 -1
  105. package/package.json +16 -14
  106. package/src/3d-tiles-converter/3d-tiles-converter.ts +21 -20
  107. package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +19 -2
  108. package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
  109. package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
  110. package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
  111. package/src/deps-installer/deps-installer.js +2 -2
  112. package/src/i3s-converter/helpers/coordinate-converter.ts +62 -9
  113. package/src/i3s-converter/helpers/{create-scene-server-path.js → create-scene-server-path.ts} +2 -2
  114. package/src/i3s-converter/helpers/{geometry-attributes.js → geometry-attributes.ts} +4 -4
  115. package/src/i3s-converter/helpers/geometry-converter.d.ts +5 -1
  116. package/src/i3s-converter/helpers/geometry-converter.js +68 -26
  117. package/src/i3s-converter/helpers/{node-debug.js → node-debug.ts} +3 -2
  118. package/src/i3s-converter/helpers/{node-pages.js → node-pages.ts} +41 -26
  119. package/src/i3s-converter/i3s-converter.ts +204 -133
  120. package/src/i3s-converter/json-templates/{layers.js → layers.ts} +29 -27
  121. package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
  122. package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
  123. package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
  124. package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +14 -14
  125. package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
  126. package/src/i3s-converter/types.ts +14 -0
  127. package/src/lib/utils/{compress-utils.d.ts → compress-util.d.ts} +0 -0
  128. package/src/pgm-loader.ts +2 -2
  129. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  130. package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  131. package/dist/es5/i3s-converter/helpers/node-pages.d.ts +0 -144
  132. package/dist/es5/lib/geoid-height-model.d.ts +0 -41
  133. package/dist/es5/lib/geoid-height-model.js +0 -149
  134. package/dist/es5/lib/geoid-height-model.js.map +0 -1
  135. package/dist/es5/lib/pgm-parser.d.ts +0 -14
  136. package/dist/es5/lib/pgm-parser.js +0 -192
  137. package/dist/es5/lib/pgm-parser.js.map +0 -1
  138. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  139. package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  140. package/dist/esm/i3s-converter/helpers/node-pages.d.ts +0 -144
  141. package/dist/esm/lib/geoid-height-model.d.ts +0 -41
  142. package/dist/esm/lib/geoid-height-model.js +0 -140
  143. package/dist/esm/lib/geoid-height-model.js.map +0 -1
  144. package/dist/esm/lib/pgm-parser.d.ts +0 -14
  145. package/dist/esm/lib/pgm-parser.js +0 -183
  146. package/dist/esm/lib/pgm-parser.js.map +0 -1
  147. package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
  148. package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
  149. package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
  150. package/src/lib/geoid-height-model.d.ts +0 -41
  151. package/src/lib/geoid-height-model.js +0 -239
  152. package/src/lib/pgm-parser.d.ts +0 -14
  153. package/src/lib/pgm-parser.js +0 -179
@@ -7,6 +7,16 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
10
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
21
 
12
22
  var _path = require("path");
@@ -37,10 +47,21 @@ var _b3dmConverter = _interopRequireDefault(require("./helpers/b3dm-converter"))
37
47
 
38
48
  var _coordinateConverter = require("../i3s-converter/helpers/coordinate-converter");
39
49
 
40
- const I3S = 'I3S';
50
+ 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
+
52
+ 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; }
53
+
54
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
41
55
 
42
- class Tiles3DConverter {
43
- constructor() {
56
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
57
+
58
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
59
+
60
+ var I3S = 'I3S';
61
+
62
+ var Tiles3DConverter = function () {
63
+ function Tiles3DConverter() {
64
+ (0, _classCallCheck2.default)(this, Tiles3DConverter);
44
65
  (0, _defineProperty2.default)(this, "options", void 0);
45
66
  (0, _defineProperty2.default)(this, "tilesetPath", void 0);
46
67
  (0, _defineProperty2.default)(this, "vertexCounter", void 0);
@@ -57,211 +78,430 @@ class Tiles3DConverter {
57
78
  this.attributeStorageInfo = null;
58
79
  }
59
80
 
60
- async convert(options) {
61
- const {
62
- inputUrl,
63
- outputPath,
64
- tilesetName,
65
- maxDepth,
66
- egmFilePath
67
- } = options;
68
- this.conversionStartTime = _process.default.hrtime();
69
- this.options = {
70
- maxDepth
71
- };
72
- console.log('Loading egm file...');
73
- this.geoidHeightModel = await (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
74
- console.log('Loading egm file completed!');
75
- const sourceTilesetJson = await (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
76
- this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
77
- loadOptions: {
78
- i3s: {
79
- coordinateSystem: _i3s.COORDINATE_SYSTEM.LNGLAT_OFFSETS
80
- }
81
+ (0, _createClass2.default)(Tiles3DConverter, [{
82
+ key: "convert",
83
+ value: function () {
84
+ var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
85
+ var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset;
86
+ return _regenerator.default.wrap(function _callee$(_context) {
87
+ while (1) {
88
+ switch (_context.prev = _context.next) {
89
+ case 0:
90
+ inputUrl = options.inputUrl, outputPath = options.outputPath, tilesetName = options.tilesetName, maxDepth = options.maxDepth, egmFilePath = options.egmFilePath;
91
+ this.conversionStartTime = _process.default.hrtime();
92
+ this.options = {
93
+ maxDepth: maxDepth
94
+ };
95
+ console.log('Loading egm file...');
96
+ _context.next = 6;
97
+ return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
98
+
99
+ case 6:
100
+ this.geoidHeightModel = _context.sent;
101
+ console.log('Loading egm file completed!');
102
+ _context.next = 10;
103
+ return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
104
+
105
+ case 10:
106
+ sourceTilesetJson = _context.sent;
107
+ this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
108
+ loadOptions: {
109
+ i3s: {
110
+ coordinateSystem: _i3s.COORDINATE_SYSTEM.LNGLAT_OFFSETS
111
+ }
112
+ }
113
+ });
114
+ rootNode = this.sourceTileset.root;
115
+
116
+ if (!rootNode.header.obb) {
117
+ rootNode.header.obb = (0, _coordinateConverter.createObbFromMbs)(rootNode.header.mbs);
118
+ }
119
+
120
+ this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
121
+ this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
122
+ _context.prev = 16;
123
+ _context.next = 19;
124
+ return (0, _fileUtils.removeDir)(this.tilesetPath);
125
+
126
+ case 19:
127
+ _context.next = 23;
128
+ break;
129
+
130
+ case 21:
131
+ _context.prev = 21;
132
+ _context.t0 = _context["catch"](16);
133
+
134
+ case 23:
135
+ rootTile = {
136
+ boundingVolume: {
137
+ box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
138
+ },
139
+ geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
140
+ children: []
141
+ };
142
+ _context.next = 26;
143
+ return this._addChildren(rootNode, rootTile, 1);
144
+
145
+ case 26:
146
+ tileset = (0, _jsonMapTransform.default)({
147
+ root: rootTile
148
+ }, (0, _tileset.TILESET)());
149
+ _context.next = 29;
150
+ return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
151
+
152
+ case 29:
153
+ this._finishConversion({
154
+ slpk: false,
155
+ outputPath: outputPath,
156
+ tilesetName: tilesetName
157
+ });
158
+
159
+ case 30:
160
+ case "end":
161
+ return _context.stop();
162
+ }
163
+ }
164
+ }, _callee, this, [[16, 21]]);
165
+ }));
166
+
167
+ function convert(_x) {
168
+ return _convert.apply(this, arguments);
81
169
  }
82
- });
83
-
84
- if (!this.sourceTileset.root.header.obb) {
85
- this.sourceTileset.root.header.obb = (0, _coordinateConverter.createObbFromMbs)(this.sourceTileset.root.header.mbs);
86
- }
87
170
 
88
- this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
89
- this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
90
-
91
- try {
92
- await (0, _fileUtils.removeDir)(this.tilesetPath);
93
- } catch (e) {}
94
-
95
- const rootTile = {
96
- boundingVolume: {
97
- box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(this.sourceTileset.root.header.obb, this.geoidHeightModel)
98
- },
99
- geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(this.sourceTileset.root),
100
- children: []
101
- };
102
- await this._addChildren(this.sourceTileset.root, rootTile, 1);
103
- const tileset = (0, _jsonMapTransform.default)({
104
- root: rootTile
105
- }, _tileset.TILESET);
106
- await (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
107
-
108
- this._finishConversion({
109
- slpk: false,
110
- outputPath,
111
- tilesetName
112
- });
113
- }
114
-
115
- async _addChildren(parentSourceNode, parentNode, level) {
116
- if (this.options.maxDepth && level > this.options.maxDepth) {
117
- return;
118
- }
119
-
120
- for (const childNodeInfo of parentSourceNode.header.children || []) {
121
- const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
122
- parentSourceNode.children.push(sourceChild);
123
-
124
- if (sourceChild.contentUrl) {
125
- await this.sourceTileset._loadTile(sourceChild);
126
- this.vertexCounter += sourceChild.content.vertexCount;
127
- let attributes = null;
128
-
129
- if (this.attributeStorageInfo) {
130
- attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
131
- }
132
-
133
- if (!sourceChild.header.obb) {
134
- sourceChild.header.obb = (0, _coordinateConverter.createObbFromMbs)(sourceChild.header.mbs);
135
- }
136
-
137
- const boundingVolume = {
138
- box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(sourceChild.header.obb, this.geoidHeightModel)
139
- };
140
- const child = {
141
- boundingVolume,
142
- geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
143
- children: []
144
- };
145
- const b3dm = await new _b3dmConverter.default().convert(sourceChild, attributes);
146
- child.content = {
147
- uri: "".concat(sourceChild.id, ".b3dm"),
148
- boundingVolume
149
- };
150
- await (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
151
- parentNode.children.push(child);
152
- sourceChild.unloadContent();
153
- await this._addChildren(sourceChild, child, level + 1);
154
- } else {
155
- await this._addChildren(sourceChild, parentNode, level + 1);
171
+ return convert;
172
+ }()
173
+ }, {
174
+ key: "_addChildren",
175
+ value: function () {
176
+ var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
177
+ var _iterator, _step, childNodeInfo, sourceChild, attributes, boundingVolume, child, b3dm;
178
+
179
+ return _regenerator.default.wrap(function _callee2$(_context2) {
180
+ while (1) {
181
+ switch (_context2.prev = _context2.next) {
182
+ case 0:
183
+ if (!(this.options.maxDepth && level > this.options.maxDepth)) {
184
+ _context2.next = 2;
185
+ break;
186
+ }
187
+
188
+ return _context2.abrupt("return");
189
+
190
+ case 2:
191
+ _iterator = _createForOfIteratorHelper(parentSourceNode.header.children || []);
192
+ _context2.prev = 3;
193
+
194
+ _iterator.s();
195
+
196
+ case 5:
197
+ if ((_step = _iterator.n()).done) {
198
+ _context2.next = 39;
199
+ break;
200
+ }
201
+
202
+ childNodeInfo = _step.value;
203
+ _context2.next = 9;
204
+ return this._loadChildNode(parentSourceNode, childNodeInfo);
205
+
206
+ case 9:
207
+ sourceChild = _context2.sent;
208
+ parentSourceNode.children.push(sourceChild);
209
+
210
+ if (!sourceChild.contentUrl) {
211
+ _context2.next = 35;
212
+ break;
213
+ }
214
+
215
+ _context2.next = 14;
216
+ return this.sourceTileset._loadTile(sourceChild);
217
+
218
+ case 14:
219
+ this.vertexCounter += sourceChild.content.vertexCount;
220
+ attributes = null;
221
+
222
+ if (!this.attributeStorageInfo) {
223
+ _context2.next = 20;
224
+ break;
225
+ }
226
+
227
+ _context2.next = 19;
228
+ return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
229
+
230
+ case 19:
231
+ attributes = _context2.sent;
232
+
233
+ case 20:
234
+ if (!sourceChild.header.obb) {
235
+ sourceChild.header.obb = (0, _coordinateConverter.createObbFromMbs)(sourceChild.header.mbs);
236
+ }
237
+
238
+ boundingVolume = {
239
+ box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(sourceChild.header.obb, this.geoidHeightModel)
240
+ };
241
+ child = {
242
+ boundingVolume: boundingVolume,
243
+ geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
244
+ children: []
245
+ };
246
+ _context2.next = 25;
247
+ return new _b3dmConverter.default().convert(sourceChild, attributes);
248
+
249
+ case 25:
250
+ b3dm = _context2.sent;
251
+ child.content = {
252
+ uri: "".concat(sourceChild.id, ".b3dm"),
253
+ boundingVolume: boundingVolume
254
+ };
255
+ _context2.next = 29;
256
+ return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
257
+
258
+ case 29:
259
+ parentNode.children.push(child);
260
+ sourceChild.unloadContent();
261
+ _context2.next = 33;
262
+ return this._addChildren(sourceChild, child, level + 1);
263
+
264
+ case 33:
265
+ _context2.next = 37;
266
+ break;
267
+
268
+ case 35:
269
+ _context2.next = 37;
270
+ return this._addChildren(sourceChild, parentNode, level + 1);
271
+
272
+ case 37:
273
+ _context2.next = 5;
274
+ break;
275
+
276
+ case 39:
277
+ _context2.next = 44;
278
+ break;
279
+
280
+ case 41:
281
+ _context2.prev = 41;
282
+ _context2.t0 = _context2["catch"](3);
283
+
284
+ _iterator.e(_context2.t0);
285
+
286
+ case 44:
287
+ _context2.prev = 44;
288
+
289
+ _iterator.f();
290
+
291
+ return _context2.finish(44);
292
+
293
+ case 47:
294
+ case "end":
295
+ return _context2.stop();
296
+ }
297
+ }
298
+ }, _callee2, this, [[3, 41, 44, 47]]);
299
+ }));
300
+
301
+ function _addChildren(_x2, _x3, _x4) {
302
+ return _addChildren2.apply(this, arguments);
156
303
  }
157
- }
158
- }
159
-
160
- async _loadChildNode(parentNode, childNodeInfo) {
161
- let header;
162
304
 
163
- if (this.sourceTileset.tileset.nodePages) {
164
- console.log("Node conversion: ".concat(childNodeInfo.id));
165
- header = await this.sourceTileset.tileset.nodePagesTile.formTileFromNodePages(childNodeInfo.id);
166
- } else {
167
- const {
168
- loader
169
- } = this.sourceTileset;
305
+ return _addChildren;
306
+ }()
307
+ }, {
308
+ key: "_loadChildNode",
309
+ value: function () {
310
+ var _loadChildNode2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(parentNode, childNodeInfo) {
311
+ var header, _ref, loader, nodeUrl, options;
312
+
313
+ return _regenerator.default.wrap(function _callee3$(_context3) {
314
+ while (1) {
315
+ switch (_context3.prev = _context3.next) {
316
+ case 0:
317
+ if (!this.sourceTileset.tileset.nodePages) {
318
+ _context3.next = 7;
319
+ break;
320
+ }
321
+
322
+ console.log("Node conversion: ".concat(childNodeInfo.id));
323
+ _context3.next = 4;
324
+ return this.sourceTileset.tileset.nodePagesTile.formTileFromNodePages(childNodeInfo.id);
325
+
326
+ case 4:
327
+ header = _context3.sent;
328
+ _context3.next = 14;
329
+ break;
330
+
331
+ case 7:
332
+ _ref = this.sourceTileset, loader = _ref.loader;
333
+ nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
334
+ options = {
335
+ i3s: _objectSpread(_objectSpread({}, this.sourceTileset.loadOptions), {}, {
336
+ isTileHeader: true,
337
+ loadContent: false
338
+ })
339
+ };
340
+ console.log("Node conversion: ".concat(nodeUrl));
341
+ _context3.next = 13;
342
+ return (0, _core.load)(nodeUrl, loader, options);
343
+
344
+ case 13:
345
+ header = _context3.sent;
346
+
347
+ case 14:
348
+ return _context3.abrupt("return", new _tiles.Tile3D(this.sourceTileset, header, parentNode));
349
+
350
+ case 15:
351
+ case "end":
352
+ return _context3.stop();
353
+ }
354
+ }
355
+ }, _callee3, this);
356
+ }));
357
+
358
+ function _loadChildNode(_x5, _x6) {
359
+ return _loadChildNode2.apply(this, arguments);
360
+ }
170
361
 
171
- const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
362
+ return _loadChildNode;
363
+ }()
364
+ }, {
365
+ key: "_relativeUrlToFullUrl",
366
+ value: function _relativeUrlToFullUrl(baseUrl, relativeUrl) {
367
+ var resultArray = baseUrl.split('/');
368
+ var relativeUrlArray = relativeUrl.split('/');
172
369
 
173
- const options = {
174
- i3s: { ...this.sourceTileset.loadOptions,
175
- isTileHeader: true,
176
- loadContent: false
177
- }
178
- };
179
- console.log("Node conversion: ".concat(nodeUrl));
180
- header = await (0, _core.load)(nodeUrl, loader, options);
181
- }
370
+ var _iterator2 = _createForOfIteratorHelper(relativeUrlArray),
371
+ _step2;
182
372
 
183
- return new _tiles.Tile3D(this.sourceTileset, header, parentNode);
184
- }
373
+ try {
374
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
375
+ var folder = _step2.value;
185
376
 
186
- _relativeUrlToFullUrl(baseUrl, relativeUrl) {
187
- let resultArray = baseUrl.split('/');
188
- const relativeUrlArray = relativeUrl.split('/');
377
+ switch (folder) {
378
+ case '.':
379
+ continue;
189
380
 
190
- for (const folder of relativeUrlArray) {
191
- switch (folder) {
192
- case '.':
193
- continue;
381
+ case '..':
382
+ resultArray = resultArray.slice(0, -1);
383
+ break;
194
384
 
195
- case '..':
196
- resultArray = resultArray.slice(0, -1);
197
- break;
198
-
199
- default:
200
- resultArray.push(folder);
385
+ default:
386
+ resultArray.push(folder);
387
+ }
388
+ }
389
+ } catch (err) {
390
+ _iterator2.e(err);
391
+ } finally {
392
+ _iterator2.f();
201
393
  }
202
- }
203
394
 
204
- return resultArray.join('/');
205
- }
206
-
207
- async _loadChildAttributes(sourceChild, attributeStorageInfo) {
208
- const promises = [];
209
- const {
210
- attributeUrls
211
- } = sourceChild.header;
212
-
213
- for (let index = 0; index < attributeUrls.length; index++) {
214
- const inputUrl = attributeUrls[index];
215
- const attribute = attributeStorageInfo[index];
216
- const options = {
217
- attributeName: attribute.name,
218
- attributeType: this._getAttributeType(attribute)
219
- };
220
- promises.push((0, _core.load)(inputUrl, _i3s.I3SAttributeLoader, options));
395
+ return resultArray.join('/');
221
396
  }
397
+ }, {
398
+ key: "_loadChildAttributes",
399
+ value: function () {
400
+ var _loadChildAttributes2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(sourceChild, attributeStorageInfo) {
401
+ var promises, attributeUrls, index, inputUrl, attribute, options, attributesList;
402
+ return _regenerator.default.wrap(function _callee4$(_context4) {
403
+ while (1) {
404
+ switch (_context4.prev = _context4.next) {
405
+ case 0:
406
+ promises = [];
407
+ attributeUrls = sourceChild.header.attributeUrls;
408
+
409
+ for (index = 0; index < attributeUrls.length; index++) {
410
+ inputUrl = attributeUrls[index];
411
+ attribute = attributeStorageInfo[index];
412
+ options = {
413
+ attributeName: attribute.name,
414
+ attributeType: this._getAttributeType(attribute)
415
+ };
416
+ promises.push((0, _core.load)(inputUrl, _i3s.I3SAttributeLoader, options));
417
+ }
418
+
419
+ _context4.next = 5;
420
+ return Promise.all(promises);
421
+
422
+ case 5:
423
+ attributesList = _context4.sent;
424
+
425
+ this._replaceNestedArrays(attributesList);
426
+
427
+ return _context4.abrupt("return", Object.assign.apply(Object, [{}].concat((0, _toConsumableArray2.default)(attributesList))));
428
+
429
+ case 8:
430
+ case "end":
431
+ return _context4.stop();
432
+ }
433
+ }
434
+ }, _callee4, this);
435
+ }));
436
+
437
+ function _loadChildAttributes(_x7, _x8) {
438
+ return _loadChildAttributes2.apply(this, arguments);
439
+ }
222
440
 
223
- const attributesList = await Promise.all(promises);
224
-
225
- this._replaceNestedArrays(attributesList);
226
-
227
- return Object.assign({}, ...attributesList);
228
- }
441
+ return _loadChildAttributes;
442
+ }()
443
+ }, {
444
+ key: "_getAttributeType",
445
+ value: function _getAttributeType(attribute) {
446
+ if (attribute.attributeValues) {
447
+ return attribute.attributeValues.valueType;
448
+ } else if (attribute.objectIds) {
449
+ return 'Oid32';
450
+ }
229
451
 
230
- _getAttributeType(attribute) {
231
- if (attribute.attributeValues) {
232
- return attribute.attributeValues.valueType;
233
- } else if (attribute.objectIds) {
234
- return 'Oid32';
452
+ return '';
235
453
  }
236
-
237
- return '';
238
- }
239
-
240
- _replaceNestedArrays(attributesList) {
241
- for (let index = 0; index < attributesList.length; index++) {
242
- const attributeObject = attributesList[index];
243
-
244
- for (const key in attributeObject) {
245
- attributeObject[key] = Array.from(attributeObject[key]);
454
+ }, {
455
+ key: "_replaceNestedArrays",
456
+ value: function _replaceNestedArrays(attributesList) {
457
+ for (var index = 0; index < attributesList.length; index++) {
458
+ var attributeObject = attributesList[index];
459
+
460
+ for (var key in attributeObject) {
461
+ attributeObject[key] = Array.from(attributeObject[key]);
462
+ }
246
463
  }
247
464
  }
248
- }
249
-
250
- async _finishConversion(params) {
251
- const filesSize = await (0, _statisticUtills.calculateFilesSize)(params);
252
-
253
- const diff = _process.default.hrtime(this.conversionStartTime);
254
-
255
- const conversionTime = (0, _statisticUtills.timeConverter)(diff);
256
- console.log("------------------------------------------------");
257
- console.log("Finish conversion of ".concat(I3S));
258
- console.log("Total conversion time: ".concat(conversionTime));
259
- console.log("Vertex count: ", this.vertexCounter);
260
- console.log("File(s) size: ", filesSize, ' bytes');
261
- console.log("------------------------------------------------");
262
- }
465
+ }, {
466
+ key: "_finishConversion",
467
+ value: function () {
468
+ var _finishConversion2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(params) {
469
+ var filesSize, diff, conversionTime;
470
+ return _regenerator.default.wrap(function _callee5$(_context5) {
471
+ while (1) {
472
+ switch (_context5.prev = _context5.next) {
473
+ case 0:
474
+ _context5.next = 2;
475
+ return (0, _statisticUtills.calculateFilesSize)(params);
476
+
477
+ case 2:
478
+ filesSize = _context5.sent;
479
+ diff = _process.default.hrtime(this.conversionStartTime);
480
+ conversionTime = (0, _statisticUtills.timeConverter)(diff);
481
+ console.log("------------------------------------------------");
482
+ console.log("Finish conversion of ".concat(I3S));
483
+ console.log("Total conversion time: ".concat(conversionTime));
484
+ console.log("Vertex count: ", this.vertexCounter);
485
+ console.log("File(s) size: ", filesSize, ' bytes');
486
+ console.log("------------------------------------------------");
487
+
488
+ case 11:
489
+ case "end":
490
+ return _context5.stop();
491
+ }
492
+ }
493
+ }, _callee5, this);
494
+ }));
495
+
496
+ function _finishConversion(_x9) {
497
+ return _finishConversion2.apply(this, arguments);
498
+ }
263
499
 
264
- }
500
+ return _finishConversion;
501
+ }()
502
+ }]);
503
+ return Tiles3DConverter;
504
+ }();
265
505
 
266
506
  exports.default = Tiles3DConverter;
267
507
  //# sourceMappingURL=3d-tiles-converter.js.map