@loaders.gl/3d-tiles 4.0.0-alpha.12 → 4.0.0-alpha.14

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 (32) hide show
  1. package/dist/dist.min.js +690 -62
  2. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +63 -38
  3. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  4. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +69 -44
  5. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  6. package/dist/es5/lib/parsers/parse-3d-tile-header.js +12 -11
  7. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  8. package/dist/es5/lib/utils/version.js +1 -1
  9. package/dist/es5/types.js.map +1 -1
  10. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +45 -23
  11. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  12. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +18 -14
  13. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  14. package/dist/esm/lib/parsers/parse-3d-tile-header.js +6 -4
  15. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  16. package/dist/esm/lib/utils/version.js +1 -1
  17. package/dist/esm/types.js.map +1 -1
  18. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +4 -1
  19. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  20. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +65 -28
  21. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  22. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +24 -18
  23. package/dist/lib/parsers/parse-3d-tile-header.d.ts +30 -2
  24. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  25. package/dist/lib/parsers/parse-3d-tile-header.js +6 -5
  26. package/dist/types.d.ts +45 -3
  27. package/dist/types.d.ts.map +1 -1
  28. package/package.json +8 -7
  29. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +76 -32
  30. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +43 -35
  31. package/src/lib/parsers/parse-3d-tile-header.ts +37 -5
  32. package/src/types.ts +46 -4
@@ -111,7 +111,7 @@ exports.normalizeTileHeaders = normalizeTileHeaders;
111
111
  * @param tileset
112
112
  */
113
113
  async function normalizeImplicitTileHeaders(tile, tileset, basePath, implicitTilingExtension, options) {
114
- const { subdivisionScheme, maximumLevel, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
114
+ const { subdivisionScheme, maximumLevel, availableLevels, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
115
115
  const replacedUrlTemplate = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
116
116
  const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
117
117
  const subtree = await (0, core_1.load)(subtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader, options);
@@ -132,7 +132,7 @@ async function normalizeImplicitTileHeaders(tile, tileset, basePath, implicitTil
132
132
  subtreesUriTemplate,
133
133
  subdivisionScheme,
134
134
  subtreeLevels,
135
- maximumLevel,
135
+ maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,
136
136
  refine,
137
137
  basePath,
138
138
  lodMetricType: tiles_1.LOD_METRIC_TYPE.GEOMETRIC_ERROR,
@@ -141,7 +141,7 @@ async function normalizeImplicitTileHeaders(tile, tileset, basePath, implicitTil
141
141
  getTileType,
142
142
  getRefine
143
143
  };
144
- return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions);
144
+ return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);
145
145
  }
146
146
  exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
147
147
  /**
@@ -151,13 +151,14 @@ exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
151
151
  * @param options
152
152
  * @returns
153
153
  */
154
- async function normalizeImplicitTileData(tile, basePath, rootSubtree, options) {
154
+ async function normalizeImplicitTileData(tile, basePath, rootSubtree, implicitOptions, loaderOptions) {
155
155
  if (!tile) {
156
156
  return null;
157
157
  }
158
158
  const { children, contentUrl } = await (0, parse_3d_implicit_tiles_1.parseImplicitTiles)({
159
159
  subtree: rootSubtree,
160
- options
160
+ implicitOptions,
161
+ loaderOptions
161
162
  });
162
163
  let tileContentUrl;
163
164
  let tileContent = null;
package/dist/types.d.ts CHANGED
@@ -277,18 +277,55 @@ export type Tiles3DTileContent = {
277
277
  };
278
278
  /**
279
279
  * 3DTILES_implicit_tiling types
280
- * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
280
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
281
+ * JSON Schema v1.1 https://github.com/CesiumGS/3d-tiles/blob/8e5e67e078850cc8ce15bd1873fe54f11bbee02f/specification/schema/Subtree/subtree.schema.json
282
+ * JSON Schema vNext https://github.com/CesiumGS/3d-tiles/blob/8e5e67e078850cc8ce15bd1873fe54f11bbee02f/extensions/3DTILES_implicit_tiling/schema/subtree/subtree.schema.json
281
283
  */
282
284
  export type Subtree = {
285
+ /** An array of buffers. */
283
286
  buffers: Buffer[];
287
+ /** An array of buffer views. */
284
288
  bufferViews: BufferView[];
289
+ /** The availability of tiles in the subtree. The availability bitstream is a 1D boolean array where tiles are ordered by their level in the subtree and Morton index
290
+ * within that level. A tile's availability is determined by a single bit, 1 meaning a tile exists at that spatial index, and 0 meaning it does not.
291
+ * The number of elements in the array is `(N^subtreeLevels - 1)/(N - 1)` where N is 4 for subdivision scheme `QUADTREE` and 8 for `OCTREE`.
292
+ * Availability may be stored in a buffer view or as a constant value that applies to all tiles. If a non-root tile's availability is 1 its parent
293
+ * tile's availability shall also be 1. `tileAvailability.constant: 0` is disallowed, as subtrees shall have at least one tile.
294
+ */
285
295
  tileAvailability: Availability;
286
- contentAvailability: Availability;
296
+ /** It is array by spec but there are tiles that has a single object
297
+ * An array of content availability objects. If the tile has a single content this array will have one element; if the tile has multiple contents -
298
+ * as supported by 3DTILES_multiple_contents and 3D Tiles 1.1 - this array will have multiple elements.
299
+ */
300
+ contentAvailability: Availability | Availability[];
301
+ /** The availability of children subtrees. The availability bitstream is a 1D boolean array where subtrees are ordered by their Morton index in the level of the tree
302
+ * immediately below the bottom row of the subtree. A child subtree's availability is determined by a single bit, 1 meaning a subtree exists at that spatial index,
303
+ * and 0 meaning it does not. The number of elements in the array is `N^subtreeLevels` where N is 4 for subdivision scheme `QUADTREE` and 8 for `OCTREE`.
304
+ * Availability may be stored in a buffer view or as a constant value that applies to all child subtrees. If availability is 0 for all child subtrees,
305
+ * then the tileset does not subdivide further.
306
+ */
287
307
  childSubtreeAvailability: Availability;
308
+ propertyTables: unknown;
309
+ tileMetadata: unknown;
310
+ contentMetadata: unknown;
311
+ subtreeMetadata: unknown;
288
312
  };
289
313
  export type Availability = {
314
+ /** Integer indicating whether all of the elements are available (1) or all are unavailable (0). */
290
315
  constant?: 0 | 1;
316
+ /** Index of a buffer view that indicates whether each element is available. The bitstream conforms to the boolean array encoding described
317
+ * in the 3D Metadata specification. If an element is available, its bit is 1, and if it is unavailable, its bit is 0. */
318
+ bitstream?: number;
319
+ /**
320
+ * v1.1 https://github.com/CesiumGS/3d-tiles/blob/8e5e67e078850cc8ce15bd1873fe54f11bbee02f/specification/schema/Subtree/availability.schema.json
321
+ * vNext https://github.com/CesiumGS/3d-tiles/blob/8e5e67e078850cc8ce15bd1873fe54f11bbee02f/extensions/3DTILES_implicit_tiling/schema/subtree/availability.schema.json
322
+ * The schemas of vNext and 1.1 are same but there are tiles with `bufferView` property instead of `bitstream`
323
+ */
291
324
  bufferView?: number;
325
+ /**
326
+ * Postprocessing property
327
+ * contain availability bits loaded from the bufferView
328
+ */
292
329
  explicitBitstream?: ExplicitBitstream;
293
330
  };
294
331
  export type ExplicitBitstream = Uint8Array;
@@ -301,7 +338,8 @@ type Buffer = {
301
338
  uri?: string;
302
339
  byteLength: number;
303
340
  };
304
- type BufferView = {
341
+ /** Subtree buffer view */
342
+ export type BufferView = {
305
343
  buffer: number;
306
344
  byteOffset: number;
307
345
  byteLength: number;
@@ -310,6 +348,10 @@ type BufferView = {
310
348
  * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
311
349
  */
312
350
  export type ImplicitTilingExensionData = ImplicitTilingData & {
351
+ /** This property is not part of the schema
352
+ * https://github.com/CesiumGS/3d-tiles/blob/main/extensions/3DTILES_implicit_tiling/schema/tile.3DTILES_implicit_tiling.schema.json
353
+ * But it can be seen in some test datasets. It is handled as substitute of `availableLevels`
354
+ */
313
355
  maximumLevel?: number;
314
356
  };
315
357
  /** 3DTiles v1.1 types */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/3d-tiles",
3
- "version": "4.0.0-alpha.12",
3
+ "version": "4.0.0-alpha.14",
4
4
  "description": "3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -34,17 +34,18 @@
34
34
  "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
35
35
  },
36
36
  "dependencies": {
37
- "@loaders.gl/draco": "4.0.0-alpha.12",
38
- "@loaders.gl/gltf": "4.0.0-alpha.12",
39
- "@loaders.gl/loader-utils": "4.0.0-alpha.12",
40
- "@loaders.gl/math": "4.0.0-alpha.12",
41
- "@loaders.gl/tiles": "4.0.0-alpha.12",
37
+ "@loaders.gl/draco": "4.0.0-alpha.14",
38
+ "@loaders.gl/gltf": "4.0.0-alpha.14",
39
+ "@loaders.gl/loader-utils": "4.0.0-alpha.14",
40
+ "@loaders.gl/math": "4.0.0-alpha.14",
41
+ "@loaders.gl/tiles": "4.0.0-alpha.14",
42
42
  "@math.gl/core": "^3.5.1",
43
43
  "@math.gl/geospatial": "^3.5.1",
44
+ "@probe.gl/log": "^4.0.4",
44
45
  "long": "^5.2.1"
45
46
  },
46
47
  "peerDependencies": {
47
48
  "@loaders.gl/core": "^4.0.0-alpha.8"
48
49
  },
49
- "gitHead": "42dfc47a41e3e6089eec22a1e1d4f3387e0cb6e9"
50
+ "gitHead": "dd885592142ad9c26fc38e0eb0a711cf4806345a"
50
51
  }
@@ -1,11 +1,14 @@
1
1
  import type {Availability, Tile3DBoundingVolume, Subtree} from '../../../types';
2
2
  import {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';
3
3
  import {load} from '@loaders.gl/core';
4
+ import {default as log} from '@probe.gl/log';
4
5
 
5
6
  import {getS2CellIdFromToken, getS2ChildCellId, getS2TokenFromCellId} from '../../utils/s2/index';
6
7
  import type {S2VolumeInfo} from '../../utils/obb/s2-corners-to-obb';
7
8
  import {convertS2BoundingVolumetoOBB} from '../../utils/obb/s2-corners-to-obb';
8
9
  import Long from 'long';
10
+ import {Tiles3DLoaderOptions} from '../../../tiles-3d-loader';
11
+ import {ImplicitOptions} from '../parse-3d-tile-header';
9
12
 
10
13
  const QUADTREE_DEVISION_COUNT = 4;
11
14
  const OCTREE_DEVISION_COUNT = 8;
@@ -83,15 +86,16 @@ function getChildS2VolumeBox(
83
86
  // eslint-disable-next-line max-statements
84
87
  export async function parseImplicitTiles(params: {
85
88
  subtree: Subtree;
86
- options: any;
89
+ implicitOptions: ImplicitOptions;
87
90
  parentData?: {mortonIndex: number; x: number; y: number; z: number};
88
91
  childIndex?: number;
89
92
  level?: number;
90
93
  globalData?: {level: number; mortonIndex: number; x: number; y: number; z: number};
91
94
  s2VolumeBox?: S2VolumeBox;
95
+ loaderOptions: Tiles3DLoaderOptions;
92
96
  }) {
93
97
  const {
94
- options,
98
+ implicitOptions,
95
99
  parentData = {
96
100
  mortonIndex: 0,
97
101
  x: 0,
@@ -106,7 +110,8 @@ export async function parseImplicitTiles(params: {
106
110
  y: 0,
107
111
  z: 0
108
112
  },
109
- s2VolumeBox
113
+ s2VolumeBox,
114
+ loaderOptions
110
115
  } = params;
111
116
  let {subtree, level = 0} = params;
112
117
  const {
@@ -116,43 +121,56 @@ export async function parseImplicitTiles(params: {
116
121
  contentUrlTemplate,
117
122
  subtreesUriTemplate,
118
123
  basePath
119
- } = options;
120
-
124
+ } = implicitOptions;
121
125
  const tile = {children: [], lodMetricValue: 0, contentUrl: ''};
122
126
 
127
+ if (!maximumLevel) {
128
+ // eslint-disable-next-line no-console
129
+ log.once(
130
+ `Missing 'maximumLevel' or 'availableLevels' property. The subtree ${contentUrlTemplate} won't be loaded...`
131
+ );
132
+ return tile;
133
+ }
134
+
135
+ const lev = level + globalData.level;
136
+ if (lev > maximumLevel) {
137
+ return tile;
138
+ }
139
+
123
140
  const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];
141
+ const bitsPerTile = Math.log2(childrenPerTile);
124
142
 
125
- const childX = childIndex & 0b01;
126
- const childY = (childIndex >> 1) & 0b01;
127
- const childZ = (childIndex >> 2) & 0b01;
143
+ // childIndex is in range [0,4] for quadtrees and [0, 7] for octrees
144
+ const childX = childIndex & 0b01; // Get first bit for X
145
+ const childY = (childIndex >> 1) & 0b01; // Get second bit for Y
146
+ const childZ = (childIndex >> 2) & 0b01; // Get third bit for Z
128
147
 
129
148
  const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);
130
- let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);
149
+ let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex, bitsPerTile);
131
150
  let tileAvailabilityIndex = levelOffset + childTileMortonIndex;
132
151
 
133
152
  // Local tile coordinates
134
- let childTileX = concatBits(parentData.x, childX);
135
- let childTileY = concatBits(parentData.y, childY);
136
- let childTileZ = concatBits(parentData.z, childZ);
153
+ let childTileX = concatBits(parentData.x, childX, 1);
154
+ let childTileY = concatBits(parentData.y, childY, 1);
155
+ let childTileZ = concatBits(parentData.z, childZ, 1);
137
156
 
138
157
  let isChildSubtreeAvailable = false;
139
158
 
140
- if (level + 1 > subtreeLevels) {
159
+ if (level >= subtreeLevels) {
141
160
  isChildSubtreeAvailable = getAvailabilityResult(
142
161
  subtree.childSubtreeAvailability,
143
162
  childTileMortonIndex
144
163
  );
145
164
  }
146
165
 
147
- const x = concatBits(globalData.x, childTileX);
148
- const y = concatBits(globalData.y, childTileY);
149
- const z = concatBits(globalData.z, childTileZ);
150
- const lev = level + globalData.level;
166
+ const x = concatBits(globalData.x, childTileX, level * bitsPerTile);
167
+ const y = concatBits(globalData.y, childTileY, level * bitsPerTile);
168
+ const z = concatBits(globalData.z, childTileZ, level * bitsPerTile);
151
169
 
152
170
  if (isChildSubtreeAvailable) {
153
171
  const subtreePath = `${basePath}/${subtreesUriTemplate}`;
154
172
  const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);
155
- const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);
173
+ const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader, loaderOptions);
156
174
 
157
175
  subtree = childSubtree;
158
176
 
@@ -172,7 +190,7 @@ export async function parseImplicitTiles(params: {
172
190
 
173
191
  const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);
174
192
 
175
- if (!isTileAvailable || level > maximumLevel) {
193
+ if (!isTileAvailable) {
176
194
  return tile;
177
195
  }
178
196
 
@@ -198,11 +216,12 @@ export async function parseImplicitTiles(params: {
198
216
  // Recursive calling...
199
217
  const childTileParsed = await parseImplicitTiles({
200
218
  subtree,
201
- options,
219
+ implicitOptions,
220
+ loaderOptions,
202
221
  parentData: pData,
203
222
  childIndex: index,
204
223
  level: childTileLevel,
205
- globalData,
224
+ globalData: {...globalData},
206
225
  s2VolumeBox: childS2VolumeBox
207
226
  });
208
227
 
@@ -213,7 +232,7 @@ export async function parseImplicitTiles(params: {
213
232
  childTileParsed,
214
233
  globalLevel,
215
234
  childCoordinates,
216
- options,
235
+ implicitOptions,
217
236
  s2VolumeBox
218
237
  );
219
238
  // @ts-ignore
@@ -224,13 +243,37 @@ export async function parseImplicitTiles(params: {
224
243
  return tile;
225
244
  }
226
245
 
227
- function getAvailabilityResult(availabilityData: Availability, index: number): boolean {
228
- if ('constant' in availabilityData) {
229
- return Boolean(availabilityData.constant);
246
+ /**
247
+ * Check tile availability in the bitstream array
248
+ * @param availabilityData - tileAvailability / contentAvailability / childSubtreeAvailability object
249
+ * @param index - index in the bitstream array
250
+ * @returns
251
+ */
252
+ function getAvailabilityResult(
253
+ availabilityData: Availability | Availability[],
254
+ index: number
255
+ ): boolean {
256
+ let availabilityObject: Availability;
257
+ if (Array.isArray(availabilityData)) {
258
+ /** TODO: we don't support `3DTILES_multiple_contents` extension at the moment.
259
+ * https://github.com/CesiumGS/3d-tiles/blob/main/extensions/3DTILES_implicit_tiling/README.md#multiple-contents
260
+ * Take first item in the array
261
+ */
262
+ availabilityObject = availabilityData[0];
263
+ if (availabilityData.length > 1) {
264
+ // eslint-disable-next-line no-console
265
+ log.once('Not supported extension "3DTILES_multiple_contents" has been detected');
266
+ }
267
+ } else {
268
+ availabilityObject = availabilityData;
269
+ }
270
+
271
+ if ('constant' in availabilityObject) {
272
+ return Boolean(availabilityObject.constant);
230
273
  }
231
274
 
232
- if (availabilityData.explicitBitstream) {
233
- return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);
275
+ if (availabilityObject.explicitBitstream) {
276
+ return getBooleanValueFromBitstream(index, availabilityObject.explicitBitstream);
234
277
  }
235
278
 
236
279
  return false;
@@ -248,7 +291,7 @@ function formatTileData(
248
291
  tile,
249
292
  level: number,
250
293
  childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},
251
- options: any,
294
+ options: ImplicitOptions,
252
295
  s2VolumeBox?: S2VolumeBox
253
296
  ) {
254
297
  const {
@@ -337,11 +380,12 @@ function calculateBoundingVolumeForChildTile(
337
380
 
338
381
  /**
339
382
  * Do binary concatenation
340
- * @param first
341
- * @param second
383
+ * @param higher - number to put to higher part of result
384
+ * @param lower - number to put to lower part of result
385
+ * @param shift - number of bits to shift lower number
342
386
  */
343
- function concatBits(first: number, second: number): number {
344
- return parseInt(first.toString(2) + second.toString(2), 2);
387
+ function concatBits(higher: number, lower: number, shift: number): number {
388
+ return (higher << shift) + lower;
345
389
  }
346
390
 
347
391
  /**
@@ -1,4 +1,4 @@
1
- import type {Subtree, ExplicitBitstream} from '../../../types';
1
+ import type {Subtree, Availability} from '../../../types';
2
2
  import type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';
3
3
 
4
4
  const SUBTREE_FILE_MAGIC = 0x74627573;
@@ -42,53 +42,54 @@ export default async function parse3DTilesSubtree(
42
42
  internalBinaryBuffer = data.slice(24 + jsonByteLength);
43
43
  }
44
44
 
45
- if ('bufferView' in subtree.tileAvailability) {
46
- subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(
45
+ await loadExplicitBitstream(subtree, subtree.tileAvailability, internalBinaryBuffer, context);
46
+ if (Array.isArray(subtree.contentAvailability)) {
47
+ for (const contentAvailability of subtree.contentAvailability) {
48
+ await loadExplicitBitstream(subtree, contentAvailability, internalBinaryBuffer, context);
49
+ }
50
+ } else {
51
+ await loadExplicitBitstream(
47
52
  subtree,
48
- 'tileAvailability',
49
- internalBinaryBuffer,
50
- context
51
- );
52
- }
53
-
54
- if ('bufferView' in subtree.contentAvailability) {
55
- subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(
56
- subtree,
57
- 'contentAvailability',
58
- internalBinaryBuffer,
59
- context
60
- );
61
- }
62
-
63
- if ('bufferView' in subtree.childSubtreeAvailability) {
64
- subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(
65
- subtree,
66
- 'childSubtreeAvailability',
53
+ subtree.contentAvailability,
67
54
  internalBinaryBuffer,
68
55
  context
69
56
  );
70
57
  }
58
+ await loadExplicitBitstream(
59
+ subtree,
60
+ subtree.childSubtreeAvailability,
61
+ internalBinaryBuffer,
62
+ context
63
+ );
71
64
 
72
65
  return subtree;
73
66
  }
74
67
 
75
68
  /**
76
- * Get explicit bitstream for subtree availability data.
77
- * @param subtree
78
- * @param name
79
- * @param internalBinaryBuffer
69
+ * Load explicit bitstream for subtree availability data.
70
+ * @param subtree - subtree data
71
+ * @param availabilityObject - tileAvailability / contentAvailability / childSubtreeAvailability object
72
+ * @param internalBinaryBuffer - subtree binary buffer
73
+ * @param context - loaders.gl context
80
74
  */
81
- async function getExplicitBitstream(
75
+ async function loadExplicitBitstream(
82
76
  subtree: Subtree,
83
- name: string,
77
+ availabilityObject: Availability,
84
78
  internalBinaryBuffer: ArrayBuffer,
85
79
  context: LoaderContext | undefined
86
- ): Promise<ExplicitBitstream> {
87
- const bufferViewIndex = subtree[name].bufferView;
80
+ ): Promise<void> {
81
+ const bufferViewIndex = Number.isFinite(availabilityObject.bitstream)
82
+ ? availabilityObject.bitstream
83
+ : availabilityObject.bufferView;
84
+
85
+ if (typeof bufferViewIndex !== 'number') {
86
+ return;
87
+ }
88
+
88
89
  const bufferView = subtree.bufferViews[bufferViewIndex];
89
90
  const buffer = subtree.buffers[bufferView.buffer];
90
91
 
91
- if (!context?.url || !context.fetch) {
92
+ if (!context?.baseUrl) {
92
93
  throw new Error('Url is not provided');
93
94
  }
94
95
 
@@ -101,11 +102,18 @@ async function getExplicitBitstream(
101
102
  const bufferUri = `${context?.baseUrl || ''}/${buffer.uri}`;
102
103
  const response = await context.fetch(bufferUri);
103
104
  const data = await response.arrayBuffer();
104
- // Return view of bitstream.
105
- return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
105
+ availabilityObject.explicitBitstream = new Uint8Array(
106
+ data,
107
+ bufferView.byteOffset,
108
+ bufferView.byteLength
109
+ );
110
+ return;
106
111
  }
107
- // Return view of bitstream.
108
- return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);
112
+ availabilityObject.explicitBitstream = new Uint8Array(
113
+ internalBinaryBuffer,
114
+ bufferView.byteOffset,
115
+ bufferView.byteLength
116
+ );
109
117
  }
110
118
 
111
119
  /**
@@ -6,6 +6,7 @@ import {LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';
6
6
  import {
7
7
  ImplicitTilingExensionData,
8
8
  Subtree,
9
+ Tile3DBoundingVolume,
9
10
  Tiles3DTileContentJSON,
10
11
  Tiles3DTileJSON,
11
12
  Tiles3DTileJSONPostprocessed,
@@ -16,6 +17,34 @@ import {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-
16
17
  import type {S2VolumeInfo} from '../utils/obb/s2-corners-to-obb';
17
18
  import {convertS2BoundingVolumetoOBB} from '../utils/obb/s2-corners-to-obb';
18
19
 
20
+ /** Options for recursive loading implicit subtrees */
21
+ export type ImplicitOptions = {
22
+ /** Template of the full url of the content template */
23
+ contentUrlTemplate: string;
24
+ /** Template of the full url of the subtree */
25
+ subtreesUriTemplate: string;
26
+ /** Implicit subdivision scheme */
27
+ subdivisionScheme: 'QUADTREE' | 'OCTREE' | string;
28
+ /** Levels per subtree */
29
+ subtreeLevels: number;
30
+ /** Maximum implicit level through all subtrees */
31
+ maximumLevel?: number;
32
+ /** 3DTiles refine method (add/replace) */
33
+ refine?: string;
34
+ /** Tileset base path */
35
+ basePath: string;
36
+ /** 3DTiles LOD metric type */
37
+ lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR;
38
+ /** Root metric value of the root tile of the implicit subtrees */
39
+ rootLodMetricValue: number;
40
+ /** Bounding volume of the root tile of the implicit subtrees */
41
+ rootBoundingVolume: Tile3DBoundingVolume;
42
+ /** Function that detects TILE_TYPE by tile metadata and content URL */
43
+ getTileType: (tile: Tiles3DTileJSON, tileContentUrl?: string) => TILE_TYPE | string;
44
+ /** Function that converts string refine method to enum value */
45
+ getRefine: (refine?: string) => TILE_REFINEMENT | string | undefined;
46
+ };
47
+
19
48
  function getTileType(tile: Tiles3DTileJSON, tileContentUrl: string = ''): TILE_TYPE | string {
20
49
  if (!tileContentUrl) {
21
50
  return TILE_TYPE.EMPTY;
@@ -158,6 +187,7 @@ export async function normalizeImplicitTileHeaders(
158
187
  const {
159
188
  subdivisionScheme,
160
189
  maximumLevel,
190
+ availableLevels,
161
191
  subtreeLevels,
162
192
  subtrees: {uri: subtreesUriTemplate}
163
193
  } = implicitTilingExtension;
@@ -179,12 +209,12 @@ export async function normalizeImplicitTileHeaders(
179
209
 
180
210
  const rootBoundingVolume = tile.boundingVolume;
181
211
 
182
- const implicitOptions = {
212
+ const implicitOptions: ImplicitOptions = {
183
213
  contentUrlTemplate,
184
214
  subtreesUriTemplate,
185
215
  subdivisionScheme,
186
216
  subtreeLevels,
187
- maximumLevel,
217
+ maximumLevel: Number.isFinite(availableLevels) ? availableLevels - 1 : maximumLevel,
188
218
  refine,
189
219
  basePath,
190
220
  lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
@@ -194,7 +224,7 @@ export async function normalizeImplicitTileHeaders(
194
224
  getRefine
195
225
  };
196
226
 
197
- return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions);
227
+ return await normalizeImplicitTileData(tile, basePath, subtree, implicitOptions, options);
198
228
  }
199
229
 
200
230
  /**
@@ -208,7 +238,8 @@ export async function normalizeImplicitTileData(
208
238
  tile: Tiles3DTileJSON,
209
239
  basePath: string,
210
240
  rootSubtree: Subtree,
211
- options: any
241
+ implicitOptions: ImplicitOptions,
242
+ loaderOptions: Tiles3DLoaderOptions
212
243
  ): Promise<Tiles3DTileJSONPostprocessed | null> {
213
244
  if (!tile) {
214
245
  return null;
@@ -216,7 +247,8 @@ export async function normalizeImplicitTileData(
216
247
 
217
248
  const {children, contentUrl} = await parseImplicitTiles({
218
249
  subtree: rootSubtree,
219
- options
250
+ implicitOptions,
251
+ loaderOptions
220
252
  });
221
253
 
222
254
  let tileContentUrl: string | undefined;