@loaders.gl/tiles 4.4.0-alpha.2 → 4.4.0

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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/constants.js +1 -0
  3. package/dist/constants.js.map +1 -0
  4. package/dist/dist.dev.js +89 -6
  5. package/dist/dist.min.js +1 -1
  6. package/dist/index.cjs +75 -5
  7. package/dist/index.cjs.map +3 -3
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +1 -0
  11. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  12. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js +1 -0
  13. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  14. package/dist/tileset/format-i3s/i3s-tile-manager.js +1 -0
  15. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +1 -0
  16. package/dist/tileset/format-i3s/i3s-tileset-traverser.js +1 -0
  17. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +1 -0
  18. package/dist/tileset/helpers/3d-tiles-options.js +1 -0
  19. package/dist/tileset/helpers/3d-tiles-options.js.map +1 -0
  20. package/dist/tileset/helpers/bounding-volume.js +1 -0
  21. package/dist/tileset/helpers/bounding-volume.js.map +1 -0
  22. package/dist/tileset/helpers/frame-state.js +1 -0
  23. package/dist/tileset/helpers/frame-state.js.map +1 -0
  24. package/dist/tileset/helpers/i3s-lod.js +1 -0
  25. package/dist/tileset/helpers/i3s-lod.js.map +1 -0
  26. package/dist/tileset/helpers/tiles-3d-lod.js +1 -0
  27. package/dist/tileset/helpers/tiles-3d-lod.js.map +1 -0
  28. package/dist/tileset/helpers/transform-utils.d.ts +2 -1
  29. package/dist/tileset/helpers/transform-utils.d.ts.map +1 -1
  30. package/dist/tileset/helpers/transform-utils.js +35 -0
  31. package/dist/tileset/helpers/transform-utils.js.map +1 -0
  32. package/dist/tileset/helpers/zoom.js +1 -0
  33. package/dist/tileset/helpers/zoom.js.map +1 -0
  34. package/dist/tileset/tile-3d.d.ts +7 -0
  35. package/dist/tileset/tile-3d.d.ts.map +1 -1
  36. package/dist/tileset/tile-3d.js +12 -3
  37. package/dist/tileset/tile-3d.js.map +1 -0
  38. package/dist/tileset/tileset-3d.d.ts +5 -0
  39. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  40. package/dist/tileset/tileset-3d.js +50 -5
  41. package/dist/tileset/tileset-3d.js.map +1 -0
  42. package/dist/tileset/tileset-cache.js +1 -0
  43. package/dist/tileset/tileset-cache.js.map +1 -0
  44. package/dist/tileset/tileset-traverser.js +2 -1
  45. package/dist/tileset/tileset-traverser.js.map +1 -0
  46. package/dist/types.js +1 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/utils/doubly-linked-list-node.js +1 -0
  49. package/dist/utils/doubly-linked-list-node.js.map +1 -0
  50. package/dist/utils/doubly-linked-list.js +1 -0
  51. package/dist/utils/doubly-linked-list.js.map +1 -0
  52. package/dist/utils/managed-array.js +1 -0
  53. package/dist/utils/managed-array.js.map +1 -0
  54. package/package.json +5 -5
  55. package/src/tileset/helpers/transform-utils.ts +41 -1
  56. package/src/tileset/tile-3d.ts +13 -3
  57. package/src/tileset/tileset-3d.ts +55 -5
  58. package/src/tileset/tileset-traverser.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileset-traverser.js","sourceRoot":"","sources":["../../src/tileset/tileset-traverser.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -17,3 +17,4 @@ export class DoublyLinkedListNode {
17
17
  this.next = next;
18
18
  }
19
19
  }
20
+ //# sourceMappingURL=doubly-linked-list-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubly-linked-list-node.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list-node.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,wEAAwE;AACxE,4FAA4F;AAE5F;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B,IAAI,CAAC;IACL,QAAQ,CAAC;IACT,IAAI,CAAC;IAEL,YAAY,IAAI,EAAE,QAAQ,EAAE,IAAI;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -89,3 +89,4 @@ export class DoublyLinkedList {
89
89
  ++this._length;
90
90
  }
91
91
  }
92
+ //# sourceMappingURL=doubly-linked-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"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"}
@@ -148,3 +148,4 @@ export class ManagedArray {
148
148
  return this._map.has(target);
149
149
  }
150
150
  }
151
+ //# sourceMappingURL=managed-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tiles",
3
- "version": "4.4.0-alpha.2",
3
+ "version": "4.4.0",
4
4
  "description": "Common components for different tiles loaders.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -42,13 +42,13 @@
42
42
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
43
43
  },
44
44
  "dependencies": {
45
- "@loaders.gl/loader-utils": "4.4.0-alpha.2",
46
- "@loaders.gl/math": "4.4.0-alpha.2",
45
+ "@loaders.gl/loader-utils": "4.4.0",
46
+ "@loaders.gl/math": "4.4.0",
47
47
  "@math.gl/core": "^4.1.0",
48
48
  "@math.gl/culling": "^4.1.0",
49
49
  "@math.gl/geospatial": "^4.1.0",
50
50
  "@math.gl/web-mercator": "^4.1.0",
51
- "@probe.gl/stats": "^4.0.2"
51
+ "@probe.gl/stats": "^4.1.1"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@deck.gl/core": "^9.0.33"
@@ -56,5 +56,5 @@
56
56
  "peerDependencies": {
57
57
  "@loaders.gl/core": "4.4.0-alpha.1"
58
58
  },
59
- "gitHead": "3d9fed050eabdc0812ddf2f4d5fb9914a34ee0c2"
59
+ "gitHead": "b8a23bc05946bde7089936ff3ea1651ee9a45536"
60
60
  }
@@ -6,7 +6,9 @@ import {Ellipsoid} from '@math.gl/geospatial';
6
6
  import {Matrix4, Vector3} from '@math.gl/core';
7
7
  import {assert} from '@loaders.gl/loader-utils';
8
8
 
9
- export function calculateTransformProps(tileHeader, tile) {
9
+ import {Tile3D} from '../tile-3d';
10
+
11
+ export function calculateTransformProps(tileHeader: Tile3D, tile: Tile3D['content']) {
10
12
  assert(tileHeader);
11
13
  assert(tile);
12
14
 
@@ -62,8 +64,46 @@ export function calculateTransformProps(tileHeader, tile) {
62
64
  tile.cartographicModelMatrix = toFixedFrameMatrix.multiplyRight(modelMatrix);
63
65
  tile.cartographicOrigin = cartographicOrigin;
64
66
 
67
+ // Absorb glTF root node matrix into model matrices for Float32 precision.
68
+ // The glTF root node matrix (applied as sceneModelMatrix in the shader) may contain
69
+ // ECEF-scale translations (~millions of meters). When both cartographicModelMatrix
70
+ // and sceneModelMatrix are applied in the Float32 GPU shader, catastrophic cancellation
71
+ // occurs causing visible seams between adjacent tiles. By combining them here in Float64,
72
+ // the result has small ENU-scale values that preserve precision.
73
+ const rootNode = _getRootNode(tile);
74
+ if (rootNode) {
75
+ tile.cartesianModelMatrix = new Matrix4(modelMatrix).multiplyRight(rootNode.matrix);
76
+ tile.cartographicModelMatrix.multiplyRight(rootNode.matrix);
77
+ rootNode.matrix = Matrix4.IDENTITY;
78
+ }
79
+
65
80
  // Deprecated, drop
66
81
  if (!tile.coordinateSystem) {
67
82
  tile.modelMatrix = tile.cartographicModelMatrix;
68
83
  }
69
84
  }
85
+
86
+ const TRANSLATION_LIMIT_SQUARED = 10e5 ** 2; // 100km
87
+
88
+ /**
89
+ * Returns the glTF root node if it has a matrix with earth-scale translations (> 100km).
90
+ * These large translations cause Float32 precision issues when applied in the GPU shader.
91
+ */
92
+ function _getRootNode(tile: Tile3D['content']): {matrix: number[]} | null {
93
+ const gltf = tile.gltf;
94
+ if (!gltf) {
95
+ return null;
96
+ }
97
+
98
+ const sceneIndex = typeof gltf.scene === 'number' ? gltf.scene : 0;
99
+ const scene = gltf.scenes?.[sceneIndex];
100
+ const rootNode = scene?.nodes?.[0];
101
+ if (!rootNode?.matrix) return null;
102
+
103
+ // Extract translation and compare magnitude (meters) to limit
104
+ const m = rootNode.matrix;
105
+ const translationMagnitude = m[12] * m[12] + m[13] * m[13] + m[14] * m[14];
106
+ if (translationMagnitude <= TRANSLATION_LIMIT_SQUARED) return null;
107
+
108
+ return rootNode;
109
+ }
@@ -130,6 +130,14 @@ export class Tile3D {
130
130
  _inRequestVolume: boolean = false;
131
131
  _lodJudge: any = null; // TODO i3s specific, needs to remove
132
132
 
133
+ /**
134
+ * Indicates whether the tile has been drawn by the renderer.
135
+ * Defaults to true for backwards compatibility — renderers that support
136
+ * transition hold (e.g. deck.gl 9.3+) should set this to false on tile load,
137
+ * then back to true after first draw to avoid flashes (see deck.gl #7914).
138
+ */
139
+ tileDrawn: boolean = true;
140
+
133
141
  /**
134
142
  * @constructs
135
143
  * Create a Tile3D instance
@@ -379,14 +387,15 @@ export class Tile3D {
379
387
  const contentUrl = this.tileset.getTileUrl(this.contentUrl);
380
388
  // The content can be a binary tile ot a JSON tileset
381
389
  const loader = this.tileset.loader;
390
+ const tilesetLoaderOptions =
391
+ (this.tileset.loadOptions[loader.id] as Record<string, unknown>) || {};
382
392
  const options = {
383
393
  ...this.tileset.loadOptions,
384
394
  [loader.id]: {
385
- // @ts-expect-error
386
- ...this.tileset.loadOptions[loader.id],
395
+ ...tilesetLoaderOptions,
387
396
  isTileset: this.type === 'json',
388
397
  ...this._getLoaderSpecificOptions(loader.id)
389
- }
398
+ } // TODO add typecheck - as const satisfies ...
390
399
  };
391
400
 
392
401
  this.content = await load(contentUrl, loader, options);
@@ -425,6 +434,7 @@ export class Tile3D {
425
434
  }
426
435
  this.header.content = null;
427
436
  this.contentState = TILE_CONTENT_STATE.UNLOADED;
437
+ this.tileDrawn = true;
428
438
  return true;
429
439
  }
430
440
 
@@ -77,6 +77,7 @@ export type Tileset3DProps = {
77
77
  onTileError?: (tile: Tile3D, message: string, url: string) => any;
78
78
  contentLoader?: (tile: Tile3D) => Promise<void>;
79
79
  onTraversalComplete?: (selectedTiles: Tile3D[]) => Tile3D[];
80
+ onUpdate?: () => void;
80
81
  };
81
82
 
82
83
  type Props = {
@@ -104,6 +105,8 @@ type Props = {
104
105
  onTileError: (tile: Tile3D, message: string, url: string) => void;
105
106
  /** Callback. Allows post-process selectedTiles right after traversal. */
106
107
  onTraversalComplete: (selectedTiles: Tile3D[]) => Tile3D[];
108
+ /** Callback. Called when the set of selected tiles changes. */
109
+ onUpdate: () => void;
107
110
  /** The maximum screen space error used to drive level of detail refinement. */
108
111
  maximumScreenSpaceError: number;
109
112
  /** Whether to adjust the maximum screen space error to comply with the maximum memory limitation */
@@ -137,6 +140,7 @@ const DEFAULT_PROPS: Props = {
137
140
  onTileUnload: () => {},
138
141
  onTileError: () => {},
139
142
  onTraversalComplete: (selectedTiles: Tile3D[]) => selectedTiles,
143
+ onUpdate: () => {},
140
144
  contentLoader: undefined,
141
145
  viewDistanceScale: 1.0,
142
146
  maximumScreenSpaceError: 8,
@@ -284,6 +288,9 @@ export class Tileset3D {
284
288
  _cache = new TilesetCache();
285
289
  _requestScheduler: RequestScheduler;
286
290
 
291
+ /** Tile IDs held visible during transitions until replacements have drawn */
292
+ private _heldTiles: Set<string> = new Set();
293
+
287
294
  // Promise tracking
288
295
  private updatePromise: Promise<number> | null = null;
289
296
  tilesetInitializationPromise: Promise<void>;
@@ -538,6 +545,7 @@ export class Tileset3D {
538
545
  * Update tiles relying on data from all traversers
539
546
  */
540
547
  _updateTiles(): void {
548
+ const previousSelectedTiles = this.selectedTiles;
541
549
  this.selectedTiles = [];
542
550
  this._requestedTiles = [];
543
551
  this._emptyTiles = [];
@@ -551,6 +559,45 @@ export class Tileset3D {
551
559
 
552
560
  this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
553
561
 
562
+ // Transition hold: keep recently-deselected tiles visible until all their
563
+ // replacements have been drawn by the renderer (e.g. deck.gl).
564
+ // Without this, there are single-frame flashes during REPLACE refinement transitions.
565
+ const selectedIds = new Set(this.selectedTiles.map((t) => t.id));
566
+ const hasUndrawnTiles = this.selectedTiles.some((t) => !t.tileDrawn);
567
+
568
+ // Keep recently-deselected tiles visible while new tiles haven't drawn yet
569
+ let heldBackCount = 0;
570
+ if (hasUndrawnTiles) {
571
+ for (const tileId of selectedIds) {
572
+ this._heldTiles.add(tileId);
573
+ }
574
+ for (const tileId of this._heldTiles) {
575
+ // Skip tiles that are already selected
576
+ if (selectedIds.has(tileId)) continue; // eslint-disable-line no-continue
577
+
578
+ // Keep tiles previously drawn selected
579
+ const tile = this._tiles[tileId];
580
+ if (tile && tile.contentAvailable) {
581
+ tile._selectedFrame = this._frameNumber;
582
+ this.selectedTiles.push(tile);
583
+ heldBackCount++;
584
+ } else {
585
+ this._heldTiles.delete(tileId);
586
+ }
587
+ }
588
+ } else {
589
+ // Store current selected ids for next frame
590
+ this._heldTiles = selectedIds;
591
+ }
592
+
593
+ if (heldBackCount > 0) {
594
+ // Schedule another update so that once all replacement tiles
595
+ // have drawn, the held tiles get released
596
+ setTimeout(() => {
597
+ this.selectTiles();
598
+ }, 0);
599
+ }
600
+
554
601
  for (const tile of this.selectedTiles) {
555
602
  this._tiles[tile.id] = tile;
556
603
  }
@@ -558,6 +605,10 @@ export class Tileset3D {
558
605
  this._loadTiles();
559
606
  this._unloadTiles();
560
607
  this._updateStats();
608
+
609
+ if (this._tilesChanged(previousSelectedTiles, this.selectedTiles)) {
610
+ this.options.onUpdate();
611
+ }
561
612
  }
562
613
 
563
614
  _tilesChanged(oldSelectedTiles: Tile3D[], selectedTiles: Tile3D[]): boolean {
@@ -574,7 +625,7 @@ export class Tileset3D {
574
625
  _loadTiles(): void {
575
626
  // Sort requests by priority before making any requests.
576
627
  // This makes it less likely this requests will be cancelled after being issued.
577
- // requestedTiles.sort((a, b) => a._priority - b._priority);
628
+ this._requestedTiles.sort((a, b) => a._priority - b._priority);
578
629
  for (const tile of this._requestedTiles) {
579
630
  if (tile.contentUnloaded) {
580
631
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
@@ -978,10 +1029,9 @@ export class Tileset3D {
978
1029
  }
979
1030
 
980
1031
  _initializeI3STileset() {
981
- // @ts-expect-error
982
- if (this.loadOptions.i3s && 'token' in this.loadOptions.i3s) {
983
- // @ts-ignore
984
- this._queryParams.token = this.loadOptions.i3s.token as string;
1032
+ const i3sOptions = this.loadOptions.i3s;
1033
+ if (i3sOptions && typeof i3sOptions === 'object' && 'token' in i3sOptions) {
1034
+ this._queryParams.token = (i3sOptions as Record<string, unknown>).token as string;
985
1035
  }
986
1036
  }
987
1037
  }
@@ -353,6 +353,6 @@ export class TilesetTraverser {
353
353
  }
354
354
  }
355
355
  }
356
- return allDescendantsLoaded;
356
+ return root.hasEmptyContent || allDescendantsLoaded;
357
357
  }
358
358
  }