Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ title: 3D Models Articulations - Dev
description: Explore node transformations of 3D models.
labels:
- Development
- 3D Models
thumbnail: thumbnail.jpg
development: true
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
legacyId: 3D Models Coloring.html
title: 3D Models Coloring
description: Change color of 3D models.
title: Coloring and Styling glTF Models
description: Customize the appearance of glTF models in CesiumJS using colors, blend modes, transparency, and silhouettes. Useful for highlighting, theming, and differentiating models in a scene at runtime.
labels:
- Showcases
- 3D Models
- Entities
- Styling
thumbnail: thumbnail.jpg
7 changes: 5 additions & 2 deletions packages/sandcastle/gallery/3d-models-dev/sandcastle.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
legacyId: development/3D Models.html
title: 3D Models - Dev
description: Create 3D models using glTF.
title: glTF Models — Development
description: Load and visualize glTF and glb models with entities, including examples with compression (Draco, KTX2), instancing, and animations. Useful for learning how to place, orient, and scale 3D models in the scene for use cases like vehicles, characters, or custom assets.
labels:
- 3D Models
- Entities
- Animation
- Development
thumbnail: thumbnail.jpg
development: true
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ title: 3D Models Node Explorer - Dev
description: Explore node transformations of 3D models.
labels:
- Development
- 3D Models
- Transformations
thumbnail: thumbnail.jpg
development: true
9 changes: 5 additions & 4 deletions packages/sandcastle/gallery/3d-models/sandcastle.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
legacyId: 3D Models.html
title: 3D Models
description: Create 3D models using glTF.
title: glTF Models
description: Load and visualize glTF and glb models with entities, including examples with compression (Draco, KTX2), instancing, and animations. Useful for learning how to place, orient, and scale 3D models in the scene for use cases like vehicles, characters, or custom assets.
labels:
- Tutorials
- Showcases
- 3D Models
- Entities
- Animation
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
legacyId: 3D Tiles 1.1 CDB Yemen.html
title: 3D Tiles 1.1 CDB Yemen
description: Load a 3D Tiles 1.1 tileset converted from CDB.
title: CDB Metadata in 3D Tiles
description: Demonstrates loading a 3D Tiles 1.1 tileset converted from CDB, carrying through detailed metadata. 3D Tiles enables runtime styling, filtering, and querying features using CDB attributes.
labels:
- 3D Tiles
- Metadata
- Styling
- Picking
thumbnail: thumbnail.jpg
legacyId: 3D Tiles 1.1 CDB Yemen.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
legacyId: 3D Tiles 1.1 Photogrammetry Classification.html
title: 3D Tiles 1.1 Photogrammetry Classification
description: Load a photogrammetry dataset with feature ID textures from EXT_mesh_features.
title: 3D Tiles Photogrammetry Classification
description: Demonstrates a photogrammetry dataset using feature ID textures to encode metadata with EXT_mesh_features. 3D Tiles 1.1 enables classification, styling, and querying individual features in photogrammetry datasets.
labels:
- 3D Tiles
- Photogrammetry
- Classification
- Metadata
- Styling
- Picking
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
legacyId: 3D Tiles 1.1 Photogrammetry.html
title: 3D Tiles 1.1 Photogrammetry
description: Performance comparison of photogrammetry using 3D Tiles 1.0 vs 3D Tiles 1.1 with KTX2 texture compression. Most notably, KTX2 textures provide significant GPU memory savings
title: 3D Tiles Photogrammetry with KTX2
description: Compare photogrammetry performance between 3D Tiles 1.0 and 3D Tiles 1.1 with KTX2 texture compression. KTX2 reduces GPU memory usage and improves runtime efficiency when visualizing large-scale photogrammetry datasets.
labels:
- 3D Tiles
- Photogrammetry
- Performance
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
legacyId: 3D Tiles 1.1 S2 Globe.html
title: 3D Tiles 1.1 S2 Globe
description: Load a global scale 3D Tiles 1.1 tileset that uses 3DTILES_bounding_volume_S2.
title: S2 Globe with 3D Tiles
description: Loads a One World Terrain dataset, courtesy Maxar,—A global scale 3D Tiles 1.1 tileset that uses 3DTILES_bounding_volume_S2, a schema for defining bounding volumes as hierarchical cells composing a unit sphere. This extension is well suited for tilesets that span the whole globe as, opposed to traditional GIS projections such as Web Mercator which can create distortions in scale, divides an ellipsoid into cells of relatively similar size.
labels:
- 3D Tiles
- Terrain
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
legacyId: 3D Tiles Adjust Height.html
title: 3D Tiles Adjust Height
description: Adjust the height of a 3D Tiles tileset.
title: Offset 3D Tileset Height
description: Change the vertical position of a 3D Tileset by applying a translation matrix. Useful for aligning datasets with terrain.
labels:
- 3D Tiles
- Transformations
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
legacyId: 3D Tiles Batch Table Hierarchy.html
title: 3D Tiles Batch Table Hierarchy
description: Demonstrates use cases for a batch table hierarchy.
title: 3D Tiles Styling
description: Shows how to style 3D Tiles by hierarchical class and properties (e.g., buildings → doors → doorknobs). Demonstrates 3D Tiles Style predicates like `isClass` and `isExactClass` and coloring or filtering by element property data.
labels:
- 3D Tiles
- Metadata
- Styling
thumbnail: thumbnail.jpg
7 changes: 4 additions & 3 deletions packages/sandcastle/gallery/3d-tiles-bim/sandcastle.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
legacyId: 3D Tiles BIM.html
title: 3D Tiles BIM
description: A sample BIM dataset rendered with 3D Tiles.
title: BIM Design Model with 3D Tiles
description: Render and interact with a Building Information Modeling (BIM) design model dataset using 3D Tiles. Highlights per-feature selection, global element IDs, and visibility control—useful for inspecting and managing complex engineering or infrastructure models.
labels:
- Showcases
- 3D Tiles
- Metadata
- Picking
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
legacyId: 3D Tiles Clipping Planes.html
title: 3D Tiles Clipping Planes
description: User-defined clipping planes applied to a batched 3D Tileset, point cloud, and model.
description: Add clipping planes to a mesh 3D Tileset, point cloud 3D Tileset, and glTF model. Useful for exploring interiors or cutting away parts of geometry.
labels:
- Showcases
- 3D Tiles
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ legacyId: 3D Tiles Feature Picking.html
title: 3D Tiles Feature Picking
description: Pick features in a 3D Tiles tileset.
labels:
- Showcases
- 3D Tiles
- Metadata
- Picking
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ legacyId: 3D Tiles Feature Styling.html
title: 3D Tiles Feature Styling
description: Use 3D Tiles Styling to assign colors based on material or find all office buildings.
labels:
- Beginner
- 3D Tiles
- Styling
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<style>
@import url(../templates/bucket.css);

#slider {
position: absolute;
left: 50%;
top: 0px;
background-color: #d3d3d3;
width: 5px;
height: 100%;
z-index: 9999;
}

#slider:hover {
cursor: ew-resize;
}
.split-label {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(42, 42, 42, 0.8);
padding: 8px;
border-radius: 4px;
z-index: 9999;
font-size: large;
font-weight: bold;
text-align: center;
}
.split-label.left {
left: 0;
}
.split-label.right {
right: 0;
}
</style>
<div id="cesiumContainer" class="fullSize">
<div id="slider"></div>
<div class="split-label left">3D Tiles<br />Gaussian splats</div>
<div class="split-label right">3D Tiles<br />Mesh</div>
</div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import * as Cesium from "cesium";

const viewer = new Cesium.Viewer("cesiumContainer", {
terrain: Cesium.Terrain.fromWorldTerrain(),
});

try {
const left = await Cesium.Cesium3DTileset.fromIonAssetId(3667784);
viewer.scene.primitives.add(left);
left.splitDirection = Cesium.SplitDirection.LEFT;

viewer.zoomTo(
left,
new Cesium.HeadingPitchRange(
Cesium.Math.toRadians(-50),
Cesium.Math.toRadians(-20),
100.0,
),
);

const right = await Cesium.Cesium3DTileset.fromIonAssetId(3443919);
viewer.scene.primitives.add(right);
right.splitDirection = Cesium.SplitDirection.RIGHT;
} catch (error) {
console.log(`Error loading tileset: ${error}`);
}

// Sync the position of the slider with the split position
const slider = document.getElementById("slider");
viewer.scene.splitPosition =
slider.offsetLeft / slider.parentElement.offsetWidth;

const handler = new Cesium.ScreenSpaceEventHandler(slider);

let moveActive = false;

function move(movement) {
if (!moveActive) {
return;
}

const relativeOffset = movement.endPosition.x;
const splitPosition =
(slider.offsetLeft + relativeOffset) / slider.parentElement.offsetWidth;
slider.style.left = `${100.0 * splitPosition}%`;
viewer.scene.splitPosition = splitPosition;
}

handler.setInputAction(function () {
moveActive = true;
}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
handler.setInputAction(function () {
moveActive = true;
}, Cesium.ScreenSpaceEventType.PINCH_START);

handler.setInputAction(move, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handler.setInputAction(move, Cesium.ScreenSpaceEventType.PINCH_MOVE);

handler.setInputAction(function () {
moveActive = false;
}, Cesium.ScreenSpaceEventType.LEFT_UP);
handler.setInputAction(function () {
moveActive = false;
}, Cesium.ScreenSpaceEventType.PINCH_END);
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
legacyId: 3D Tiles Gaussian Splatting Comparison.html
title: 3D Tiles Gaussian Splatting — Mesh Comparison
description: Comapre a 3D Tiles power station dataset with Gaussian splatting (or Gaussian splats) rendering versus the same dataset using triangle-based mesh rendering. Notably, fine details like powerlines are better preserved when rendering the Gaussian splatting dataset.
labels:
- Showcases
- 3D Tiles
thumbnail: thumbnail.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,22 +1,6 @@
<style>
@import url(../templates/bucket.css);

#slider {
position: absolute;
left: 50%;
top: 0px;
background-color: #d3d3d3;
width: 5px;
height: 100%;
z-index: 9999;
}

#slider:hover {
cursor: ew-resize;
}
</style>
<div id="cesiumContainer" class="fullSize">
<div id="slider"></div>
</div>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
60 changes: 7 additions & 53 deletions packages/sandcastle/gallery/3d-tiles-gaussian-splatting/main.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,18 @@
import * as Cesium from "cesium";

const viewer = new Cesium.Viewer("cesiumContainer", {
terrain: Cesium.Terrain.fromWorldTerrain(),
});
const viewer = new Cesium.Viewer("cesiumContainer");

try {
const left = await Cesium.Cesium3DTileset.fromIonAssetId(3443920);
viewer.scene.primitives.add(left);
left.splitDirection = Cesium.SplitDirection.LEFT;

const tileset = await Cesium.Cesium3DTileset.fromIonAssetId(3667783);
viewer.scene.primitives.add(tileset);
viewer.zoomTo(
left,
tileset,
new Cesium.HeadingPitchRange(
Cesium.Math.toRadians(-50),
Cesium.Math.toRadians(-20),
100.0,
Cesium.Math.toRadians(0.0),
Cesium.Math.toRadians(-15.0),
200.0,
),
);

const right = await Cesium.Cesium3DTileset.fromIonAssetId(3443919);
viewer.scene.primitives.add(right);
right.splitDirection = Cesium.SplitDirection.RIGHT;
} catch (error) {
console.log(`Error loading tileset: ${error}`);
}

// Sync the position of the slider with the split position
const slider = document.getElementById("slider");
viewer.scene.splitPosition =
slider.offsetLeft / slider.parentElement.offsetWidth;

const handler = new Cesium.ScreenSpaceEventHandler(slider);

let moveActive = false;

function move(movement) {
if (!moveActive) {
return;
}

const relativeOffset = movement.endPosition.x;
const splitPosition =
(slider.offsetLeft + relativeOffset) / slider.parentElement.offsetWidth;
slider.style.left = `${100.0 * splitPosition}%`;
viewer.scene.splitPosition = splitPosition;
}

handler.setInputAction(function () {
moveActive = true;
}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
handler.setInputAction(function () {
moveActive = true;
}, Cesium.ScreenSpaceEventType.PINCH_START);

handler.setInputAction(move, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handler.setInputAction(move, Cesium.ScreenSpaceEventType.PINCH_MOVE);

handler.setInputAction(function () {
moveActive = false;
}, Cesium.ScreenSpaceEventType.LEFT_UP);
handler.setInputAction(function () {
moveActive = false;
}, Cesium.ScreenSpaceEventType.PINCH_END);
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
legacyId: 3D Tiles Gaussian Splatting.html
title: 3D Tiles Gaussian Splatting
description: View the same 3D Tiles power station dataset as a 3D Gaussian splatting tileset and a mesh tileset.
description: A minimal code example of a 3D Gaussian splatting (or Gaussian splats) dataset rendered with 3D Tiles. This technique provides smooth, photorealistic surfaces, and is typically derrived from reality capture, LiDAR, or photogrammetry data.
labels:
- Showcases
- 3D Tiles
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ title: 3D Tiles Inspector
description: Use the 3D Tiles inspector as a debugging tool for different tilesets.
labels:
- 3D Tiles
- Widgets
thumbnail: thumbnail.jpg
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ legacyId: 3D Tiles Interior.html
title: 3D Tiles Interior
description: A sample interior rendered with 3D Tiles.
labels:
- Showcases
- 3D Tiles
thumbnail: thumbnail.jpg
Loading