@loaders.gl/tiles 4.4.5 → 5.0.0-alpha.2
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/LICENSE +14 -3
- package/README.md +110 -1
- package/dist/dist.dev.js +6588 -2057
- package/dist/dist.min.js +1 -1
- package/dist/image-set.d.ts +94 -0
- package/dist/image-set.d.ts.map +1 -0
- package/dist/image-set.js +243 -0
- package/dist/image-set.js.map +1 -0
- package/dist/index.cjs +6872 -2160
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +33 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -8
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tile.js +70 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.js +510 -0
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
- package/dist/point-cloud/types.d.ts +64 -0
- package/dist/point-cloud/types.d.ts.map +1 -0
- package/dist/point-cloud/types.js +5 -0
- package/dist/point-cloud/types.js.map +1 -0
- package/dist/raster-set.d.ts +113 -0
- package/dist/raster-set.d.ts.map +1 -0
- package/dist/raster-set.js +274 -0
- package/dist/raster-set.js.map +1 -0
- package/dist/tileset-2d/adapter.d.ts +38 -0
- package/dist/tileset-2d/adapter.d.ts.map +1 -0
- package/dist/tileset-2d/adapter.js +5 -0
- package/dist/tileset-2d/adapter.js.map +1 -0
- package/dist/tileset-2d/index.d.ts +7 -0
- package/dist/tileset-2d/index.d.ts.map +1 -0
- package/dist/tileset-2d/index.js +6 -0
- package/dist/tileset-2d/index.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/dist/tileset-2d/tile-2d-header.js +181 -0
- package/dist/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/tileset-2d/tileset-2d.d.ts +201 -0
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d/tileset-2d.js +532 -0
- package/dist/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/tileset-2d/types.d.ts +44 -0
- package/dist/tileset-2d/types.d.ts.map +1 -0
- package/dist/tileset-2d/types.js +5 -0
- package/dist/tileset-2d/types.js.map +1 -0
- package/dist/tileset-2d.d.ts +2 -0
- package/dist/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d.js +5 -0
- package/dist/tileset-2d.js.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +133 -29
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tile-3d.js +282 -77
- package/dist/tileset-3d/common/tile-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts +317 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.js +807 -0
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
- package/dist/tileset-3d/common/tileset-source.d.ts +204 -0
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-source.js +17 -0
- package/dist/tileset-3d/common/tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +15 -2
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +30 -3
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +111 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +340 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +189 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +510 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +43 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +119 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +1 -0
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts +86 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/frame-state.js +84 -9
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
- package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/zoom.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -1
- package/package.json +7 -6
- package/src/image-set.ts +328 -0
- package/src/index.ts +99 -9
- package/src/point-cloud/point-cloud-tile.ts +80 -0
- package/src/point-cloud/point-cloud-tileset.ts +713 -0
- package/src/point-cloud/types.ts +82 -0
- package/src/raster-set.ts +412 -0
- package/src/tileset-2d/adapter.ts +47 -0
- package/src/tileset-2d/index.ts +33 -0
- package/src/tileset-2d/tile-2d-header.ts +224 -0
- package/src/tileset-2d/tileset-2d.ts +716 -0
- package/src/tileset-2d/types.ts +39 -0
- package/src/tileset-2d.ts +5 -0
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
- package/src/{tileset → tileset-3d/common}/tile-3d.ts +348 -93
- package/src/tileset-3d/common/tileset-3d.ts +1087 -0
- package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
- package/src/tileset-3d/common/tileset-source.ts +255 -0
- package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +32 -4
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +534 -0
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +632 -0
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +140 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +19 -24
- package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
- package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +2 -0
- package/src/tileset-3d/helpers/frame-state.ts +311 -0
- package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
- package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
- package/src/types.ts +13 -0
- package/src/utils/doubly-linked-list.ts +2 -0
- package/src/utils/managed-array.ts +2 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.d.ts +0 -28
- package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
- package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.d.ts.map +0 -1
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.d.ts +0 -284
- package/dist/tileset/tileset-3d.d.ts.map +0 -1
- package/dist/tileset/tileset-3d.js +0 -814
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.d.ts +0 -19
- package/dist/tileset/tileset-cache.d.ts.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/tileset-traverser.js.map +0 -1
- package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
- package/src/tileset/helpers/frame-state.ts +0 -183
- package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
- package/src/tileset/tileset-3d.ts +0 -1037
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
- /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) 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 { TILE3D_OPTIMIZATION_HINT, TILE_REFINEMENT } from "../../constants.js";
|
|
7
|
+
import { TilesetTraverser } from "../common/tileset-traverser.js";
|
|
8
|
+
export class Tileset3DTraverser extends TilesetTraverser {
|
|
9
|
+
/** Pending implicit subtree requests keyed by viewport and tile identity. */
|
|
10
|
+
pendingImplicitSubtrees = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Reports whether every implicit subtree request started by this viewport traversal has settled.
|
|
13
|
+
*
|
|
14
|
+
* @param frameState - Traversal frame whose completion callback is being considered.
|
|
15
|
+
* @returns `true` when no matching subtree metadata request remains pending.
|
|
16
|
+
*/
|
|
17
|
+
traversalFinished(frameState) {
|
|
18
|
+
const viewportPrefix = `${frameState.viewport.id}:`;
|
|
19
|
+
for (const [requestKey, frameNumber] of this.pendingImplicitSubtrees) {
|
|
20
|
+
if (requestKey.startsWith(viewportPrefix) && frameNumber === frameState.frameNumber) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
compareDistanceToCamera(a, b) {
|
|
27
|
+
// Sort by farthest child first since this is going on a stack
|
|
28
|
+
return b._distanceToCamera === 0 && a._distanceToCamera === 0
|
|
29
|
+
? b._centerZDepth - a._centerZDepth
|
|
30
|
+
: b._distanceToCamera - a._distanceToCamera;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Starts an implicit subtree request only after culling, request-volume, and SSE eligibility.
|
|
34
|
+
*
|
|
35
|
+
* The current parent remains the traversal boundary while metadata is loading, which preserves
|
|
36
|
+
* REPLACE coverage and ADD accumulation. Request scheduling reads the tile's existing
|
|
37
|
+
* progressive-resolution and foveated metrics, so subtree metadata follows the same priority
|
|
38
|
+
* policy as render content. A completion notification lets the owning tileset publish the newly
|
|
39
|
+
* materialized traversal result on the next update.
|
|
40
|
+
*
|
|
41
|
+
* @param tile - Tile whose existing or lazy children should be updated.
|
|
42
|
+
* @param frameState - Current culling and LOD state.
|
|
43
|
+
*/
|
|
44
|
+
updateChildTiles(tile, frameState) {
|
|
45
|
+
if (tile.hasUnloadedChildren &&
|
|
46
|
+
tile.isVisibleAndInRequestVolume &&
|
|
47
|
+
this.shouldRefine(tile, frameState)) {
|
|
48
|
+
const requestKey = `${frameState.viewport.id}:${tile.id}`;
|
|
49
|
+
if (!this.pendingImplicitSubtrees.has(requestKey)) {
|
|
50
|
+
this.pendingImplicitSubtrees.set(requestKey, frameState.frameNumber);
|
|
51
|
+
void tile.tileset._loadTileChildren(tile, frameState).finally(() => {
|
|
52
|
+
this.handleImplicitSubtreeLoad(tile, frameState, requestKey);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
super.updateChildTiles(tile, frameState);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resumes the same traversal frame after one lazy subtree request settles.
|
|
60
|
+
*
|
|
61
|
+
* Successful materialization traverses the new headers immediately. Failed or scheduler-cancelled
|
|
62
|
+
* requests finish the current traversal without retrying in a tight loop; a later application
|
|
63
|
+
* update may retry them.
|
|
64
|
+
*
|
|
65
|
+
* @param tile - Subtree-root tile whose request settled.
|
|
66
|
+
* @param frameState - Frame that started the request.
|
|
67
|
+
* @param requestKey - Viewport-scoped pending-request identity.
|
|
68
|
+
*/
|
|
69
|
+
handleImplicitSubtreeLoad(tile, frameState, requestKey) {
|
|
70
|
+
this.pendingImplicitSubtrees.delete(requestKey);
|
|
71
|
+
if (this._frameNumber !== frameState.frameNumber) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (tile.childrenState === 'ready') {
|
|
75
|
+
this.executeTraversal(tile, frameState);
|
|
76
|
+
}
|
|
77
|
+
else if (this.traversalFinished(frameState)) {
|
|
78
|
+
this.options.onTraversalEnd(frameState);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
updateTileVisibility(tile, frameState) {
|
|
82
|
+
super.updateTileVisibility(tile, frameState);
|
|
83
|
+
// Optimization - if none of the tile's children are visible then this tile isn't visible
|
|
84
|
+
if (!tile.isVisibleAndInRequestVolume) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const hasChildren = tile.children.length > 0;
|
|
88
|
+
if (tile.hasTilesetContent && hasChildren) {
|
|
89
|
+
// Use the root tile's visibility instead of this tile's visibility.
|
|
90
|
+
// The root tile may be culled by the children bounds optimization in which
|
|
91
|
+
// case this tile should also be culled.
|
|
92
|
+
const firstChild = tile.children[0];
|
|
93
|
+
this.updateTileVisibility(firstChild, frameState);
|
|
94
|
+
tile._visible = firstChild._visible;
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (this.meetsScreenSpaceErrorEarly(tile, frameState)) {
|
|
98
|
+
tile._visible = false;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const replace = tile.refine === TILE_REFINEMENT.REPLACE;
|
|
102
|
+
const useOptimization = tile._optimChildrenWithinParent === TILE3D_OPTIMIZATION_HINT.USE_OPTIMIZATION;
|
|
103
|
+
if (replace && useOptimization && hasChildren) {
|
|
104
|
+
if (!this.anyChildrenVisible(tile, frameState)) {
|
|
105
|
+
tile._visible = false;
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
meetsScreenSpaceErrorEarly(tile, frameState) {
|
|
111
|
+
const { parent } = tile;
|
|
112
|
+
if (!parent || parent.hasTilesetContent || parent.refine !== TILE_REFINEMENT.ADD) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
// Use parent's geometric error with child's box to see if the tile already meet the SSE
|
|
116
|
+
return !this.shouldRefine(tile, frameState, true);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=tileset-3d-traverser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tileset-3d-traverser.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-pending-tiles-register.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,cAAc,CAA+C;IAErE;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAOhD;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IASlD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAI/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-pending-tiles-register.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAC1B,cAAc,GAAqC,IAAI,GAAG,EAAE,CAAC;IAErE;;;;OAIG;IACH,QAAQ,CAAC,UAAkB,EAAE,WAAmB;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,UAAkB,EAAE,WAAmB;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAkB,EAAE,WAAmB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,KAAK,KAAK,CAAC,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { CoreAPI, LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
|
|
2
|
+
import type { Tile3D } from "../common/tile-3d.js";
|
|
3
|
+
import type { Tileset3D } from "../common/tileset-3d.js";
|
|
4
|
+
import type { FrameState } from "../helpers/frame-state.js";
|
|
5
|
+
import type { TileContentLoadResult, TilesetContentFormats, TilesetJSON, Tileset3DSource, TilesetSourceInput, TilesetSourceMetadata, TilesetSourceViewState } from "../common/tileset-source.js";
|
|
6
|
+
import { TILESET_TYPE } from "../../constants.js";
|
|
7
|
+
import type { TilesetTraverser, TilesetTraverserProps } from "../common/tileset-traverser.js";
|
|
8
|
+
/**
|
|
9
|
+
* {@link Tileset3DSource} implementation for I3S datasets.
|
|
10
|
+
*/
|
|
11
|
+
export declare class I3SSource implements Tileset3DSource {
|
|
12
|
+
/** I3S format discriminator. */
|
|
13
|
+
readonly type = TILESET_TYPE.I3S;
|
|
14
|
+
/** Loader used for tile metadata and content requests. */
|
|
15
|
+
readonly loader: LoaderWithParser;
|
|
16
|
+
/** Root I3S layer URL. */
|
|
17
|
+
readonly url: string;
|
|
18
|
+
/** Base path used for relative tile resource resolution. */
|
|
19
|
+
readonly basePath: string;
|
|
20
|
+
/** Parsed I3S layer metadata. */
|
|
21
|
+
tileset: TilesetJSON | null;
|
|
22
|
+
/** Loader options forwarded to tile requests. */
|
|
23
|
+
readonly loadOptions: LoaderOptions;
|
|
24
|
+
/** Core API used for metadata and tile-content loads when injected by the caller. */
|
|
25
|
+
coreApi?: CoreAPI;
|
|
26
|
+
/** Aggregate content-format flags discovered during streaming. */
|
|
27
|
+
readonly contentFormats: TilesetContentFormats;
|
|
28
|
+
asset?: Record<string, any>;
|
|
29
|
+
properties?: any;
|
|
30
|
+
extras?: any;
|
|
31
|
+
credits?: any;
|
|
32
|
+
metadata?: TilesetSourceMetadata;
|
|
33
|
+
private readonly queryParams;
|
|
34
|
+
private readonly resolver?;
|
|
35
|
+
private rootTileset;
|
|
36
|
+
/**
|
|
37
|
+
* Creates an I3S source.
|
|
38
|
+
* @param input Root metadata request, or preloaded root metadata for tests and internal callers.
|
|
39
|
+
* @param loadOptions Loader options forwarded to tile requests.
|
|
40
|
+
*/
|
|
41
|
+
constructor(input: TilesetSourceInput, loadOptions?: LoaderOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Fetches and normalizes root I3S metadata for runtime consumption.
|
|
44
|
+
*/
|
|
45
|
+
initialize(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Returns normalized source metadata after initialization.
|
|
48
|
+
*/
|
|
49
|
+
getMetadata(): TilesetSourceMetadata;
|
|
50
|
+
/**
|
|
51
|
+
* Returns the initialized I3S root metadata.
|
|
52
|
+
*/
|
|
53
|
+
getRootTileset(): Promise<TilesetJSON>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates the runtime root tile for an I3S subtree.
|
|
56
|
+
*/
|
|
57
|
+
initializeTileHeaders(tileset: Tileset3D, tilesetJson: TilesetJSON, parentTile?: Tile3D | null): Tile3D;
|
|
58
|
+
/**
|
|
59
|
+
* Creates the standard I3S traverser.
|
|
60
|
+
*/
|
|
61
|
+
createTraverser(options: TilesetTraverserProps): TilesetTraverser;
|
|
62
|
+
/**
|
|
63
|
+
* Loads renderable content for an I3S tile.
|
|
64
|
+
*/
|
|
65
|
+
loadTileContent(tile: Tile3D): Promise<TileContentLoadResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Loads child tile metadata on demand from node pages or `/nodes/{id}` resources.
|
|
68
|
+
*/
|
|
69
|
+
loadChildTileHeader(_parentTile: Tile3D, childId: string, _frameState: FrameState): Promise<any>;
|
|
70
|
+
/**
|
|
71
|
+
* Resolves an I3S request URL with source-managed query parameters.
|
|
72
|
+
*/
|
|
73
|
+
getTileUrl(tilePath: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Derives the default view state from full extent or store extent metadata.
|
|
76
|
+
*/
|
|
77
|
+
getViewState(_rootTile: Tile3D | null): TilesetSourceViewState;
|
|
78
|
+
/**
|
|
79
|
+
* Updates content-format flags after tile content loads.
|
|
80
|
+
*/
|
|
81
|
+
onTileLoaded(_tileset: Tileset3D, tile: Tile3D): void;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the total number of known tiles when node pages metadata is available.
|
|
84
|
+
*/
|
|
85
|
+
getTilesTotalCount(): number | null;
|
|
86
|
+
/**
|
|
87
|
+
* Loads data through injected core APIs so this module stays independent from `@loaders.gl/core`.
|
|
88
|
+
*/
|
|
89
|
+
private loadWithCoreApi;
|
|
90
|
+
/**
|
|
91
|
+
* Loads data through an injected resolver when present, otherwise through the injected core API.
|
|
92
|
+
*/
|
|
93
|
+
private loadRootData;
|
|
94
|
+
/**
|
|
95
|
+
* Loads tile metadata or content through an injected resolver when present, otherwise through the injected core API.
|
|
96
|
+
*/
|
|
97
|
+
private loadResourceData;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=i3s-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-source.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-source.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAG9C,OAAO,KAAK,EAAC,SAAS,EAAC,gCAA6B;AACpD,OAAO,KAAK,EAAC,UAAU,EAAC,kCAA+B;AACvD,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EAGrB,sBAAsB,EACvB,oCAAiC;AAElC,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,KAAK,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,uCAAoC;AASzF;;GAEG;AACH,qBAAa,SAAU,YAAW,eAAe;IAC/C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,oBAAoB;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IACnC,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAA8B;IAE5E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAwB;IAClD,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;gBACS,KAAK,EAAE,kBAAkB,EAAE,WAAW,GAAE,aAAkB;IAYtE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC;;OAEG;IACH,WAAW,IAAI,qBAAqB;IAOpC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAI5C;;OAEG;IACH,qBAAqB,CACnB,OAAO,EAAE,SAAS,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACzB,MAAM;IAST;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,gBAAgB;IAIjE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgCnE;;OAEG;IACG,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,GAAG,CAAC;IAsBf;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAapC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB;IAuC9D;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBrD;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAKnC;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,YAAY;IAQ1B;;OAEG;YACW,gBAAgB;CAO/B"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { path } from '@loaders.gl/loader-utils';
|
|
5
|
+
import { Ellipsoid } from '@math.gl/geospatial';
|
|
6
|
+
import { Vector3 } from '@math.gl/core';
|
|
7
|
+
import { Tile3D as Tile3DNode } from "../common/tile-3d.js";
|
|
8
|
+
import { I3STilesetTraverser } from "./i3s-tileset-traverser.js";
|
|
9
|
+
import { getZoomFromExtent, getZoomFromFullExtent } from "../helpers/zoom.js";
|
|
10
|
+
import { TILESET_TYPE } from "../../constants.js";
|
|
11
|
+
const EMPTY_CONTENT_FORMATS = {
|
|
12
|
+
draco: false,
|
|
13
|
+
meshopt: false,
|
|
14
|
+
dds: false,
|
|
15
|
+
ktx2: false
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* {@link Tileset3DSource} implementation for I3S datasets.
|
|
19
|
+
*/
|
|
20
|
+
export class I3SSource {
|
|
21
|
+
/** I3S format discriminator. */
|
|
22
|
+
type = TILESET_TYPE.I3S;
|
|
23
|
+
/** Loader used for tile metadata and content requests. */
|
|
24
|
+
loader;
|
|
25
|
+
/** Root I3S layer URL. */
|
|
26
|
+
url;
|
|
27
|
+
/** Base path used for relative tile resource resolution. */
|
|
28
|
+
basePath;
|
|
29
|
+
/** Parsed I3S layer metadata. */
|
|
30
|
+
tileset = null;
|
|
31
|
+
/** Loader options forwarded to tile requests. */
|
|
32
|
+
loadOptions;
|
|
33
|
+
/** Core API used for metadata and tile-content loads when injected by the caller. */
|
|
34
|
+
coreApi;
|
|
35
|
+
/** Aggregate content-format flags discovered during streaming. */
|
|
36
|
+
contentFormats = { ...EMPTY_CONTENT_FORMATS };
|
|
37
|
+
asset;
|
|
38
|
+
properties;
|
|
39
|
+
extras;
|
|
40
|
+
credits;
|
|
41
|
+
metadata;
|
|
42
|
+
queryParams = {};
|
|
43
|
+
resolver;
|
|
44
|
+
rootTileset;
|
|
45
|
+
/**
|
|
46
|
+
* Creates an I3S source.
|
|
47
|
+
* @param input Root metadata request, or preloaded root metadata for tests and internal callers.
|
|
48
|
+
* @param loadOptions Loader options forwarded to tile requests.
|
|
49
|
+
*/
|
|
50
|
+
constructor(input, loadOptions = {}) {
|
|
51
|
+
const request = normalizeI3SRequest(input);
|
|
52
|
+
this.rootTileset = isTilesetRequest(input) ? null : input;
|
|
53
|
+
this.tileset = this.rootTileset;
|
|
54
|
+
this.loader = request.loader;
|
|
55
|
+
this.url = request.url;
|
|
56
|
+
this.basePath = request.basePath || path.dirname(request.url);
|
|
57
|
+
this.resolver = request.resolver;
|
|
58
|
+
this.coreApi = request.coreApi;
|
|
59
|
+
this.loadOptions = loadOptions;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Fetches and normalizes root I3S metadata for runtime consumption.
|
|
63
|
+
*/
|
|
64
|
+
async initialize() {
|
|
65
|
+
if (!this.rootTileset) {
|
|
66
|
+
this.rootTileset = await this.loadRootData(this.url, this.loadOptions);
|
|
67
|
+
}
|
|
68
|
+
this.tileset = this.rootTileset;
|
|
69
|
+
if (this.rootTileset.root && typeof this.rootTileset.root.then === 'function') {
|
|
70
|
+
this.rootTileset.root = await this.rootTileset.root;
|
|
71
|
+
}
|
|
72
|
+
const i3sOptions = this.loadOptions.i3s;
|
|
73
|
+
if (i3sOptions && typeof i3sOptions === 'object' && 'token' in i3sOptions) {
|
|
74
|
+
const token = i3sOptions.token;
|
|
75
|
+
if (typeof token === 'string') {
|
|
76
|
+
this.queryParams.token = token;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.metadata = {
|
|
80
|
+
type: this.type,
|
|
81
|
+
loader: this.loader,
|
|
82
|
+
url: this.url,
|
|
83
|
+
basePath: this.basePath,
|
|
84
|
+
tileset: this.rootTileset,
|
|
85
|
+
lodMetricType: this.rootTileset.lodMetricType,
|
|
86
|
+
lodMetricValue: this.rootTileset.lodMetricValue,
|
|
87
|
+
refine: this.rootTileset.root?.refine
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Returns normalized source metadata after initialization.
|
|
92
|
+
*/
|
|
93
|
+
getMetadata() {
|
|
94
|
+
if (!this.metadata) {
|
|
95
|
+
throw new Error('I3SSource has not been initialized');
|
|
96
|
+
}
|
|
97
|
+
return this.metadata;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns the initialized I3S root metadata.
|
|
101
|
+
*/
|
|
102
|
+
async getRootTileset() {
|
|
103
|
+
return this.getMetadata().tileset;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Creates the runtime root tile for an I3S subtree.
|
|
107
|
+
*/
|
|
108
|
+
initializeTileHeaders(tileset, tilesetJson, parentTile) {
|
|
109
|
+
const rootTile = new Tile3DNode(tileset, tilesetJson.root, parentTile || undefined);
|
|
110
|
+
if (parentTile) {
|
|
111
|
+
parentTile.children.push(rootTile);
|
|
112
|
+
rootTile.depth = parentTile.depth + 1;
|
|
113
|
+
}
|
|
114
|
+
return rootTile;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Creates the standard I3S traverser.
|
|
118
|
+
*/
|
|
119
|
+
createTraverser(options) {
|
|
120
|
+
return new I3STilesetTraverser(options);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Loads renderable content for an I3S tile.
|
|
124
|
+
*/
|
|
125
|
+
async loadTileContent(tile) {
|
|
126
|
+
const contentUrl = this.getTileUrl(tile.contentUrl);
|
|
127
|
+
const loaderId = this.loader.id;
|
|
128
|
+
const loaderOptions = this.loadOptions[loaderId] || {};
|
|
129
|
+
const metadata = this.getMetadata();
|
|
130
|
+
const options = {
|
|
131
|
+
...this.loadOptions,
|
|
132
|
+
[loaderId]: {
|
|
133
|
+
...loaderOptions,
|
|
134
|
+
...tile.tileset.options.i3s,
|
|
135
|
+
_tileOptions: {
|
|
136
|
+
attributeUrls: tile.header.attributeUrls,
|
|
137
|
+
textureUrl: tile.header.textureUrl,
|
|
138
|
+
textureFormat: tile.header.textureFormat,
|
|
139
|
+
textureLoaderOptions: tile.header.textureLoaderOptions,
|
|
140
|
+
materialDefinition: tile.header.materialDefinition,
|
|
141
|
+
isDracoGeometry: tile.header.isDracoGeometry,
|
|
142
|
+
mbs: tile.header.mbs
|
|
143
|
+
},
|
|
144
|
+
_tilesetOptions: {
|
|
145
|
+
store: metadata.tileset.store,
|
|
146
|
+
attributeStorageInfo: metadata.tileset.attributeStorageInfo,
|
|
147
|
+
fields: metadata.tileset.fields
|
|
148
|
+
},
|
|
149
|
+
isTileHeader: false
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
tile.content = await this.loadResourceData(contentUrl, options);
|
|
153
|
+
return { loaded: true };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Loads child tile metadata on demand from node pages or `/nodes/{id}` resources.
|
|
157
|
+
*/
|
|
158
|
+
async loadChildTileHeader(_parentTile, childId, _frameState) {
|
|
159
|
+
const metadata = this.getMetadata();
|
|
160
|
+
if (metadata.tileset.nodePages) {
|
|
161
|
+
return await metadata.tileset.nodePagesTile.formTileFromNodePages(childId);
|
|
162
|
+
}
|
|
163
|
+
const nodeUrl = this.getTileUrl(`${this.url}/nodes/${childId}`);
|
|
164
|
+
const i3sLoaderOptions = this.loadOptions.i3s && typeof this.loadOptions.i3s === 'object'
|
|
165
|
+
? this.loadOptions.i3s
|
|
166
|
+
: {};
|
|
167
|
+
const options = {
|
|
168
|
+
...this.loadOptions,
|
|
169
|
+
i3s: {
|
|
170
|
+
...i3sLoaderOptions,
|
|
171
|
+
isTileHeader: true
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
return await this.loadResourceData(nodeUrl, options);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Resolves an I3S request URL with source-managed query parameters.
|
|
178
|
+
*/
|
|
179
|
+
getTileUrl(tilePath) {
|
|
180
|
+
if (tilePath.startsWith('data:')) {
|
|
181
|
+
return tilePath;
|
|
182
|
+
}
|
|
183
|
+
if (!Object.keys(this.queryParams).length) {
|
|
184
|
+
return tilePath;
|
|
185
|
+
}
|
|
186
|
+
const queryParams = new URLSearchParams(this.queryParams).toString();
|
|
187
|
+
return `${tilePath}${tilePath.includes('?') ? '&' : '?'}${queryParams}`;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Derives the default view state from full extent or store extent metadata.
|
|
191
|
+
*/
|
|
192
|
+
getViewState(_rootTile) {
|
|
193
|
+
const metadata = this.getMetadata();
|
|
194
|
+
const fullExtent = metadata.tileset.fullExtent;
|
|
195
|
+
if (fullExtent) {
|
|
196
|
+
const { xmin, xmax, ymin, ymax, zmin, zmax } = fullExtent;
|
|
197
|
+
const cartographicCenter = new Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, zmin + (zmax - zmin) / 2);
|
|
198
|
+
const cartesianCenter = new Vector3();
|
|
199
|
+
Ellipsoid.WGS84.cartographicToCartesian(cartographicCenter, cartesianCenter);
|
|
200
|
+
return {
|
|
201
|
+
cartographicCenter,
|
|
202
|
+
cartesianCenter,
|
|
203
|
+
zoom: getZoomFromFullExtent(fullExtent, cartographicCenter, cartesianCenter)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const extent = metadata.tileset.store?.extent;
|
|
207
|
+
if (extent) {
|
|
208
|
+
const [xmin, ymin, xmax, ymax] = extent;
|
|
209
|
+
const cartographicCenter = new Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, 0);
|
|
210
|
+
const cartesianCenter = new Vector3();
|
|
211
|
+
Ellipsoid.WGS84.cartographicToCartesian(cartographicCenter, cartesianCenter);
|
|
212
|
+
return {
|
|
213
|
+
cartographicCenter,
|
|
214
|
+
cartesianCenter,
|
|
215
|
+
zoom: getZoomFromExtent(extent, cartographicCenter, cartesianCenter)
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
console.warn('Extent is not defined in the tileset header');
|
|
219
|
+
return {
|
|
220
|
+
cartographicCenter: new Vector3(),
|
|
221
|
+
zoom: 1
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Updates content-format flags after tile content loads.
|
|
226
|
+
*/
|
|
227
|
+
onTileLoaded(_tileset, tile) {
|
|
228
|
+
if (tile.header.isDracoGeometry) {
|
|
229
|
+
this.contentFormats.draco = true;
|
|
230
|
+
}
|
|
231
|
+
switch (tile.header.textureFormat) {
|
|
232
|
+
case 'dds':
|
|
233
|
+
this.contentFormats.dds = true;
|
|
234
|
+
break;
|
|
235
|
+
case 'ktx2':
|
|
236
|
+
this.contentFormats.ktx2 = true;
|
|
237
|
+
break;
|
|
238
|
+
default:
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Returns the total number of known tiles when node pages metadata is available.
|
|
243
|
+
*/
|
|
244
|
+
getTilesTotalCount() {
|
|
245
|
+
const metadata = this.getMetadata();
|
|
246
|
+
return metadata.tileset?.nodePagesTile?.nodesInNodePages || null;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Loads data through injected core APIs so this module stays independent from `@loaders.gl/core`.
|
|
250
|
+
*/
|
|
251
|
+
async loadWithCoreApi(url, options) {
|
|
252
|
+
if (!this.coreApi) {
|
|
253
|
+
throw new Error('I3SSource requires an injected coreApi to load tileset data');
|
|
254
|
+
}
|
|
255
|
+
return await this.coreApi.load(url, this.loader, options);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Loads data through an injected resolver when present, otherwise through the injected core API.
|
|
259
|
+
*/
|
|
260
|
+
async loadRootData(url, options) {
|
|
261
|
+
if (this.resolver) {
|
|
262
|
+
return await this.resolver.loadRoot(url, this.loader, options);
|
|
263
|
+
}
|
|
264
|
+
return await this.loadWithCoreApi(url, options);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Loads tile metadata or content through an injected resolver when present, otherwise through the injected core API.
|
|
268
|
+
*/
|
|
269
|
+
async loadResourceData(url, options) {
|
|
270
|
+
if (this.resolver) {
|
|
271
|
+
return await this.resolver.loadResource(url, this.loader, options);
|
|
272
|
+
}
|
|
273
|
+
return await this.loadWithCoreApi(url, options);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
function isTilesetRequest(input) {
|
|
277
|
+
return Boolean(input && typeof input === 'object' && 'url' in input && 'loader' in input && !('type' in input));
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Normalizes constructor input into a URL request descriptor.
|
|
281
|
+
* @param input Constructor input for {@link I3SSource}.
|
|
282
|
+
* @returns A normalized request with a resolved base path.
|
|
283
|
+
*/
|
|
284
|
+
function normalizeI3SRequest(input) {
|
|
285
|
+
if (isTilesetRequest(input)) {
|
|
286
|
+
return {
|
|
287
|
+
...input,
|
|
288
|
+
basePath: input.basePath || path.dirname(input.url)
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
url: input.url,
|
|
293
|
+
loader: input.loader,
|
|
294
|
+
basePath: input.basePath || path.dirname(input.url),
|
|
295
|
+
resolver: input.resolver,
|
|
296
|
+
coreApi: input.coreApi
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=i3s-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-source.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-tile-manager.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAUlD,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,oBAAoB,CAAiC;;IAM7D;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,KAAA,EAAE,GAAG,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,EAAE,UAAU;IAiClD;;;;OAIG;IACH,MAAM,CAAC,GAAG,KAAA,EAAE,UAAU,EAAE,UAAU;IAmBlC;;;;OAIG;IACH,IAAI,CAAC,GAAG,KAAA;IAIR;;;;;OAKG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;CAGlE"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { I3SPendingTilesRegister } from "./i3s-pending-tiles-register.js";
|
|
2
5
|
const STATUS = {
|
|
3
6
|
REQUESTED: 'REQUESTED',
|
|
@@ -25,14 +28,14 @@ export class I3STileManager {
|
|
|
25
28
|
// Register pending request for the frameNumber
|
|
26
29
|
this.pendingTilesRegister.register(id, frameNumber);
|
|
27
30
|
request()
|
|
28
|
-
.then(
|
|
31
|
+
.then(data => {
|
|
29
32
|
this._statusMap[key].status = STATUS.COMPLETED;
|
|
30
33
|
const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
|
|
31
34
|
// Deregister pending request for the frameNumber
|
|
32
35
|
this.pendingTilesRegister.deregister(id, actualFrameNumber);
|
|
33
36
|
this._statusMap[key].callback(data, frameState);
|
|
34
37
|
})
|
|
35
|
-
.catch(
|
|
38
|
+
.catch(error => {
|
|
36
39
|
this._statusMap[key].status = STATUS.ERROR;
|
|
37
40
|
const { frameNumber: actualFrameNumber, viewport: { id } } = this._statusMap[key].frameState;
|
|
38
41
|
// Deregister pending request for the frameNumber
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-tile-manager.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-tile-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TilesetTraverser } from "../tileset-traverser.js";
|
|
1
|
+
import { TilesetTraverser } from "../common/tileset-traverser.js";
|
|
2
2
|
import { FrameState } from "../helpers/frame-state.js";
|
|
3
3
|
export declare class I3STilesetTraverser extends TilesetTraverser {
|
|
4
4
|
private _tileManager;
|
|
@@ -11,7 +11,7 @@ export declare class I3STilesetTraverser extends TilesetTraverser {
|
|
|
11
11
|
traversalFinished(frameState: FrameState): boolean;
|
|
12
12
|
shouldRefine(tile: any, frameState: FrameState): boolean;
|
|
13
13
|
updateChildTiles(tile: any, frameState: FrameState): boolean;
|
|
14
|
-
_loadTile(nodeId: any,
|
|
14
|
+
_loadTile(tile: any, nodeId: any, frameState: any): Promise<any>;
|
|
15
15
|
/**
|
|
16
16
|
* The callback to init Tile3D instance after loading the tile JSON
|
|
17
17
|
* @param {Object} header - the tile JSON from a dataset
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i3s-tileset-traverser.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,gBAAgB,EAAC,uCAAoC;AAK7D,OAAO,EAAC,UAAU,EAAC,kCAA+B;AAElD,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,OAAO,CAAC,YAAY,CAAiB;gBAEzB,OAAO,KAAA;IAKnB;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAIlD,YAAY,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU;IAKzC,gBAAgB,CAAC,IAAI,KAAA,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO;IA8BjD,SAAS,CAAC,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,UAAU,KAAA;IAQxC;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;CAqBrC"}
|