npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

3dtiles-inspector

v0.2.13

Published

Inspect, align, and save local 3D Tiles root transforms in an interactive browser session.

Readme

3DTiles-Inspector

npm version CI License

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-inspector

CLI

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, infinite Scale track/value input, and Reset for root transform edits
  • Move Camera to a WGS84 latitude / longitude / height
  • Move Tiles to relocate the tileset root with an ENU-aligned transform
  • Set Position to click the globe, terrain, or loaded tiles and place the tileset there
  • Terrain, off by default, to toggle Cesium World Terrain after entering a Cesium ion token, while keeping satellite imagery
  • Geometric Error scaling from 1/16x to 16x
  • Layer Multiplier scaling from 1/8x to 8x for each tile's geometric-error difference from the tileset's global leaf baseline
  • Crop Regions for drawing screen-space exclude regions on 3D Gaussian Splat tilesets
  • Save to 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:

  1. Click Draw Region and drag a rectangle over the splats to remove.
  2. 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.
  3. 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.
  4. Click Confirm to add the region to the save list, or Cancel to discard the pending rectangle.
  5. Select a confirmed region row if you need to adjust its 3D far plane with the transform handle.
  6. Click Save to 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_transform
  • root_transform_source
  • root_coordinate
  • viewer_geometric_error_scale
  • viewer_geometric_error_layer_scale

Development

npm install
npm test
npm run pack:check

Error Handling

Runtime and validation failures throw InspectorError from the Node API and print a concise error message in the CLI.