Home - Jangmyun/copcesium GitHub Wiki
copcesium wiki
CesiumJS provider for real-time COPC (Cloud Optimized Point Cloud) streaming and rendering.
This wiki is the in-depth companion to the README. The README covers install and quick start; the wiki covers how the internals work, how to tune them, and how to get out of trouble.
Pages
- Architecture — the three-layer pipeline (Data → Cache & Scheduler → Render) and how a node travels through it.
- Options & Tuning — every option, what it trades off, how to tune for quality vs. memory vs. bandwidth, and the live styling API.
- Coordinate Systems — WKT auto-detection, the proj4 fallback table, compound CRSes, and vertical units.
- Converting to COPC — turning LAS/LAZ into
.copc.lazwith PDAL, untwine, or QGIS. - Troubleshooting — CORS, Range Requests, blank screens, misplaced clouds, and other common failures.
- Third-Party Licenses — what's bundled into the published package, and under which licenses.
At a glance
- Streaming, not loading — only the octree nodes the camera can see are fetched, over HTTP Range Requests.
- Off the main thread — LAZ decompression and coordinate transforms run in a pool of reused Web Workers.
- Screen-space-error LoD — point density matches what the camera can actually resolve, bounded by node and point budgets, with no flash of empty space mid-transition.
- Prefetching — nodes just outside the view are loaded ahead of a pan, without delaying what's on screen.
- Measurable —
dataSource.statsreports bytes transferred against file size, plus per-stage fetch/decode/upload timings. - CRS-aware — auto-detects the source coordinate system from the file's own WKT metadata.
- Live-tunable —
sseThreshold, point size (pixelSize,pointSizeModeand its attenuation bounds),heightOffset, and the whole styling API (colorMode,opacity,classificationFilter,intensityRange) can be adjusted on a running data source with no reload. - Genuinely drop-in — a single self-contained
.mjs; the Worker and its WASM are inlined at build time.