@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.
- package/dist/dist.min.js +690 -62
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +63 -38
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +69 -44
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +12 -11
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +45 -23
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +18 -14
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +6 -4
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +4 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +65 -28
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +24 -18
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +30 -2
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +6 -5
- package/dist/types.d.ts +45 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -7
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +76 -32
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +43 -35
- package/src/lib/parsers/parse-3d-tile-header.ts +37 -5
- 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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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.
|
|
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.
|
|
38
|
-
"@loaders.gl/gltf": "4.0.0-alpha.
|
|
39
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
40
|
-
"@loaders.gl/math": "4.0.0-alpha.
|
|
41
|
-
"@loaders.gl/tiles": "4.0.0-alpha.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
} =
|
|
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
|
-
|
|
126
|
-
const
|
|
127
|
-
const
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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 (
|
|
233
|
-
return getBooleanValueFromBitstream(index,
|
|
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:
|
|
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
|
|
341
|
-
* @param
|
|
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(
|
|
344
|
-
return
|
|
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,
|
|
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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
77
|
-
* @param subtree
|
|
78
|
-
* @param
|
|
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
|
|
75
|
+
async function loadExplicitBitstream(
|
|
82
76
|
subtree: Subtree,
|
|
83
|
-
|
|
77
|
+
availabilityObject: Availability,
|
|
84
78
|
internalBinaryBuffer: ArrayBuffer,
|
|
85
79
|
context: LoaderContext | undefined
|
|
86
|
-
): Promise<
|
|
87
|
-
const bufferViewIndex =
|
|
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?.
|
|
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
|
-
|
|
105
|
-
|
|
105
|
+
availabilityObject.explicitBitstream = new Uint8Array(
|
|
106
|
+
data,
|
|
107
|
+
bufferView.byteOffset,
|
|
108
|
+
bufferView.byteLength
|
|
109
|
+
);
|
|
110
|
+
return;
|
|
106
111
|
}
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|
-
|
|
250
|
+
implicitOptions,
|
|
251
|
+
loaderOptions
|
|
220
252
|
});
|
|
221
253
|
|
|
222
254
|
let tileContentUrl: string | undefined;
|