3dtiles-inspector 0.2.11 → 0.2.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "3dtiles-inspector",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Inspect, align, and save local 3D Tiles root transforms in an interactive browser session.",
5
5
  "author": "William Liu <lyz15972107087@gmail.com>",
6
6
  "license": "Apache-2.0",
@@ -55,9 +55,8 @@
55
55
  },
56
56
  "devDependencies": {
57
57
  "@sparkjsdev/spark": "2.1.0",
58
- "3d-tiles-renderer": "0.4.25",
59
- "3d-tiles-rendererjs-3dgs-plugin": "0.1.8",
60
- "cesium": "1.140.0",
58
+ "3d-tiles-renderer": "0.4.27",
59
+ "3d-tiles-rendererjs-3dgs-plugin": "0.1.11",
61
60
  "esbuild": "^0.25.11"
62
61
  },
63
62
  "dependencies": {
@@ -654,6 +654,34 @@ function buildViewerHtml(viewerConfig) {
654
654
  background: rgba(255, 255, 255, 0.92);
655
655
  }
656
656
 
657
+ .token-field {
658
+ display: grid;
659
+ gap: 5px;
660
+ min-width: 0;
661
+ }
662
+
663
+ .token-field span {
664
+ min-width: 0;
665
+ font-size: 11px;
666
+ font-weight: 600;
667
+ letter-spacing: 0.04em;
668
+ text-transform: uppercase;
669
+ color: #5d738b;
670
+ }
671
+
672
+ .token-field input {
673
+ width: 100%;
674
+ min-width: 0;
675
+ padding: 8px 10px;
676
+ border: 1px solid rgba(22, 50, 79, 0.16);
677
+ border-radius: 10px;
678
+ font: inherit;
679
+ font-size: 12px;
680
+ font-weight: 600;
681
+ color: #16324f;
682
+ background: rgba(255, 255, 255, 0.92);
683
+ }
684
+
657
685
  .coordinate-actions {
658
686
  display: grid;
659
687
  grid-template-columns: 1fr;
@@ -901,11 +929,36 @@ function buildViewerHtml(viewerConfig) {
901
929
  <p class="toolbar-section-title">Canvas</p>
902
930
  </div>
903
931
  <div class="coordinate-actions">
932
+ <label class="token-field">
933
+ <span>Cesium ion token</span>
934
+ <input
935
+ id="cesium-ion-token"
936
+ type="password"
937
+ autocomplete="off"
938
+ autocapitalize="off"
939
+ spellcheck="false"
940
+ placeholder="Required for terrain"
941
+ />
942
+ </label>
904
943
  <button id="terrain" class="wide" type="button">Terrain</button>
905
944
  <button id="bounding-volume" class="wide" type="button">Bounding Volume</button>
906
945
  <button id="move-to-tiles" type="button">Move To Tiles</button>
907
946
  </div>
908
947
  </div>
948
+ <div class="toolbar-section">
949
+ <div class="toolbar-section-header">
950
+ <p class="toolbar-section-title">Coordinate</p>
951
+ </div>
952
+ <div class="coordinate-grid">
953
+ <label><span>Latitude</span><input id="latitude" type="number" step="any" value="0" /></label>
954
+ <label><span>Longitude</span><input id="longitude" type="number" step="any" value="0" /></label>
955
+ <label><span>Height</span><input id="height" type="number" step="any" value="0" /></label>
956
+ </div>
957
+ <div class="coordinate-actions">
958
+ <button id="move-camera-to-coordinate" class="wide" type="button">Move Camera</button>
959
+ <button id="move-tiles-to-coordinate" class="wide" type="button">Move Tiles</button>
960
+ </div>
961
+ </div>
909
962
  <div class="toolbar-section">
910
963
  <div class="toolbar-section-header">
911
964
  <p class="toolbar-section-title">Transform</p>
@@ -937,20 +990,6 @@ function buildViewerHtml(viewerConfig) {
937
990
  <button id="reset" class="full-span" type="button">Reset</button>
938
991
  </div>
939
992
  </div>
940
- <div class="toolbar-section">
941
- <div class="toolbar-section-header">
942
- <p class="toolbar-section-title">Coordinate</p>
943
- </div>
944
- <div class="coordinate-grid">
945
- <label><span>Latitude</span><input id="latitude" type="number" step="any" value="0" /></label>
946
- <label><span>Longitude</span><input id="longitude" type="number" step="any" value="0" /></label>
947
- <label><span>Height</span><input id="height" type="number" step="any" value="0" /></label>
948
- </div>
949
- <div class="coordinate-actions">
950
- <button id="move-camera-to-coordinate" class="wide" type="button">Move Camera</button>
951
- <button id="move-tiles-to-coordinate" class="wide" type="button">Move Tiles</button>
952
- </div>
953
- </div>
954
993
  <div class="toolbar-section">
955
994
  <div class="toolbar-section-header">
956
995
  <p class="toolbar-section-title">LOD</p>
package/src/viewer/app.js CHANGED
@@ -46,6 +46,7 @@ const viewerElements = getViewerElements();
46
46
  const {
47
47
  boundingVolumeButton,
48
48
  cacheBytesValueEl,
49
+ cesiumIonTokenInput,
49
50
  cropSectionEl,
50
51
  geometricErrorLayerScaleInput,
51
52
  geometricErrorLayerValueEl,
@@ -142,6 +143,7 @@ const globeController = createGlobeController({
142
143
 
143
144
  const viewerToggles = createViewerToggles({
144
145
  boundingVolumeButton,
146
+ cesiumIonTokenInput,
145
147
  globeController,
146
148
  setStatus,
147
149
  terrainButton,
@@ -4,6 +4,7 @@ export function getViewerElements() {
4
4
  return {
5
5
  boundingVolumeButton: document.getElementById('bounding-volume'),
6
6
  cacheBytesValueEl: document.getElementById('cache-bytes-value'),
7
+ cesiumIonTokenInput: document.getElementById('cesium-ion-token'),
7
8
  cropCountValueEl: document.getElementById('crop-count-value'),
8
9
  cropListEl: document.getElementById('crop-list'),
9
10
  cropSectionEl: document.getElementById('crop-section'),
@@ -156,7 +156,9 @@ export function bindViewerEvents({
156
156
  handlers.toggleToolbarVisibility,
157
157
  );
158
158
  terrainButton.addEventListener('click', () => {
159
- handlers.setTerrainEnabled(!getTerrainEnabled());
159
+ if (!handlers.setTerrainEnabled(!getTerrainEnabled())) {
160
+ return;
161
+ }
160
162
  setStatus(
161
163
  getTerrainEnabled()
162
164
  ? 'Terrain enabled with Cesium World Terrain.'
@@ -1,5 +1,6 @@
1
1
  export function createViewerToggles({
2
2
  boundingVolumeButton,
3
+ cesiumIonTokenInput,
3
4
  globeController,
4
5
  setStatus,
5
6
  terrainButton,
@@ -19,8 +20,23 @@ export function createViewerToggles({
19
20
  }
20
21
 
21
22
  function setTerrainEnabled(enabled) {
22
- globeController.setTerrainEnabled(enabled);
23
- syncTerrainButton();
23
+ try {
24
+ const cesiumIonToken = cesiumIonTokenInput?.value?.trim() || '';
25
+ if (enabled && !cesiumIonToken) {
26
+ cesiumIonTokenInput?.focus();
27
+ setStatus('Enter a Cesium ion token to enable terrain.', true);
28
+ syncTerrainButton();
29
+ return false;
30
+ }
31
+
32
+ globeController.setTerrainEnabled(enabled, { cesiumIonToken });
33
+ syncTerrainButton();
34
+ return true;
35
+ } catch (err) {
36
+ setStatus(err && err.message ? err.message : String(err), true);
37
+ syncTerrainButton();
38
+ return false;
39
+ }
24
40
  }
25
41
 
26
42
  function syncBoundingVolumeButton() {