@loaders.gl/3d-tiles 4.2.0-alpha.4 → 4.2.0-alpha.6

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 (144) hide show
  1. package/dist/3d-tiles-archive/3d-tiles-archive-archive.js +68 -41
  2. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts +1 -1
  3. package/dist/3d-tiles-archive/3d-tiles-archive-parser.d.ts.map +1 -1
  4. package/dist/3d-tiles-archive/3d-tiles-archive-parser.js +26 -16
  5. package/dist/3d-tiles-archive-loader.js +26 -15
  6. package/dist/cesium-ion-loader.js +34 -30
  7. package/dist/dist.dev.js +8824 -6420
  8. package/dist/dist.min.js +32 -0
  9. package/dist/index.cjs +138 -340
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +13 -13
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +7 -1
  14. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  15. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +103 -87
  16. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +179 -155
  17. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  18. package/dist/lib/classes/tile-3d-batch-table.js +241 -217
  19. package/dist/lib/classes/tile-3d-feature-table.js +64 -59
  20. package/dist/lib/constants.js +19 -15
  21. package/dist/lib/encoders/encode-3d-tile-batched-model.js +40 -35
  22. package/dist/lib/encoders/encode-3d-tile-composite.js +19 -17
  23. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +32 -31
  24. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +31 -32
  25. package/dist/lib/encoders/encode-3d-tile.js +23 -19
  26. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +23 -23
  27. package/dist/lib/ion/ion.js +55 -54
  28. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts +1 -1
  29. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.d.ts.map +1 -1
  30. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +57 -51
  31. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts +1 -1
  32. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.d.ts.map +1 -1
  33. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +21 -18
  34. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +35 -20
  35. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +4 -4
  36. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  37. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +269 -234
  38. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts +2 -2
  39. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.d.ts.map +1 -1
  40. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +83 -55
  41. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts +1 -1
  42. package/dist/lib/parsers/helpers/parse-3d-tile-header.d.ts.map +1 -1
  43. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +23 -14
  44. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +1 -1
  45. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  46. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +82 -54
  47. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts +2 -2
  48. package/dist/lib/parsers/helpers/parse-3d-tile-tables.d.ts.map +1 -1
  49. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +79 -68
  50. package/dist/lib/parsers/helpers/parse-utils.js +19 -14
  51. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts +2 -2
  52. package/dist/lib/parsers/parse-3d-tile-batched-model.d.ts.map +1 -1
  53. package/dist/lib/parsers/parse-3d-tile-batched-model.js +21 -17
  54. package/dist/lib/parsers/parse-3d-tile-composite.d.ts +2 -2
  55. package/dist/lib/parsers/parse-3d-tile-composite.d.ts.map +1 -1
  56. package/dist/lib/parsers/parse-3d-tile-composite.js +18 -14
  57. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +2 -2
  58. package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
  59. package/dist/lib/parsers/parse-3d-tile-gltf.js +22 -14
  60. package/dist/lib/parsers/parse-3d-tile-header.d.ts +2 -2
  61. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  62. package/dist/lib/parsers/parse-3d-tile-header.js +168 -159
  63. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts +2 -2
  64. package/dist/lib/parsers/parse-3d-tile-instanced-model.d.ts.map +1 -1
  65. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +153 -123
  66. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts +2 -2
  67. package/dist/lib/parsers/parse-3d-tile-point-cloud.d.ts.map +1 -1
  68. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +380 -174
  69. package/dist/lib/parsers/parse-3d-tile.d.ts +2 -2
  70. package/dist/lib/parsers/parse-3d-tile.d.ts.map +1 -1
  71. package/dist/lib/parsers/parse-3d-tile.js +24 -24
  72. package/dist/lib/utils/obb/s2-corners-to-obb.js +29 -16
  73. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts +1 -1
  74. package/dist/lib/utils/s2/converters/s2-to-boundary.d.ts.map +1 -1
  75. package/dist/lib/utils/s2/converters/s2-to-boundary.js +55 -35
  76. package/dist/lib/utils/s2/converters/s2-to-obb-points.js +31 -20
  77. package/dist/lib/utils/s2/converters/s2-to-region.d.ts +1 -1
  78. package/dist/lib/utils/s2/converters/s2-to-region.d.ts.map +1 -1
  79. package/dist/lib/utils/s2/converters/s2-to-region.js +51 -35
  80. package/dist/lib/utils/s2/index.d.ts +7 -7
  81. package/dist/lib/utils/s2/index.d.ts.map +1 -1
  82. package/dist/lib/utils/s2/index.js +3 -1
  83. package/dist/lib/utils/s2/s2-geometry-functions.js +19 -5
  84. package/dist/lib/utils/s2/s2-token-functions.js +51 -22
  85. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts +1 -1
  86. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.d.ts.map +1 -1
  87. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.js +23 -9
  88. package/dist/lib/utils/s2/s2geometry/s2-geometry.js +218 -157
  89. package/dist/lib/utils/version.js +4 -2
  90. package/dist/tile-3d-subtree-loader.d.ts +1 -1
  91. package/dist/tile-3d-subtree-loader.d.ts.map +1 -1
  92. package/dist/tile-3d-subtree-loader.js +15 -10
  93. package/dist/tile-3d-writer.js +19 -14
  94. package/dist/tiles-3d-loader.js +65 -55
  95. package/dist/types.js +3 -1
  96. package/package.json +17 -12
  97. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +1 -1
  98. package/dist/3d-tiles-archive/3d-tiles-archive-archive.js.map +0 -1
  99. package/dist/3d-tiles-archive/3d-tiles-archive-parser.js.map +0 -1
  100. package/dist/3d-tiles-archive-loader.js.map +0 -1
  101. package/dist/cesium-ion-loader.js.map +0 -1
  102. package/dist/index.js.map +0 -1
  103. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  104. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  105. package/dist/lib/classes/tile-3d-batch-table.js.map +0 -1
  106. package/dist/lib/classes/tile-3d-feature-table.js.map +0 -1
  107. package/dist/lib/constants.js.map +0 -1
  108. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  109. package/dist/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  110. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  111. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  112. package/dist/lib/encoders/encode-3d-tile.js.map +0 -1
  113. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  114. package/dist/lib/ion/ion.js.map +0 -1
  115. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  116. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  117. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  118. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +0 -1
  119. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  120. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  121. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js.map +0 -1
  122. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  123. package/dist/lib/parsers/helpers/parse-utils.js.map +0 -1
  124. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  125. package/dist/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  126. package/dist/lib/parsers/parse-3d-tile-gltf.js.map +0 -1
  127. package/dist/lib/parsers/parse-3d-tile-header.js.map +0 -1
  128. package/dist/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  129. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  130. package/dist/lib/parsers/parse-3d-tile.js.map +0 -1
  131. package/dist/lib/utils/obb/s2-corners-to-obb.js.map +0 -1
  132. package/dist/lib/utils/s2/converters/s2-to-boundary.js.map +0 -1
  133. package/dist/lib/utils/s2/converters/s2-to-obb-points.js.map +0 -1
  134. package/dist/lib/utils/s2/converters/s2-to-region.js.map +0 -1
  135. package/dist/lib/utils/s2/index.js.map +0 -1
  136. package/dist/lib/utils/s2/s2-geometry-functions.js.map +0 -1
  137. package/dist/lib/utils/s2/s2-token-functions.js.map +0 -1
  138. package/dist/lib/utils/s2/s2geometry/s2-cell-utils.js.map +0 -1
  139. package/dist/lib/utils/s2/s2geometry/s2-geometry.js.map +0 -1
  140. package/dist/lib/utils/version.js.map +0 -1
  141. package/dist/tile-3d-subtree-loader.js.map +0 -1
  142. package/dist/tile-3d-writer.js.map +0 -1
  143. package/dist/tiles-3d-loader.js.map +0 -1
  144. package/dist/types.js.map +0 -1
@@ -1,25 +1,29 @@
1
- import { GL } from '@loaders.gl/math';
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT AND Apache-2.0
3
+ // Copyright vis.gl contributors
4
+ // This file is derived from the Cesium code base under Apache 2 license
5
+ // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
6
+ import { GL } from '@loaders.gl/math'; // math.gl/geometry;
2
7
  import Tile3DFeatureTable from "../classes/tile-3d-feature-table.js";
8
+ // import Tile3DBatchTable from '../classes/tile-3d-batch-table';
3
9
  import { parse3DTileHeaderSync } from "./helpers/parse-3d-tile-header.js";
4
10
  import { parse3DTileTablesHeaderSync, parse3DTileTablesSync } from "./helpers/parse-3d-tile-tables.js";
5
11
  import { parse3DTileGLTFViewSync, extractGLTF, GLTF_FORMAT } from "./helpers/parse-3d-tile-gltf-view.js";
6
12
  export async function parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context) {
7
- var _tile$gltf;
8
- byteOffset = parseBatchedModel(tile, arrayBuffer, byteOffset, options, context);
9
- await extractGLTF(tile, GLTF_FORMAT.EMBEDDED, options, context);
10
- const extensions = tile === null || tile === void 0 ? void 0 : (_tile$gltf = tile.gltf) === null || _tile$gltf === void 0 ? void 0 : _tile$gltf.extensions;
11
- if (extensions && extensions.CESIUM_RTC) {
12
- tile.rtcCenter = extensions.CESIUM_RTC.center;
13
- }
14
- return byteOffset;
13
+ byteOffset = parseBatchedModel(tile, arrayBuffer, byteOffset, options, context);
14
+ await extractGLTF(tile, GLTF_FORMAT.EMBEDDED, options, context);
15
+ const extensions = tile?.gltf?.extensions;
16
+ if (extensions && extensions.CESIUM_RTC) {
17
+ tile.rtcCenter = extensions.CESIUM_RTC.center;
18
+ }
19
+ return byteOffset;
15
20
  }
16
21
  function parseBatchedModel(tile, arrayBuffer, byteOffset, options, context) {
17
- byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);
18
- byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);
19
- byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);
20
- byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);
21
- const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);
22
- tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);
23
- return byteOffset;
22
+ byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);
23
+ byteOffset = parse3DTileTablesHeaderSync(tile, arrayBuffer, byteOffset);
24
+ byteOffset = parse3DTileTablesSync(tile, arrayBuffer, byteOffset, options);
25
+ byteOffset = parse3DTileGLTFViewSync(tile, arrayBuffer, byteOffset, options);
26
+ const featureTable = new Tile3DFeatureTable(tile.featureTableJson, tile.featureTableBinary);
27
+ tile.rtcCenter = featureTable.getGlobalProperty('RTC_CENTER', GL.FLOAT, 3);
28
+ return byteOffset;
24
29
  }
25
- //# sourceMappingURL=parse-3d-tile-batched-model.js.map
@@ -1,6 +1,6 @@
1
1
  import type { LoaderContext } from '@loaders.gl/loader-utils';
2
- import type { Tiles3DLoaderOptions } from '../../tiles-3d-loader';
3
- import { Tiles3DTileContent } from '../../types';
2
+ import type { Tiles3DLoaderOptions } from "../../tiles-3d-loader.js";
3
+ import { Tiles3DTileContent } from "../../types.js";
4
4
  /** Resolve circulate dependency by passing in parsing function as argument */
5
5
  type Parse3DTile = (arrayBuffer: ArrayBuffer, byteOffset: number, options: Tiles3DLoaderOptions | undefined, context: LoaderContext | undefined, subtile: any) => Promise<number>;
6
6
  export declare function parseComposite3DTile(tile: Tiles3DTileContent, arrayBuffer: ArrayBuffer, byteOffset: number, options: Tiles3DLoaderOptions | undefined, context: LoaderContext | undefined, parse3DTile: Parse3DTile): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-composite.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-composite.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAE/C,8EAA8E;AAC9E,KAAK,WAAW,GAAG,CACjB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,OAAO,KAAA,KACJ,OAAO,CAAC,MAAM,CAAC,CAAC;AAGrB,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
1
+ {"version":3,"file":"parse-3d-tile-composite.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-composite.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAC,oBAAoB,EAAC,iCAA8B;AAEhE,OAAO,EAAC,kBAAkB,EAAC,uBAAoB;AAE/C,8EAA8E;AAC9E,KAAK,WAAW,GAAG,CACjB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,OAAO,KAAA,KACJ,OAAO,CAAC,MAAM,CAAC,CAAC;AAGrB,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
@@ -1,17 +1,21 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT AND Apache-2.0
3
+ // Copyright vis.gl contributors
1
4
  import { parse3DTileHeaderSync } from "./helpers/parse-3d-tile-header.js";
5
+ // eslint-disable-next-line max-params
2
6
  export async function parseComposite3DTile(tile, arrayBuffer, byteOffset, options, context, parse3DTile) {
3
- byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);
4
- const view = new DataView(arrayBuffer);
5
- tile.tilesLength = view.getUint32(byteOffset, true);
6
- byteOffset += 4;
7
- tile.tiles = [];
8
- while (tile.tiles.length < tile.tilesLength && (tile.byteLength || 0) - byteOffset > 12) {
9
- const subtile = {
10
- shape: 'tile3d'
11
- };
12
- tile.tiles.push(subtile);
13
- byteOffset = await parse3DTile(arrayBuffer, byteOffset, options, context, subtile);
14
- }
15
- return byteOffset;
7
+ byteOffset = parse3DTileHeaderSync(tile, arrayBuffer, byteOffset);
8
+ const view = new DataView(arrayBuffer);
9
+ // Extract number of tiles
10
+ tile.tilesLength = view.getUint32(byteOffset, true);
11
+ byteOffset += 4;
12
+ // extract each tile from the byte stream
13
+ tile.tiles = [];
14
+ while (tile.tiles.length < tile.tilesLength && (tile.byteLength || 0) - byteOffset > 12) {
15
+ const subtile = { shape: 'tile3d' };
16
+ tile.tiles.push(subtile);
17
+ byteOffset = await parse3DTile(arrayBuffer, byteOffset, options, context, subtile);
18
+ // TODO - do we need to add any padding in between tiles?
19
+ }
20
+ return byteOffset;
16
21
  }
17
- //# sourceMappingURL=parse-3d-tile-composite.js.map
@@ -1,5 +1,5 @@
1
1
  import { LoaderContext } from '@loaders.gl/loader-utils';
2
- import type { Tiles3DLoaderOptions } from '../../tiles-3d-loader';
3
- import { Tiles3DTileContent } from '../../types';
2
+ import type { Tiles3DLoaderOptions } from "../../tiles-3d-loader.js";
3
+ import { Tiles3DTileContent } from "../../types.js";
4
4
  export declare function parseGltf3DTile(tile: Tiles3DTileContent, arrayBuffer: ArrayBuffer, options?: Tiles3DLoaderOptions, context?: LoaderContext): Promise<number>;
5
5
  //# sourceMappingURL=parse-3d-tile-gltf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAE/C,wBAAsB,eAAe,CACnC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
1
+ {"version":3,"file":"parse-3d-tile-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAC,oBAAoB,EAAC,iCAA8B;AAChE,OAAO,EAAC,kBAAkB,EAAC,uBAAoB;AAE/C,wBAAsB,eAAe,CACnC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
@@ -1,19 +1,27 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT license
3
+ // Copyright (c) vis.gl contributors
1
4
  import { parseFromContext } from '@loaders.gl/loader-utils';
2
5
  import { _getMemoryUsageGLTF, GLTFLoader, postProcessGLTF } from '@loaders.gl/gltf';
3
6
  export async function parseGltf3DTile(tile, arrayBuffer, options, context) {
4
- var _options$3dTiles, _options$3dTiles2;
5
- tile.rotateYtoZ = true;
6
- tile.gltfUpAxis = options !== null && options !== void 0 && (_options$3dTiles = options['3d-tiles']) !== null && _options$3dTiles !== void 0 && _options$3dTiles.assetGltfUpAxis ? options['3d-tiles'].assetGltfUpAxis : 'Y';
7
- if (options !== null && options !== void 0 && (_options$3dTiles2 = options['3d-tiles']) !== null && _options$3dTiles2 !== void 0 && _options$3dTiles2.loadGLTF) {
8
- if (!context) {
9
- return arrayBuffer.byteLength;
7
+ // Set flags
8
+ // glTF models need to be rotated from Y to Z up
9
+ // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up
10
+ tile.rotateYtoZ = true;
11
+ // Save gltf up axis
12
+ tile.gltfUpAxis = options?.['3d-tiles']?.assetGltfUpAxis
13
+ ? options['3d-tiles'].assetGltfUpAxis
14
+ : 'Y';
15
+ if (options?.['3d-tiles']?.loadGLTF) {
16
+ if (!context) {
17
+ return arrayBuffer.byteLength;
18
+ }
19
+ const gltfWithBuffers = await parseFromContext(arrayBuffer, GLTFLoader, options, context);
20
+ tile.gltf = postProcessGLTF(gltfWithBuffers);
21
+ tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);
10
22
  }
11
- const gltfWithBuffers = await parseFromContext(arrayBuffer, GLTFLoader, options, context);
12
- tile.gltf = postProcessGLTF(gltfWithBuffers);
13
- tile.gpuMemoryUsageInBytes = _getMemoryUsageGLTF(tile.gltf);
14
- } else {
15
- tile.gltfArrayBuffer = arrayBuffer;
16
- }
17
- return arrayBuffer.byteLength;
23
+ else {
24
+ tile.gltfArrayBuffer = arrayBuffer;
25
+ }
26
+ return arrayBuffer.byteLength;
18
27
  }
19
- //# sourceMappingURL=parse-3d-tile-gltf.js.map
@@ -1,7 +1,7 @@
1
- import type { Tiles3DLoaderOptions } from '../../tiles-3d-loader';
1
+ import type { Tiles3DLoaderOptions } from "../../tiles-3d-loader.js";
2
2
  import type { LoaderOptions } from '@loaders.gl/loader-utils';
3
3
  import { LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE } from '@loaders.gl/tiles';
4
- import { ImplicitTilingExensionData, Subtree, Tile3DBoundingVolume, Tiles3DTileJSON, Tiles3DTileJSONPostprocessed, Tiles3DTilesetJSON } from '../../types';
4
+ import { ImplicitTilingExensionData, Subtree, Tile3DBoundingVolume, Tiles3DTileJSON, Tiles3DTileJSONPostprocessed, Tiles3DTilesetJSON } from "../../types.js";
5
5
  /** Options for recursive loading implicit subtrees */
6
6
  export type ImplicitOptions = {
7
7
  /** Template of the full url of the content template */
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAC,eAAe,EAAE,eAAe,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,OAAO,EACP,oBAAoB,EAEpB,eAAe,EACf,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC;IAC/C,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,uEAAuE;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC;IACpF,gEAAgE;IAChE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE,CAAC;AAiDF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,GACf,4BAA4B,GAAG,IAAI,CAwBrC;AAGD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA+C9C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,0BAA0B,EACnD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA2C9C;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA+B9C"}
1
+ {"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,oBAAoB,EAAC,iCAA8B;AAChE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAC,eAAe,EAAE,eAAe,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,OAAO,EACP,oBAAoB,EAEpB,eAAe,EACf,4BAA4B,EAC5B,kBAAkB,EACnB,uBAAoB;AAMrB,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,iBAAiB,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC;IAC/C,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,uEAAuE;IACvE,WAAW,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC;IACpF,gEAAgE;IAChE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE,CAAC;AAiDF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,eAAe,GAAG,IAAI,EAC5B,QAAQ,EAAE,MAAM,GACf,4BAA4B,GAAG,IAAI,CAwBrC;AAGD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA+C9C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,0BAA0B,EACnD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA2C9C;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CA+B9C"}
@@ -1,185 +1,194 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright vis.gl contributors
1
4
  import { path } from '@loaders.gl/loader-utils';
2
5
  import { Tile3DSubtreeLoader } from "../../tile-3d-subtree-loader.js";
3
6
  import { load } from '@loaders.gl/core';
4
7
  import { LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE } from '@loaders.gl/tiles';
5
8
  import { parseImplicitTiles, replaceContentUrlTemplate } from "./helpers/parse-3d-implicit-tiles.js";
6
9
  import { convertS2BoundingVolumetoOBB } from "../utils/obb/s2-corners-to-obb.js";
7
- function getTileType(tile) {
8
- let tileContentUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
9
- if (!tileContentUrl) {
10
- return TILE_TYPE.EMPTY;
11
- }
12
- const contentUrl = tileContentUrl.split('?')[0];
13
- const fileExtension = contentUrl.split('.').pop();
14
- switch (fileExtension) {
15
- case 'pnts':
16
- return TILE_TYPE.POINTCLOUD;
17
- case 'i3dm':
18
- case 'b3dm':
19
- case 'glb':
20
- case 'gltf':
21
- return TILE_TYPE.SCENEGRAPH;
22
- default:
23
- return fileExtension || TILE_TYPE.EMPTY;
24
- }
10
+ function getTileType(tile, tileContentUrl = '') {
11
+ if (!tileContentUrl) {
12
+ return TILE_TYPE.EMPTY;
13
+ }
14
+ const contentUrl = tileContentUrl.split('?')[0]; // Discard query string
15
+ const fileExtension = contentUrl.split('.').pop();
16
+ switch (fileExtension) {
17
+ case 'pnts':
18
+ return TILE_TYPE.POINTCLOUD;
19
+ case 'i3dm':
20
+ case 'b3dm':
21
+ case 'glb':
22
+ case 'gltf':
23
+ return TILE_TYPE.SCENEGRAPH;
24
+ default:
25
+ return fileExtension || TILE_TYPE.EMPTY;
26
+ }
25
27
  }
26
28
  function getRefine(refine) {
27
- switch (refine) {
28
- case 'REPLACE':
29
- case 'replace':
30
- return TILE_REFINEMENT.REPLACE;
31
- case 'ADD':
32
- case 'add':
33
- return TILE_REFINEMENT.ADD;
34
- default:
35
- return refine;
36
- }
29
+ switch (refine) {
30
+ case 'REPLACE':
31
+ case 'replace':
32
+ return TILE_REFINEMENT.REPLACE;
33
+ case 'ADD':
34
+ case 'add':
35
+ return TILE_REFINEMENT.ADD;
36
+ default:
37
+ return refine;
38
+ }
37
39
  }
38
40
  function resolveUri(uri, basePath) {
39
- const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
40
- if (urlSchemeRegex.test(basePath)) {
41
- const url = new URL(uri, `${basePath}/`);
42
- return decodeURI(url.toString());
43
- } else if (uri.startsWith('/')) {
44
- return uri;
45
- }
46
- return path.resolve(basePath, uri);
41
+ // url scheme per RFC3986
42
+ const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
43
+ if (urlSchemeRegex.test(basePath)) {
44
+ const url = new URL(uri, `${basePath}/`);
45
+ return decodeURI(url.toString());
46
+ }
47
+ else if (uri.startsWith('/')) {
48
+ return uri;
49
+ }
50
+ return path.resolve(basePath, uri);
47
51
  }
48
52
  export function normalizeTileData(tile, basePath) {
49
- if (!tile) {
50
- return null;
51
- }
52
- let tileContentUrl;
53
- if (tile.content) {
54
- var _tile$content;
55
- const contentUri = tile.content.uri || ((_tile$content = tile.content) === null || _tile$content === void 0 ? void 0 : _tile$content.url);
56
- if (typeof contentUri !== 'undefined') {
57
- tileContentUrl = resolveUri(contentUri, basePath);
53
+ if (!tile) {
54
+ return null;
55
+ }
56
+ let tileContentUrl;
57
+ if (tile.content) {
58
+ const contentUri = tile.content.uri || tile.content?.url;
59
+ if (typeof contentUri !== 'undefined') {
60
+ // sparse implicit tilesets may not define content for all nodes
61
+ tileContentUrl = resolveUri(contentUri, basePath);
62
+ }
58
63
  }
59
- }
60
- const tilePostprocessed = {
61
- ...tile,
62
- id: tileContentUrl,
63
- contentUrl: tileContentUrl,
64
- lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
65
- lodMetricValue: tile.geometricError,
66
- transformMatrix: tile.transform,
67
- type: getTileType(tile, tileContentUrl),
68
- refine: getRefine(tile.refine)
69
- };
70
- return tilePostprocessed;
64
+ const tilePostprocessed = {
65
+ ...tile,
66
+ id: tileContentUrl,
67
+ contentUrl: tileContentUrl,
68
+ lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
69
+ lodMetricValue: tile.geometricError,
70
+ transformMatrix: tile.transform,
71
+ type: getTileType(tile, tileContentUrl),
72
+ refine: getRefine(tile.refine)
73
+ };
74
+ return tilePostprocessed;
71
75
  }
76
+ // normalize tile headers
72
77
  export async function normalizeTileHeaders(tileset, basePath, options) {
73
- let root = null;
74
- const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset.root);
75
- if (rootImplicitTilingExtension && tileset.root) {
76
- root = await normalizeImplicitTileHeaders(tileset.root, tileset, basePath, rootImplicitTilingExtension, options);
77
- } else {
78
- root = normalizeTileData(tileset.root, basePath);
79
- }
80
- const stack = [];
81
- stack.push(root);
82
- while (stack.length > 0) {
83
- const tile = stack.pop() || {};
84
- const children = tile.children || [];
85
- const childrenPostprocessed = [];
86
- for (const childHeader of children) {
87
- const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
88
- let childHeaderPostprocessed;
89
- if (childImplicitTilingExtension) {
90
- childHeaderPostprocessed = await normalizeImplicitTileHeaders(childHeader, tileset, basePath, childImplicitTilingExtension, options);
91
- } else {
92
- childHeaderPostprocessed = normalizeTileData(childHeader, basePath);
93
- }
94
- if (childHeaderPostprocessed) {
95
- childrenPostprocessed.push(childHeaderPostprocessed);
96
- stack.push(childHeaderPostprocessed);
97
- }
78
+ let root = null;
79
+ const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset.root);
80
+ if (rootImplicitTilingExtension && tileset.root) {
81
+ root = await normalizeImplicitTileHeaders(tileset.root, tileset, basePath, rootImplicitTilingExtension, options);
82
+ }
83
+ else {
84
+ root = normalizeTileData(tileset.root, basePath);
85
+ }
86
+ const stack = [];
87
+ stack.push(root);
88
+ while (stack.length > 0) {
89
+ const tile = stack.pop() || {};
90
+ const children = tile.children || [];
91
+ const childrenPostprocessed = [];
92
+ for (const childHeader of children) {
93
+ const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
94
+ let childHeaderPostprocessed;
95
+ if (childImplicitTilingExtension) {
96
+ childHeaderPostprocessed = await normalizeImplicitTileHeaders(childHeader, tileset, basePath, childImplicitTilingExtension, options);
97
+ }
98
+ else {
99
+ childHeaderPostprocessed = normalizeTileData(childHeader, basePath);
100
+ }
101
+ if (childHeaderPostprocessed) {
102
+ childrenPostprocessed.push(childHeaderPostprocessed);
103
+ stack.push(childHeaderPostprocessed);
104
+ }
105
+ }
106
+ tile.children = childrenPostprocessed;
98
107
  }
99
- tile.children = childrenPostprocessed;
100
- }
101
- return root;
108
+ return root;
102
109
  }
110
+ /**
111
+ * Do normalisation of implicit tile headers
112
+ * TODO Check if Tile3D class can be a return type here.
113
+ * @param tileset
114
+ */
103
115
  export async function normalizeImplicitTileHeaders(tile, tileset, basePath, implicitTilingExtension, options) {
104
- var _tile$content2, _tileset$root, _tile$boundingVolume$;
105
- const {
106
- subdivisionScheme,
107
- maximumLevel,
108
- availableLevels,
109
- subtreeLevels,
110
- subtrees: {
111
- uri: subtreesUriTemplate
116
+ const { subdivisionScheme, maximumLevel, availableLevels, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
117
+ const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
118
+ const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
119
+ const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);
120
+ const tileContentUri = tile.content?.uri;
121
+ const contentUrlTemplate = tileContentUri ? resolveUri(tileContentUri, basePath) : '';
122
+ const refine = tileset?.root?.refine;
123
+ // @ts-ignore
124
+ const rootLodMetricValue = tile.geometricError;
125
+ // Replace tile.boundingVolume with the the bounding volume specified by the extensions['3DTILES_bounding_volume_S2']
126
+ const s2VolumeInfo = tile.boundingVolume.extensions?.['3DTILES_bounding_volume_S2'];
127
+ if (s2VolumeInfo) {
128
+ const box = convertS2BoundingVolumetoOBB(s2VolumeInfo);
129
+ const s2VolumeBox = { box, s2VolumeInfo };
130
+ tile.boundingVolume = s2VolumeBox;
112
131
  }
113
- } = implicitTilingExtension;
114
- const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
115
- const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
116
- const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);
117
- const tileContentUri = (_tile$content2 = tile.content) === null || _tile$content2 === void 0 ? void 0 : _tile$content2.uri;
118
- const contentUrlTemplate = tileContentUri ? resolveUri(tileContentUri, basePath) : '';
119
- const refine = tileset === null || tileset === void 0 ? void 0 : (_tileset$root = tileset.root) === null || _tileset$root === void 0 ? void 0 : _tileset$root.refine;
120
- const rootLodMetricValue = tile.geometricError;
121
- const s2VolumeInfo = (_tile$boundingVolume$ = tile.boundingVolume.extensions) === null || _tile$boundingVolume$ === void 0 ? void 0 : _tile$boundingVolume$['3DTILES_bounding_volume_S2'];
122
- if (s2VolumeInfo) {
123
- const box = convertS2BoundingVolumetoOBB(s2VolumeInfo);
124
- const s2VolumeBox = {
125
- box,
126
- s2VolumeInfo
132
+ const rootBoundingVolume = tile.boundingVolume;
133
+ const implicitOptions = {
134
+ contentUrlTemplate,
135
+ subtreesUriTemplate,
136
+ subdivisionScheme,
137
+ subtreeLevels,
138
+ maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,
139
+ refine,
140
+ basePath,
141
+ lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
142
+ rootLodMetricValue,
143
+ rootBoundingVolume,
144
+ getTileType,
145
+ getRefine
127
146
  };
128
- tile.boundingVolume = s2VolumeBox;
129
- }
130
- const rootBoundingVolume = tile.boundingVolume;
131
- const implicitOptions = {
132
- contentUrlTemplate,
133
- subtreesUriTemplate,
134
- subdivisionScheme,
135
- subtreeLevels,
136
- maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,
137
- refine,
138
- basePath,
139
- lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
140
- rootLodMetricValue,
141
- rootBoundingVolume,
142
- getTileType,
143
- getRefine
144
- };
145
- return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);
147
+ return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);
146
148
  }
149
+ /**
150
+ * Do implicit data normalisation to create hierarchical tile structure
151
+ * @param tile
152
+ * @param rootSubtree
153
+ * @param options
154
+ * @returns
155
+ */
147
156
  export async function normalizeImplicitTileData(tile, basePath, rootSubtree, implicitOptions, loaderOptions) {
148
- if (!tile) {
149
- return null;
150
- }
151
- const {
152
- children,
153
- contentUrl
154
- } = await parseImplicitTiles({
155
- subtree: rootSubtree,
156
- implicitOptions,
157
- loaderOptions
158
- });
159
- let tileContentUrl;
160
- let tileContent = null;
161
- if (contentUrl) {
162
- tileContentUrl = contentUrl;
163
- tileContent = {
164
- uri: contentUrl.replace(`${basePath}/`, '')
157
+ if (!tile) {
158
+ return null;
159
+ }
160
+ const { children, contentUrl } = await parseImplicitTiles({
161
+ subtree: rootSubtree,
162
+ implicitOptions,
163
+ loaderOptions
164
+ });
165
+ let tileContentUrl;
166
+ let tileContent = null;
167
+ if (contentUrl) {
168
+ tileContentUrl = contentUrl;
169
+ tileContent = { uri: contentUrl.replace(`${basePath}/`, '') };
170
+ }
171
+ const tilePostprocessed = {
172
+ ...tile,
173
+ id: tileContentUrl,
174
+ contentUrl: tileContentUrl,
175
+ lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
176
+ lodMetricValue: tile.geometricError,
177
+ transformMatrix: tile.transform,
178
+ type: getTileType(tile, tileContentUrl),
179
+ refine: getRefine(tile.refine),
180
+ content: tileContent || tile.content,
181
+ children
165
182
  };
166
- }
167
- const tilePostprocessed = {
168
- ...tile,
169
- id: tileContentUrl,
170
- contentUrl: tileContentUrl,
171
- lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
172
- lodMetricValue: tile.geometricError,
173
- transformMatrix: tile.transform,
174
- type: getTileType(tile, tileContentUrl),
175
- refine: getRefine(tile.refine),
176
- content: tileContent || tile.content,
177
- children
178
- };
179
- return tilePostprocessed;
183
+ return tilePostprocessed;
180
184
  }
185
+ /**
186
+ * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.
187
+ * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
188
+ * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling
189
+ * @param tile
190
+ * @returns
191
+ */
181
192
  function getImplicitTilingExtensionData(tile) {
182
- var _tile$extensions;
183
- 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);
193
+ return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;
184
194
  }
185
- //# sourceMappingURL=parse-3d-tile-header.js.map
@@ -1,5 +1,5 @@
1
- import { Tiles3DLoaderOptions } from '../../tiles-3d-loader';
1
+ import { Tiles3DLoaderOptions } from "../../tiles-3d-loader.js";
2
2
  import { LoaderContext } from '@loaders.gl/loader-utils';
3
- import { Tiles3DTileContent } from '../../types';
3
+ import { Tiles3DTileContent } from "../../types.js";
4
4
  export declare function parseInstancedModel3DTile(tile: Tiles3DTileContent, arrayBuffer: ArrayBuffer, byteOffset: number, options?: Tiles3DLoaderOptions, context?: LoaderContext): Promise<number>;
5
5
  //# sourceMappingURL=parse-3d-tile-instanced-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-instanced-model.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-instanced-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAE/C,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAIjB"}
1
+ {"version":3,"file":"parse-3d-tile-instanced-model.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-instanced-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,oBAAoB,EAAC,iCAA8B;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,uBAAoB;AAE/C,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAIjB"}