3dtiled-to-3dtiles
Reference & Planning

Dependencies

Major dependencies per workspace package, grouped by the middleware server + offline converters (Packages), the viewer, and the docs site.

Dependencies are grouped into three areas: Packages (the middleware server + every offline converter — packages/*), Viewer (apps/viewer and the legacy viewer.html), and a short mention of apps/docs's own tooling. Versions aren't tracked here — see each package's own package.json/ lockfile for what's currently resolved.

Packages

The middleware server (packages/tile-server) and every offline <fmt>-to-3dtiles converter, plus the shared core and meta-converter, as one workspace group.

packages/core (3dtiles-convert-core)

PackageUsed by
@gltf-transform/coreglTF read/write, shared by every converter
@gltf-transform/extensionsglTF extension (de)registration
@gltf-transform/functionsglTF-Transform pipeline ops (/gltf decompress)
threeBasis/KTX2 transcoding support
draco3dgltfDraco geometry decode/encode registration
ktx-parseKTX2 container parsing
ktx2-encoderin-process KTX2 (ETC1S/UASTC) WASM encoder
@jsquash/webpWebP decode (SOG textures)
pngjspure-JS PNG encode (KTX2→PNG decompress path)
jpeg-jspure-JS JPEG decode/encode

packages/convert (meta CLI/SDK)

PackageUsed by
fflatezip read (remote directory-format mirroring)
sql.js.3dtiles package output
workspace: copc-to-3dtiles, potree-to-3dtiles, rad-to-3dtiles, sog-to-3dtiles, lcc-to-3dtiles, i3s-to-3dtiles, 3dtiles-convert-coreper-format converters

packages/tile-server

PackageUsed by
copc/stream?format=copc range adapter
proj4live georeferencing (COPC/Potree/I3S)
@loaders.gl/i3s/stream?format=i3s
@loaders.gl/zip.3tz / SLPK zip random access
@playcanvas/splat-transform/stream?format=sog, /extract splat merge
workspace: 3dtiles-convert-core, 3dtiles-tools, i3s-to-3dtiles, implicit-to-explicitshared decode/encode + tileset transforms

packages/copc-to-3dtiles

PackageUsed by
copcCOPC/LAZ read (via laz-perf WASM)
@gltf-transform/coreGLB tile output
proj4WKT CRS → ECEF root transform

packages/potree-to-3dtiles

PackageUsed by
@gltf-transform/coreGLB tile output
copctiled-LAZ node decode (laz-perf)

packages/rad-to-3dtiles

PackageUsed by
@sparkjsdev/sparkRAD format reference (build-lod output)
@gltf-transform/coreGLB tile output

packages/sog-to-3dtiles

PackageUsed by
@playcanvas/splat-transformreadSog WebP-chunk decode → DataTable

packages/lcc-to-3dtiles

No third-party runtime dependencies — pure-JS DataView decode of meta.lcc/Index.bin/Data.bin.

packages/i3s-to-3dtiles

PackageUsed by
@loaders.gl/coreSLPK/zip + fetch plumbing
@loaders.gl/i3sI3S schema types/helpers
@loaders.gl/polyfillsNode polyfills for loaders.gl
@loaders.gl/tilestile-tree traversal helpers

packages/threemx-to-3dtiles

No third-party runtime dependencies — vendors its own OpenCTM (js-openctm) decode logic in-tree.

packages/3dtiles-tools

PackageUsed by
gltf-pipelineglTF 1.0→2.0 upgrade (legacy b3dm content)
3d-tiles-toolsreal CesiumGS package, wired as tool=upgrade-real on /3dtiles-tools
workspace: 3dtiles-convert-core, implicit-to-explicittileset-level transforms

packages/implicit-to-explicit

Workspace-only dependency: 3dtiles-convert-core (shared octree/geo helpers).

Viewer

apps/viewer (the standalone React app, "3D Tiled") and the legacy viewer.html/vanilla-viewer.html.

apps/viewer (3D Tiled — React app)

PackageUsed by
react / react-domapp framework
@react-three/fiberR3F renderer for the 3DTRJS viewport
@react-three/dreiR3F helpers (<TransformControls> crop gizmo, etc.)
3d-tiles-renderer3D Tiles rendering (official /r3f export)
3d-tiles-rendererjs-3dgs-pluginGaussian-splat plugin for 3DTRJS
@sparkjsdev/sparksplat rendering backend
cesiumCesiumJS viewport
threeshared 3D engine (deduped with 3DTRJS/Spark)
three-mesh-bvhBVH acceleration for 3DTRJS
zustandapp state (crop bbox, camera readouts, status log)
nuqsshareable URL-param state (format/mode/cache/preset/…)
@radix-ui/react-* (checkbox, collapsible, dialog, label, scroll-area, select, separator, slider, slot, toggle, toggle-group)shadcn/ui primitives
class-variance-authorityshadcn/ui variant styling
clsxconditional class names
tailwind-mergeTailwind class merging (shadcn/ui)
lucide-reacticon set
tailwindcss / @tailwindcss/postcssstyling
vitedev server / build
@vitejs/plugin-reactReact Fast Refresh for Vite
vite-plugin-cesiumCesium static asset copying
typescripttype checking

Legacy vanilla-viewer.html

The original, pre-React standalone page now lives entirely inside apps/viewer/vanilla-viewer.html, built as a second Vite entry point alongside the React app — it shares that package's own dependencies listed above (Cesium, three, 3d-tiles-renderer, the 3DGS plugin, SparkJS, vite-plugin-cesium) as genuine npm packages bundled by Vite (vite-plugin-cesium copies Cesium's static assets; three is deduped via resolve.dedupe), not CDN-loaded. There is no separate root copy or root-level deps for it anymore. See Viewer for how it's served.

The only root-level dev dependency is concurrently, which runs pnpm dev's viewer+docs+tile-server processes in parallel; sql.js (used for .3dtiles package reading) lives in packages/convert's own package.json (see above), not the root.

Docs site

  • Fumadocs (fumadocs-core/fumadocs-ui/fumadocs-mdx) powers this documentation site — see its own docs and repo for its dependency tree, not itemized here.
  • Scalar powers the API reference/playground in two places: a standalone webapp at the tile-server's own /playground route (packages/tile-server/homepage-live.js, loaded from Scalar's CDN script) and an embedded page in this Fumadocs site (/docs/api-reference, via @scalar/api-reference-react). See Scalar's own docs and repo.

Optional / conditionally-used:

  • better-sqlite3 — only needed for local .3dtiles package writing/serving via native SQLite; the read path uses sql.js (pure WASM) instead, so it's optional (pnpm add -w better-sqlite3, needs a C++ build toolchain).

On this page