@loaders.gl/3d-tiles 3.3.0-alpha.1 → 3.3.0-alpha.11

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 (166) hide show
  1. package/dist/dist.min.js +1103 -1457
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/cesium-ion-loader.js +7 -26
  5. package/dist/es5/cesium-ion-loader.js.map +1 -1
  6. package/dist/es5/index.js +14 -23
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
  9. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  10. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
  11. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  12. package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
  13. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
  15. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  16. package/dist/es5/lib/constants.js +3 -1
  17. package/dist/es5/lib/constants.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
  19. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  20. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
  21. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
  23. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
  25. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  26. package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
  27. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  28. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
  29. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  30. package/dist/es5/lib/ion/ion.js +5 -46
  31. package/dist/es5/lib/ion/ion.js.map +1 -1
  32. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
  33. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  34. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +19 -51
  39. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  40. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
  41. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  42. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +40 -49
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  48. package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
  49. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  50. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
  51. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  52. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
  53. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
  55. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  56. package/dist/es5/lib/parsers/parse-3d-tile-header.js +127 -111
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  58. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  60. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  62. package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
  63. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  64. package/dist/es5/lib/utils/version.js +1 -1
  65. package/dist/es5/lib/utils/version.js.map +1 -1
  66. package/dist/es5/tile-3d-subtree-loader.js +0 -4
  67. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  68. package/dist/es5/tile-3d-writer.js +0 -6
  69. package/dist/es5/tile-3d-writer.js.map +1 -1
  70. package/dist/es5/tiles-3d-loader.js +5 -55
  71. package/dist/es5/tiles-3d-loader.js.map +1 -1
  72. package/dist/es5/types.js.map +1 -1
  73. package/dist/esm/bundle.js +1 -1
  74. package/dist/esm/bundle.js.map +1 -1
  75. package/dist/esm/cesium-ion-loader.js +9 -7
  76. package/dist/esm/cesium-ion-loader.js.map +1 -1
  77. package/dist/esm/index.js +4 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
  80. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  81. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
  82. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  83. package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
  84. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
  85. package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
  86. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
  87. package/dist/esm/lib/constants.js +3 -0
  88. package/dist/esm/lib/constants.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
  90. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
  92. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  93. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
  94. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  95. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
  96. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  97. package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
  98. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
  99. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
  100. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  101. package/dist/esm/lib/ion/ion.js +10 -8
  102. package/dist/esm/lib/ion/ion.js.map +1 -1
  103. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
  104. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  105. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
  106. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  107. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
  108. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  109. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +4 -16
  110. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  111. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
  112. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  113. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
  114. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  115. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +26 -17
  116. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  117. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
  118. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  119. package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
  120. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
  121. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
  122. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  123. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
  124. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  125. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  126. package/dist/esm/lib/parsers/parse-3d-tile-header.js +35 -40
  127. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  128. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
  129. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  130. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
  131. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  132. package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
  133. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  134. package/dist/esm/lib/utils/version.js +2 -1
  135. package/dist/esm/lib/utils/version.js.map +1 -1
  136. package/dist/esm/tile-3d-subtree-loader.js +1 -0
  137. package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
  138. package/dist/esm/tile-3d-writer.js +1 -1
  139. package/dist/esm/tile-3d-writer.js.map +1 -1
  140. package/dist/esm/tiles-3d-loader.js +3 -17
  141. package/dist/esm/tiles-3d-loader.js.map +1 -1
  142. package/dist/esm/types.js.map +1 -1
  143. package/dist/index.d.ts +1 -1
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  146. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  147. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  148. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -13
  149. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -1
  150. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  151. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +36 -7
  152. package/dist/lib/parsers/parse-3d-tile-batched-model.js +1 -1
  153. package/dist/lib/parsers/parse-3d-tile-header.d.ts +5 -4
  154. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  155. package/dist/lib/parsers/parse-3d-tile-header.js +37 -18
  156. package/dist/tiles-3d-loader.d.ts.map +1 -1
  157. package/dist/tiles-3d-loader.js +1 -8
  158. package/dist/types.d.ts +26 -13
  159. package/dist/types.d.ts.map +1 -1
  160. package/package.json +7 -7
  161. package/src/index.ts +1 -1
  162. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +2 -14
  163. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +50 -7
  164. package/src/lib/parsers/parse-3d-tile-header.ts +59 -21
  165. package/src/tiles-3d-loader.ts +2 -16
  166. package/src/types.ts +18 -3
@@ -1,94 +1,70 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
7
+ exports.normalizeImplicitTileData = normalizeImplicitTileData;
8
+ exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
8
9
  exports.normalizeTileData = normalizeTileData;
9
10
  exports.normalizeTileHeaders = normalizeTileHeaders;
10
- exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
11
- exports.normalizeImplicitTileData = normalizeImplicitTileData;
12
-
13
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
-
15
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
-
17
13
  var _tile3dSubtreeLoader = require("../../tile-3d-subtree-loader");
18
-
19
14
  var _core = require("@loaders.gl/core");
20
-
21
15
  var _tiles = require("@loaders.gl/tiles");
22
-
23
16
  var _parse3dImplicitTiles = require("./helpers/parse-3d-implicit-tiles");
24
-
25
17
  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; } } }; }
26
-
27
18
  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); }
28
-
29
19
  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; }
30
-
31
20
  function getTileType(tile) {
32
21
  if (!tile.contentUrl) {
33
22
  return _tiles.TILE_TYPE.EMPTY;
34
23
  }
35
-
36
24
  var contentUrl = tile.contentUrl;
37
25
  var fileExtension = contentUrl.split('.').pop();
38
-
39
26
  switch (fileExtension) {
40
27
  case 'pnts':
41
28
  return _tiles.TILE_TYPE.POINTCLOUD;
42
-
43
29
  case 'i3dm':
44
30
  case 'b3dm':
45
31
  case 'glb':
46
32
  case 'gltf':
47
33
  return _tiles.TILE_TYPE.SCENEGRAPH;
48
-
49
34
  default:
50
35
  return fileExtension;
51
36
  }
52
37
  }
53
-
54
38
  function getRefine(refine) {
55
39
  switch (refine) {
56
40
  case 'REPLACE':
57
41
  case 'replace':
58
42
  return _tiles.TILE_REFINEMENT.REPLACE;
59
-
60
43
  case 'ADD':
61
44
  case 'add':
62
45
  return _tiles.TILE_REFINEMENT.ADD;
63
-
64
46
  default:
65
47
  return refine;
66
48
  }
67
49
  }
68
-
69
50
  function resolveUri(uri, basePath) {
70
51
  var urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
71
-
72
52
  if (urlSchemeRegex.test(basePath)) {
73
53
  var url = new URL(uri, "".concat(basePath, "/"));
74
54
  return decodeURI(url.toString());
75
55
  } else if (uri.startsWith('/')) {
76
56
  return uri;
77
57
  }
78
-
79
58
  return "".concat(basePath, "/").concat(uri);
80
59
  }
81
-
82
60
  function normalizeTileData(tile, options) {
83
61
  if (!tile) {
84
62
  return null;
85
63
  }
86
-
87
64
  if (tile.content) {
88
65
  var contentUri = tile.content.uri || tile.content.url;
89
66
  tile.contentUrl = resolveUri(contentUri, options.basePath);
90
67
  }
91
-
92
68
  tile.id = tile.contentUrl;
93
69
  tile.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
94
70
  tile.lodMetricValue = tile.geometricError;
@@ -98,71 +74,118 @@ function normalizeTileData(tile, options) {
98
74
  return tile;
99
75
  }
100
76
 
101
- function normalizeTileHeaders(tileset) {
102
- var basePath = tileset.basePath;
103
- var root = normalizeTileData(tileset.root, tileset);
104
- var stack = [];
105
- stack.push(root);
106
-
107
- while (stack.length > 0) {
108
- var tile = stack.pop() || {};
109
- var children = tile.children || [];
110
-
111
- var _iterator = _createForOfIteratorHelper(children),
112
- _step;
113
-
114
- try {
115
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
116
- var childHeader = _step.value;
117
- normalizeTileData(childHeader, {
118
- basePath: basePath
119
- });
120
- stack.push(childHeader);
121
- }
122
- } catch (err) {
123
- _iterator.e(err);
124
- } finally {
125
- _iterator.f();
126
- }
127
- }
128
-
129
- return root;
77
+ function normalizeTileHeaders(_x, _x2) {
78
+ return _normalizeTileHeaders.apply(this, arguments);
130
79
  }
131
-
132
- function normalizeImplicitTileHeaders(_x) {
133
- return _normalizeImplicitTileHeaders.apply(this, arguments);
134
- }
135
-
136
- function _normalizeImplicitTileHeaders() {
137
- _normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset) {
138
- var basePath, implicitTilingExtension, subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, subtreeUrl, rootSubtreeUrl, rootSubtree, contentUrlTemplate, refine, rootLodMetricValue, rootBoundingVolume, options;
80
+ function _normalizeTileHeaders() {
81
+ _normalizeTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileset, options) {
82
+ var basePath, root, rootImplicitTilingExtension, stack, tile, children, _iterator, _step, childHeader, childImplicitTilingExtension;
139
83
  return _regenerator.default.wrap(function _callee$(_context) {
140
84
  while (1) {
141
85
  switch (_context.prev = _context.next) {
142
86
  case 0:
143
- if (tileset.root) {
144
- _context.next = 2;
87
+ basePath = tileset.basePath;
88
+ rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset === null || tileset === void 0 ? void 0 : tileset.root);
89
+ if (!(rootImplicitTilingExtension && tileset.root)) {
90
+ _context.next = 8;
145
91
  break;
146
92
  }
147
-
148
- return _context.abrupt("return", null);
149
-
150
- case 2:
151
- basePath = tileset.basePath;
152
- implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
153
- subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
154
- subtreeUrl = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
155
- rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
93
+ _context.next = 5;
94
+ return normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
95
+ case 5:
96
+ root = _context.sent;
156
97
  _context.next = 9;
157
- return (0, _core.load)(rootSubtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader);
158
-
98
+ break;
99
+ case 8:
100
+ root = normalizeTileData(tileset.root, tileset);
159
101
  case 9:
160
- rootSubtree = _context.sent;
161
- contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
162
- refine = tileset.root.refine;
163
- rootLodMetricValue = tileset.root.geometricError;
164
- rootBoundingVolume = tileset.root.boundingVolume;
165
- options = {
102
+ stack = [];
103
+ stack.push(root);
104
+ case 11:
105
+ if (!(stack.length > 0)) {
106
+ _context.next = 40;
107
+ break;
108
+ }
109
+ tile = stack.pop() || {};
110
+ children = tile.children || [];
111
+ _iterator = _createForOfIteratorHelper(children);
112
+ _context.prev = 15;
113
+ _iterator.s();
114
+ case 17:
115
+ if ((_step = _iterator.n()).done) {
116
+ _context.next = 30;
117
+ break;
118
+ }
119
+ childHeader = _step.value;
120
+ childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
121
+ if (!childImplicitTilingExtension) {
122
+ _context.next = 26;
123
+ break;
124
+ }
125
+ _context.next = 23;
126
+ return normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
127
+ case 23:
128
+ childHeader = _context.sent;
129
+ _context.next = 27;
130
+ break;
131
+ case 26:
132
+ normalizeTileData(childHeader, {
133
+ basePath: basePath
134
+ });
135
+ case 27:
136
+ stack.push(childHeader);
137
+ case 28:
138
+ _context.next = 17;
139
+ break;
140
+ case 30:
141
+ _context.next = 35;
142
+ break;
143
+ case 32:
144
+ _context.prev = 32;
145
+ _context.t0 = _context["catch"](15);
146
+ _iterator.e(_context.t0);
147
+ case 35:
148
+ _context.prev = 35;
149
+ _iterator.f();
150
+ return _context.finish(35);
151
+ case 38:
152
+ _context.next = 11;
153
+ break;
154
+ case 40:
155
+ return _context.abrupt("return", root);
156
+ case 41:
157
+ case "end":
158
+ return _context.stop();
159
+ }
160
+ }
161
+ }, _callee, null, [[15, 32, 35, 38]]);
162
+ }));
163
+ return _normalizeTileHeaders.apply(this, arguments);
164
+ }
165
+ function normalizeImplicitTileHeaders(_x3, _x4, _x5, _x6) {
166
+ return _normalizeImplicitTileHeaders.apply(this, arguments);
167
+ }
168
+ function _normalizeImplicitTileHeaders() {
169
+ _normalizeImplicitTileHeaders = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, tileset, implicitTilingExtension, options) {
170
+ var _tileset$root;
171
+ var basePath, subdivisionScheme, maximumLevel, subtreeLevels, subtreesUriTemplate, replacedUrlTemplate, subtreeUrl, subtree, contentUrlTemplate, refine, rootLodMetricValue, rootBoundingVolume, implicitOptions;
172
+ return _regenerator.default.wrap(function _callee2$(_context2) {
173
+ while (1) {
174
+ switch (_context2.prev = _context2.next) {
175
+ case 0:
176
+ basePath = tileset.basePath;
177
+ subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
178
+ replacedUrlTemplate = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
179
+ subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
180
+ _context2.next = 6;
181
+ return (0, _core.load)(subtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader, options);
182
+ case 6:
183
+ subtree = _context2.sent;
184
+ contentUrlTemplate = resolveUri(tile.content.uri, basePath);
185
+ refine = tileset === null || tileset === void 0 ? void 0 : (_tileset$root = tileset.root) === null || _tileset$root === void 0 ? void 0 : _tileset$root.refine;
186
+ rootLodMetricValue = tile.geometricError;
187
+ rootBoundingVolume = tile.boundingVolume;
188
+ implicitOptions = {
166
189
  contentUrlTemplate: contentUrlTemplate,
167
190
  subtreesUriTemplate: subtreesUriTemplate,
168
191
  subdivisionScheme: subdivisionScheme,
@@ -176,76 +199,69 @@ function _normalizeImplicitTileHeaders() {
176
199
  getTileType: getTileType,
177
200
  getRefine: getRefine
178
201
  };
179
- _context.next = 17;
180
- return normalizeImplicitTileData(tileset.root, rootSubtree, options);
181
-
182
- case 17:
183
- return _context.abrupt("return", _context.sent);
184
-
185
- case 18:
202
+ _context2.next = 14;
203
+ return normalizeImplicitTileData(tile, subtree, implicitOptions);
204
+ case 14:
205
+ return _context2.abrupt("return", _context2.sent);
206
+ case 15:
186
207
  case "end":
187
- return _context.stop();
208
+ return _context2.stop();
188
209
  }
189
210
  }
190
- }, _callee);
211
+ }, _callee2);
191
212
  }));
192
213
  return _normalizeImplicitTileHeaders.apply(this, arguments);
193
214
  }
194
-
195
- function normalizeImplicitTileData(_x2, _x3, _x4) {
215
+ function normalizeImplicitTileData(_x7, _x8, _x9) {
196
216
  return _normalizeImplicitTileData.apply(this, arguments);
197
217
  }
198
-
199
218
  function _normalizeImplicitTileData() {
200
- _normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(tile, rootSubtree, options) {
219
+ _normalizeImplicitTileData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tile, rootSubtree, options) {
201
220
  var _yield$parseImplicitT, children, contentUrl;
202
-
203
- return _regenerator.default.wrap(function _callee2$(_context2) {
221
+ return _regenerator.default.wrap(function _callee3$(_context3) {
204
222
  while (1) {
205
- switch (_context2.prev = _context2.next) {
223
+ switch (_context3.prev = _context3.next) {
206
224
  case 0:
207
225
  if (tile) {
208
- _context2.next = 2;
226
+ _context3.next = 2;
209
227
  break;
210
228
  }
211
-
212
- return _context2.abrupt("return", null);
213
-
229
+ return _context3.abrupt("return", null);
214
230
  case 2:
215
231
  tile.lodMetricType = _tiles.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
216
232
  tile.lodMetricValue = tile.geometricError;
217
233
  tile.transformMatrix = tile.transform;
218
- _context2.next = 7;
234
+ _context3.next = 7;
219
235
  return (0, _parse3dImplicitTiles.parseImplicitTiles)({
220
236
  subtree: rootSubtree,
221
237
  options: options
222
238
  });
223
-
224
239
  case 7:
225
- _yield$parseImplicitT = _context2.sent;
240
+ _yield$parseImplicitT = _context3.sent;
226
241
  children = _yield$parseImplicitT.children;
227
242
  contentUrl = _yield$parseImplicitT.contentUrl;
228
-
229
243
  if (contentUrl) {
230
244
  tile.contentUrl = contentUrl;
231
245
  tile.content = {
232
246
  uri: contentUrl.replace("".concat(options.basePath, "/"), '')
233
247
  };
234
248
  }
235
-
236
249
  tile.refine = getRefine(tile.refine);
237
250
  tile.type = getTileType(tile);
238
251
  tile.children = children;
239
252
  tile.id = tile.contentUrl;
240
- return _context2.abrupt("return", tile);
241
-
253
+ return _context3.abrupt("return", tile);
242
254
  case 16:
243
255
  case "end":
244
- return _context2.stop();
256
+ return _context3.stop();
245
257
  }
246
258
  }
247
- }, _callee2);
259
+ }, _callee3);
248
260
  }));
249
261
  return _normalizeImplicitTileData.apply(this, arguments);
250
262
  }
263
+ function getImplicitTilingExtensionData(tile) {
264
+ var _tile$extensions;
265
+ return (tile === null || tile === void 0 ? void 0 : (_tile$extensions = tile.extensions) === null || _tile$extensions === void 0 ? void 0 : _tile$extensions['3DTILES_implicit_tiling']) || (tile === null || tile === void 0 ? void 0 : tile.implicitTiling);
266
+ }
251
267
  //# sourceMappingURL=parse-3d-tile-header.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
1
+ {"version":3,"file":"parse-3d-tile-header.js","names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","rootImplicitTilingExtension","getImplicitTilingExtensionData","root","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","replacedUrlTemplate","replaceContentUrlTemplate","subtreeUrl","load","Tile3DSubtreeLoader","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","parseImplicitTiles","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":";;;;;;;;;;;;AACA;AACA;AACA;AAEA;AAAgG;AAAA;AAAA;AAEhG,SAASA,WAAW,CAACC,IAAI,EAAE;EACzB,IAAI,CAACA,IAAI,CAACC,UAAU,EAAE;IACpB,OAAOC,gBAAS,CAACC,KAAK;EACxB;EAEA,IAAMF,UAAU,GAAGD,IAAI,CAACC,UAAU;EAClC,IAAMG,aAAa,GAAGH,UAAU,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,EAAE;EACjD,QAAQF,aAAa;IACnB,KAAK,MAAM;MACT,OAAOF,gBAAS,CAACK,UAAU;IAC7B,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,KAAK;IACV,KAAK,MAAM;MACT,OAAOL,gBAAS,CAACM,UAAU;IAC7B;MACE,OAAOJ,aAAa;EAAC;AAE3B;AAEA,SAASK,SAAS,CAACC,MAAM,EAAE;EACzB,QAAQA,MAAM;IACZ,KAAK,SAAS;IACd,KAAK,SAAS;MACZ,OAAOC,sBAAe,CAACC,OAAO;IAChC,KAAK,KAAK;IACV,KAAK,KAAK;MACR,OAAOD,sBAAe,CAACE,GAAG;IAC5B;MACE,OAAOH,MAAM;EAAC;AAEpB;AAEA,SAASI,UAAU,CAACC,GAAG,EAAEC,QAAQ,EAAE;EAEjC,IAAMC,cAAc,GAAG,sBAAsB;EAE7C,IAAIA,cAAc,CAACC,IAAI,CAACF,QAAQ,CAAC,EAAE;IACjC,IAAMG,GAAG,GAAG,IAAIC,GAAG,CAACL,GAAG,YAAKC,QAAQ,OAAI;IACxC,OAAOK,SAAS,CAACF,GAAG,CAACG,QAAQ,EAAE,CAAC;EAClC,CAAC,MAAM,IAAIP,GAAG,CAACQ,UAAU,CAAC,GAAG,CAAC,EAAE;IAC9B,OAAOR,GAAG;EACZ;EAEA,iBAAUC,QAAQ,cAAID,GAAG;AAC3B;AAEO,SAASS,iBAAiB,CAACxB,IAAI,EAAEyB,OAAO,EAAE;EAC/C,IAAI,CAACzB,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EACA,IAAIA,IAAI,CAAC0B,OAAO,EAAE;IAChB,IAAMC,UAAU,GAAG3B,IAAI,CAAC0B,OAAO,CAACX,GAAG,IAAIf,IAAI,CAAC0B,OAAO,CAACP,GAAG;IACvDnB,IAAI,CAACC,UAAU,GAAGa,UAAU,CAACa,UAAU,EAAEF,OAAO,CAACT,QAAQ,CAAC;EAC5D;EACAhB,IAAI,CAAC4B,EAAE,GAAG5B,IAAI,CAACC,UAAU;EACzBD,IAAI,CAAC6B,aAAa,GAAGC,sBAAe,CAACC,eAAe;EACpD/B,IAAI,CAACgC,cAAc,GAAGhC,IAAI,CAACiC,cAAc;EACzCjC,IAAI,CAACkC,eAAe,GAAGlC,IAAI,CAACmC,SAAS;EACrCnC,IAAI,CAACoC,IAAI,GAAGrC,WAAW,CAACC,IAAI,CAAC;EAC7BA,IAAI,CAACU,MAAM,GAAGD,SAAS,CAACT,IAAI,CAACU,MAAM,CAAC;EAEpC,OAAOV,IAAI;AACb;;AAAC,SAGqBqC,oBAAoB;EAAA;AAAA;AAAA;EAAA,kFAAnC,iBACLC,OAAkB,EAClBb,OAAsB;IAAA;IAAA;MAAA;QAAA;UAAA;YAEhBT,QAAQ,GAAGsB,OAAO,CAACtB,QAAQ;YAG3BuB,2BAA2B,GAAGC,8BAA8B,CAACF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG,IAAI,CAAC;YAAA,MAC7EF,2BAA2B,IAAID,OAAO,CAACG,IAAI;cAAA;cAAA;YAAA;YAAA;YAAA,OAChCC,4BAA4B,CACvCJ,OAAO,CAACG,IAAI,EACZH,OAAO,EACPC,2BAA2B,EAC3Bd,OAAO,CACR;UAAA;YALDgB,IAAI;YAAA;YAAA;UAAA;YAOJA,IAAI,GAAGjB,iBAAiB,CAACc,OAAO,CAACG,IAAI,EAAEH,OAAO,CAAC;UAAC;YAG5CK,KAAY,GAAG,EAAE;YACvBA,KAAK,CAACC,IAAI,CAACH,IAAI,CAAC;UAAC;YAAA,MAEVE,KAAK,CAACE,MAAM,GAAG,CAAC;cAAA;cAAA;YAAA;YACf7C,IAAI,GAAG2C,KAAK,CAACrC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxBwC,QAAQ,GAAG9C,IAAI,CAAC8C,QAAQ,IAAI,EAAE;YAAA,uCACZA,QAAQ;YAAA;YAAA;UAAA;YAAA;cAAA;cAAA;YAAA;YAAvBC,WAAW;YACZC,4BAA4B,GAAGR,8BAA8B,CAACO,WAAW,CAAC;YAAA,KAC5EC,4BAA4B;cAAA;cAAA;YAAA;YAAA;YAAA,OACVN,4BAA4B,CAC9CK,WAAW,EACXT,OAAO,EACPU,4BAA4B,EAC5BvB,OAAO,CACR;UAAA;YALDsB,WAAW;YAAA;YAAA;UAAA;YAOXvB,iBAAiB,CAACuB,WAAW,EAAE;cAAC/B,QAAQ,EAARA;YAAQ,CAAC,CAAC;UAAC;YAG7C2B,KAAK,CAACC,IAAI,CAACG,WAAW,CAAC;UAAC;YAAA;YAAA;UAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;YAAA;UAAA;YAAA;YAAA;UAAA;YAAA,iCAIrBN,IAAI;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AAAA,SAOqBC,4BAA4B;EAAA;AAAA;AAAA;EAAA,0FAA3C,kBACL1C,IAAY,EACZsC,OAAkB,EAClBW,uBAAgD,EAChDxB,OAAsB;IAAA;IAAA;IAAA;MAAA;QAAA;UAAA;YAEhBT,QAAQ,GAAGsB,OAAO,CAACtB,QAAQ;YAE/BkC,iBAAiB,GAIfD,uBAAuB,CAJzBC,iBAAiB,EACjBC,YAAY,GAGVF,uBAAuB,CAHzBE,YAAY,EACZC,aAAa,GAEXH,uBAAuB,CAFzBG,aAAa,EACGC,mBAAmB,GACjCJ,uBAAuB,CADzBK,QAAQ,CAAGvC,GAAG;YAEVwC,mBAAmB,GAAG,IAAAC,+CAAyB,EAACH,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChFI,UAAU,GAAG3C,UAAU,CAACyC,mBAAmB,EAAEvC,QAAQ,CAAC;YAAA;YAAA,OACtC,IAAA0C,UAAI,EAACD,UAAU,EAAEE,wCAAmB,EAAElC,OAAO,CAAC;UAAA;YAA9DmC,OAAO;YACPC,kBAAkB,GAAG/C,UAAU,CAACd,IAAI,CAAC0B,OAAO,CAACX,GAAG,EAAEC,QAAQ,CAAC;YAC3DN,MAAM,GAAG4B,OAAO,aAAPA,OAAO,wCAAPA,OAAO,CAAEG,IAAI,kDAAb,cAAe/B,MAAM;YAE9BoD,kBAAkB,GAAG9D,IAAI,CAACiC,cAAc;YACxC8B,kBAAkB,GAAG/D,IAAI,CAACgE,cAAc;YAExCC,eAAe,GAAG;cACtBJ,kBAAkB,EAAlBA,kBAAkB;cAClBR,mBAAmB,EAAnBA,mBAAmB;cACnBH,iBAAiB,EAAjBA,iBAAiB;cACjBE,aAAa,EAAbA,aAAa;cACbD,YAAY,EAAZA,YAAY;cACZzC,MAAM,EAANA,MAAM;cACNM,QAAQ,EAARA,QAAQ;cACRa,aAAa,EAAEC,sBAAe,CAACC,eAAe;cAC9C+B,kBAAkB,EAAlBA,kBAAkB;cAClBC,kBAAkB,EAAlBA,kBAAkB;cAClBhE,WAAW,EAAXA,WAAW;cACXU,SAAS,EAATA;YACF,CAAC;YAAA;YAAA,OAEYyD,yBAAyB,CAAClE,IAAI,EAAE4D,OAAO,EAAEK,eAAe,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACvE;EAAA;AAAA;AAAA,SASqBC,yBAAyB;EAAA;AAAA;AAAA;EAAA,uFAAxC,kBAAyClE,IAAI,EAAEmE,WAAoB,EAAE1C,OAAY;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,IACjFzB,IAAI;cAAA;cAAA;YAAA;YAAA,kCACA,IAAI;UAAA;YAGbA,IAAI,CAAC6B,aAAa,GAAGC,sBAAe,CAACC,eAAe;YACpD/B,IAAI,CAACgC,cAAc,GAAGhC,IAAI,CAACiC,cAAc;YACzCjC,IAAI,CAACkC,eAAe,GAAGlC,IAAI,CAACmC,SAAS;YAAC;YAAA,OAED,IAAAiC,wCAAkB,EAAC;cAACR,OAAO,EAAEO,WAAW;cAAE1C,OAAO,EAAPA;YAAO,CAAC,CAAC;UAAA;YAAA;YAAjFqB,QAAQ,yBAARA,QAAQ;YAAE7C,UAAU,yBAAVA,UAAU;YAE3B,IAAIA,UAAU,EAAE;cACdD,IAAI,CAACC,UAAU,GAAGA,UAAU;cAC5BD,IAAI,CAAC0B,OAAO,GAAG;gBAACX,GAAG,EAAEd,UAAU,CAACoE,OAAO,WAAI5C,OAAO,CAACT,QAAQ,QAAK,EAAE;cAAC,CAAC;YACtE;YAEAhB,IAAI,CAACU,MAAM,GAAGD,SAAS,CAACT,IAAI,CAACU,MAAM,CAAC;YACpCV,IAAI,CAACoC,IAAI,GAAGrC,WAAW,CAACC,IAAI,CAAC;YAC7BA,IAAI,CAAC8C,QAAQ,GAAGA,QAAQ;YACxB9C,IAAI,CAAC4B,EAAE,GAAG5B,IAAI,CAACC,UAAU;YAAC,kCAEnBD,IAAI;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACZ;EAAA;AAAA;AASD,SAASwC,8BAA8B,CAACxC,IAAmB,EAA2B;EAAA;EACpF,OAAO,CAAAA,IAAI,aAAJA,IAAI,2CAAJA,IAAI,CAAEsE,UAAU,qDAAhB,iBAAmB,yBAAyB,CAAC,MAAItE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEuE,cAAc;AAC9E"}
@@ -1,36 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.parseInstancedModel3DTile = parseInstancedModel3DTile;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _core = require("@math.gl/core");
15
-
16
11
  var _geospatial = require("@math.gl/geospatial");
17
-
18
12
  var _math = require("@loaders.gl/math");
19
-
20
13
  var _tile3dFeatureTable = _interopRequireDefault(require("../classes/tile-3d-feature-table"));
21
-
22
14
  var _tile3dBatchTable = _interopRequireDefault(require("../classes/tile-3d-batch-table"));
23
-
24
15
  var _parse3dTileHeader = require("./helpers/parse-3d-tile-header");
25
-
26
16
  var _parse3dTileTables = require("./helpers/parse-3d-tile-tables");
27
-
28
17
  var _parse3dTileGltfView = require("./helpers/parse-3d-tile-gltf-view");
29
-
30
18
  function parseInstancedModel3DTile(_x, _x2, _x3, _x4, _x5) {
31
19
  return _parseInstancedModel3DTile.apply(this, arguments);
32
20
  }
33
-
34
21
  function _parseInstancedModel3DTile() {
35
22
  _parseInstancedModel3DTile = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tile, arrayBuffer, byteOffset, options, context) {
36
23
  return _regenerator.default.wrap(function _callee$(_context) {
@@ -40,10 +27,8 @@ function _parseInstancedModel3DTile() {
40
27
  byteOffset = parseInstancedModel(tile, arrayBuffer, byteOffset, options, context);
41
28
  _context.next = 3;
42
29
  return (0, _parse3dTileGltfView.extractGLTF)(tile, tile.gltfFormat, options, context);
43
-
44
30
  case 3:
45
31
  return _context.abrupt("return", byteOffset);
46
-
47
32
  case 4:
48
33
  case "end":
49
34
  return _context.stop();
@@ -53,33 +38,28 @@ function _parseInstancedModel3DTile() {
53
38
  }));
54
39
  return _parseInstancedModel3DTile.apply(this, arguments);
55
40
  }
56
-
57
41
  function parseInstancedModel(tile, arrayBuffer, byteOffset, options, context) {
58
42
  byteOffset = (0, _parse3dTileHeader.parse3DTileHeaderSync)(tile, arrayBuffer, byteOffset);
59
-
60
43
  if (tile.version !== 1) {
61
44
  throw new Error("Instanced 3D Model version ".concat(tile.version, " is not supported"));
62
45
  }
63
-
64
46
  byteOffset = (0, _parse3dTileTables.parse3DTileTablesHeaderSync)(tile, arrayBuffer, byteOffset);
65
47
  var view = new DataView(arrayBuffer);
66
48
  tile.gltfFormat = view.getUint32(byteOffset, true);
67
49
  byteOffset += 4;
50
+
68
51
  byteOffset = (0, _parse3dTileTables.parse3DTileTablesSync)(tile, arrayBuffer, byteOffset, options);
69
52
  byteOffset = (0, _parse3dTileGltfView.parse3DTileGLTFViewSync)(tile, arrayBuffer, byteOffset, options);
70
53
 
71
54
  if (tile.featureTableJsonByteLength === 0) {
72
55
  throw new Error('i3dm parser: featureTableJsonByteLength is zero.');
73
56
  }
74
-
75
57
  var featureTable = new _tile3dFeatureTable.default(tile.featureTableJson, tile.featureTableBinary);
76
58
  var instancesLength = featureTable.getGlobalProperty('INSTANCES_LENGTH');
77
59
  featureTable.featuresLength = instancesLength;
78
-
79
60
  if (!Number.isFinite(instancesLength)) {
80
61
  throw new Error('i3dm parser: INSTANCES_LENGTH must be defined');
81
62
  }
82
-
83
63
  tile.eastNorthUp = featureTable.getGlobalProperty('EAST_NORTH_UP');
84
64
  tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', _math.GL.FLOAT, 3);
85
65
  var batchTable = new _tile3dBatchTable.default(tile.batchTableJson, tile.batchTableBinary, instancesLength);
@@ -112,7 +92,6 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
112
92
  var scratch2 = [];
113
93
  var scratchVector1 = new _core.Vector3();
114
94
  var scratchVector2 = new _core.Vector3();
115
-
116
95
  for (var i = 0; i < instancesLength; i++) {
117
96
  var position = void 0;
118
97
 
@@ -121,89 +100,75 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
121
100
  } else if (featureTable.hasProperty('POSITION_QUANTIZED')) {
122
101
  position = featureTable.getProperty('POSITION_QUANTIZED', _math.GL.UNSIGNED_SHORT, 3, i, instancePosition);
123
102
  var quantizedVolumeOffset = featureTable.getGlobalProperty('QUANTIZED_VOLUME_OFFSET', _math.GL.FLOAT, 3, scratchVector1);
124
-
125
103
  if (!quantizedVolumeOffset) {
126
104
  throw new Error('i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.');
127
105
  }
128
-
129
106
  var quantizedVolumeScale = featureTable.getGlobalProperty('QUANTIZED_VOLUME_SCALE', _math.GL.FLOAT, 3, scratchVector2);
130
-
131
107
  if (!quantizedVolumeScale) {
132
108
  throw new Error('i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.');
133
109
  }
134
-
135
110
  var MAX_UNSIGNED_SHORT = 65535.0;
136
-
137
111
  for (var j = 0; j < 3; j++) {
138
112
  position[j] = position[j] / MAX_UNSIGNED_SHORT * quantizedVolumeScale[j] + quantizedVolumeOffset[j];
139
113
  }
140
114
  }
141
-
142
115
  if (!position) {
143
116
  throw new Error('i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.');
144
117
  }
145
-
146
118
  instancePosition.copy(position);
147
119
  instanceTranslationRotationScale.translation = instancePosition;
120
+
148
121
  tile.normalUp = featureTable.getProperty('NORMAL_UP', _math.GL.FLOAT, 3, i, scratch1);
149
122
  tile.normalRight = featureTable.getProperty('NORMAL_RIGHT', _math.GL.FLOAT, 3, i, scratch2);
150
123
  var hasCustomOrientation = false;
151
-
152
124
  if (tile.normalUp) {
153
125
  if (!tile.normalRight) {
154
126
  throw new Error('i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.');
155
127
  }
156
-
157
128
  tile.hasCustomOrientation = true;
158
129
  } else {
159
130
  tile.octNormalUp = featureTable.getProperty('NORMAL_UP_OCT32P', _math.GL.UNSIGNED_SHORT, 2, scratch1);
160
131
  tile.octNormalRight = featureTable.getProperty('NORMAL_RIGHT_OCT32P', _math.GL.UNSIGNED_SHORT, 2, scratch2);
161
-
162
132
  if (tile.octNormalUp) {
163
133
  if (!tile.octNormalRight) {
164
134
  throw new Error('i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P');
165
135
  }
166
-
167
136
  throw new Error('i3dm: oct-encoded orientation not implemented');
168
137
  } else if (tile.eastNorthUp) {
169
138
  _geospatial.Ellipsoid.WGS84.eastNorthUpToFixedFrame(instancePosition, instanceTransform);
170
-
171
139
  instanceTransform.getRotationMatrix3(instanceRotation);
172
140
  } else {
173
141
  instanceRotation.identity();
174
142
  }
175
143
  }
176
-
177
144
  if (hasCustomOrientation) {
178
145
  instanceNormalForward.copy(instanceNormalRight).cross(instanceNormalUp).normalize();
179
146
  instanceRotation.setColumn(0, instanceNormalRight);
180
147
  instanceRotation.setColumn(1, instanceNormalUp);
181
148
  instanceRotation.setColumn(2, instanceNormalForward);
182
149
  }
183
-
184
150
  instanceQuaternion.fromMatrix3(instanceRotation);
185
151
  instanceTranslationRotationScale.rotation = instanceQuaternion;
152
+
186
153
  instanceScale.set(1.0, 1.0, 1.0);
187
154
  var scale = featureTable.getProperty('SCALE', _math.GL.FLOAT, 1, i);
188
-
189
155
  if (Number.isFinite(scale)) {
190
156
  instanceScale.multiplyByScalar(scale);
191
157
  }
192
-
193
158
  var nonUniformScale = featureTable.getProperty('SCALE_NON_UNIFORM', _math.GL.FLOAT, 3, i, scratch1);
194
-
195
159
  if (nonUniformScale) {
196
160
  instanceScale.scale(nonUniformScale);
197
161
  }
198
162
 
199
163
  instanceTranslationRotationScale.scale = instanceScale;
200
- var batchId = featureTable.getProperty('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1, i);
201
164
 
165
+ var batchId = featureTable.getProperty('BATCH_ID', _math.GL.UNSIGNED_SHORT, 1, i);
202
166
  if (batchId === undefined) {
203
167
  batchId = i;
204
168
  }
205
169
 
206
170
  var rotationMatrix = new _core.Matrix4().fromQuaternion(instanceTranslationRotationScale.rotation);
171
+
207
172
  instanceTransform.identity();
208
173
  instanceTransform.translate(instanceTranslationRotationScale.translation);
209
174
  instanceTransform.multiplyRight(rotationMatrix);
@@ -214,7 +179,6 @@ function extractInstancedAttributes(tile, featureTable, batchTable, instancesLen
214
179
  batchId: batchId
215
180
  };
216
181
  }
217
-
218
182
  tile.instances = instances;
219
183
  }
220
184
  //# sourceMappingURL=parse-3d-tile-instanced-model.js.map