3dtiles-inspector
v0.2.13
Published
Inspect, align, and save local 3D Tiles root transforms in an interactive browser session.
Maintainers
Readme
3DTiles-Inspector
3dtiles-inspector is a Node.js package and CLI for opening a local 3D Tiles tileset in a browser inspector, adjusting the root transform, tuning geometric-error scaling, cropping supported 3D Gaussian Splat tilesets, and saving the result back to disk.
Requires Node.js 18 or newer.
Built On
This project is based on and integrates work from:
Install
npm install 3dtiles-inspectorCLI
3dtiles-inspector <tileset_json>npx 3dtiles-inspector <tileset_json>From a cloned repository:
npm run cli -- <tileset_json>The CLI starts a localhost HTTP server, copies the built inspector assets into a temporary directory, opens the default browser, and keeps running until you stop it with Ctrl+C.
<tileset_json> can be either:
- the root tileset JSON file, for example
out_tiles/tileset.json - a directory that contains
tileset.json
Node API
const { runInspector } = require('3dtiles-inspector');
(async () => {
await runInspector('./out_tiles/tileset.json');
})();If you need to control the browser launch or manage the session lifecycle yourself:
const {
resolveAndValidateTilesetPath,
startInspectorSession,
} = require('3dtiles-inspector');
(async () => {
const tilesetPath = resolveAndValidateTilesetPath('./out_tiles/tileset.json');
const session = await startInspectorSession(tilesetPath, {
openBrowser: false,
handleSignals: false,
});
console.log(session.url);
await session.close();
})();Inspector Features
Translate,Rotate, infiniteScaletrack/value input, andResetfor root transform editsMove Camerato a WGS84 latitude / longitude / heightMove Tilesto relocate the tileset root with an ENU-aligned transformSet Positionto click the globe, terrain, or loaded tiles and place the tileset thereTerrain, off by default, to toggle Cesium World Terrain after entering a Cesium ion token, while keeping satellite imageryGeometric Errorscaling from1/16xto16xLayer Multiplierscaling from1/8xto8xfor each tile's geometric-error difference from the tileset's global leaf baselineCrop Regionsfor drawing screen-space exclude regions on 3D Gaussian Splat tilesetsSaveto persist root transform edits, geometric-error scaling, and confirmed crop regions back to disk
Crop Regions
Crop Regions appears when the loaded tileset contains 3D Gaussian Splat content. It lets you draw one or more screen-space exclude rectangles, preview them in the viewer, then apply the crop when you click Save.
The basic workflow is:
- Click
Draw Regionand drag a rectangle over the splats to remove. - Before moving the camera, drag pending corner points or side handles if the screen region needs adjustment; the pending shape must stay a convex four-sided screen quadrilateral.
- Rotate, pan, or zoom the camera to fix the pending screen shape in 3D, then drag the far-plane handle to set how deep the crop region extends into the scene.
- Click
Confirmto add the region to the save list, orCancelto discard the pending rectangle. - Select a confirmed region row if you need to adjust its 3D far plane with the transform handle.
- Click
Saveto persist the root transform and delete splats inside the confirmed crop regions.
Crop saving rewrites supported local .gltf / .glb Gaussian Splat resources that use KHR_gaussian_splatting_compression_spz_2. Fully deleted splat primitives are removed from their glTF, and empty tile content can be pruned from the tileset JSON. Remote content and unsupported Gaussian Splat encodings are rejected instead of being modified.
If build_summary.json exists next to the root tileset, Save also updates:
root_transformroot_transform_sourceroot_coordinateviewer_geometric_error_scaleviewer_geometric_error_layer_scale
Development
npm install
npm test
npm run pack:checkError Handling
Runtime and validation failures throw InspectorError from the Node API and print a concise error message in the CLI.
