3dtiled-to-3dtiles
Guide (from README.md)

Related tilers (prior art / reference implementations)

Producing the tiled inputs (offline tilers): point-cloud tilers (PotreeConverter, py3dtiles,

Producing the tiled inputs (offline tilers): point-cloud tilers (PotreeConverter, py3dtiles, gocesiumtiler, PDAL→COPC), splat LoD builders (SparkJS build-lod, PlayCanvas splat-transform, XGRIDS LCC), and a note on why PotreeConverter 2.0 is so fast — see offline-tilers.md.

Tools that tile point clouds, meshes, or splats to 3D Tiles / streaming formats — studied for format handling, tree/geometric-error strategy, and parallelism:

Point clouds

Meshes / CAD / GIS

Gaussian splats

Runtime (Node today / browser-capable?)

All converters run on Node today (fs for I/O, Node zlib for SPZ gzip). The decoders are mostly portable; the Node-only parts are I/O + compression + workers, which core abstracts.

ConverterDecoder portabilityNode-only gate(s) → browser path
radpure JS (Buffer math)fs → fetch/File; SPZ zlib.gzipCompressionStream('gzip'). Browser-capable.
sogWASM (webp.wasm via splat-transform — a web SDK)fs/MemoryReadFileSystem → its UrlReadFileSystem already works in-browser. Browser-capable.
lccpure JS (DataView)fs → fetch. Browser-capable.
copcWASM (laz-perf)fs → fetch; proj4 is browser-ok. Browser-capable.
potreepure JSfs → fetch; 2.0 BROTLI needs a WASM brotli (no standard browser API — DEFAULT encoding is fine). Mostly browser-capable.
i3sJS + zipfs/zip → fetch + a browser zip lib. Browser-capable (draft).
output GLB@gltf-transform/coreworks in Node and browser.

Common gates: gzip (SPZ) → browser CompressionStream; brotli (Potree 2.0) → needs WASM; parallelism worker_threads → Web Workers (same task shape); WebP/LAZ decoders are already WASM.

Rendering diagram…

On this page