|
| 1 | +//! # cesium — optional Cesium / ArcGIS reference + parity oracle |
| 2 | +//! |
| 3 | +//! **NOT a production dependency.** This crate is the *runnable legacy pillar* |
| 4 | +//! (see `.claude/knowledge/crate-registry.md`, modesty clause): it |
| 5 | +//! reverse-engineers external geospatial-splat formats into ndarray CAM SoA and |
| 6 | +//! diffs our `splat3d` render against a reference, to keep "parity / better" |
| 7 | +//! honest by **measurement**. It is a workspace member but **NOT** in |
| 8 | +//! `default-members`, so it is optional/dev by construction. It relocates to |
| 9 | +//! `lance-graph/crates/cesium` once flawless. |
| 10 | +//! |
| 11 | +//! ## Hard rules (from crate-registry.md) |
| 12 | +//! - **Reverse-engineer ONLY** — extract data, rebuild as CAM SoA; never depend |
| 13 | +//! on, round-trip, or emit the source format. Refactor > reverse-engineer. |
| 14 | +//! - **CAM SoA target** — output is ndarray's splat SoA |
| 15 | +//! (`splat3d::gaussian::GaussianBatch`) + `cam_pq` codebook indices. No AoS, |
| 16 | +//! no source-native structs survive past the import boundary. |
| 17 | +//! - **NO JSON IN THE HOTPATH, EVER** — JSON only at the cold import boundary. |
| 18 | +//! Prefer the **ArcGIS PBF (protobuf, binary)** path over `f=json`. |
| 19 | +//! |
| 20 | +//! ## Grounding references (reverse-engineer against these — do NOT fabricate; |
| 21 | +//! mark anything you cannot confirm against a source as `// UNVERIFIED:`) |
| 22 | +//! - `CesiumGS/cesium` — 3D Tiles / HLOD / KHR_gaussian_splatting behaviour |
| 23 | +//! - Khronos `KHR_gaussian_splatting` + `KHR_gaussian_splatting_compression_spz` |
| 24 | +//! - `R-ArcGIS/arcpbf`, `AdaWorldAPI/arcgisutils`, `dfridkin/arcGIS-Rust-runtime`, |
| 25 | +//! `EsriDevEvents/locup` — ArcGIS FeatureService **PBF** (binary, no-JSON) + `ESRI_crs` |
| 26 | +//! - `staehlli/3D-settlement-development` — a real 3DGS scene for fixtures |
| 27 | +//! - Inria `.ply` via ndarray `splat3d::ply` — first reference render for the oracle |
| 28 | +//! |
| 29 | +//! ## Module map (12 slots — `///` commented scaffold ONLY until reviewed live |
| 30 | +//! by Opus + CodeRabbit/Codex) |
| 31 | +//! | module | group | purpose | |
| 32 | +//! |---|---|---| |
| 33 | +//! | [`tileset`] | A | 3D Tiles `tileset.json` / `.3tz` parse (cold import) | |
| 34 | +//! | [`implicit_tiling`] | A | subtree availability bitstreams + Morton/Z-order | |
| 35 | +//! | [`khr_gs`] | A | KHR_gaussian_splatting glTF parse (POSITION/ROTATION/SCALE/COLOR_0/SH_DEGREE_n) | |
| 36 | +//! | [`arcgis_pbf`] | B | ArcGIS FeatureService **PBF** ingestion (binary, the no-JSON path) | |
| 37 | +//! | [`spz`] | B | `KHR_gaussian_splatting_compression_spz` decode (quantize+gzip) | |
| 38 | +//! | [`esri_crs`] | B | `ESRI_crs` WKID (h+v) reproject → WGS84 / local-origin | |
| 39 | +//! | [`to_cam_soa`] | C | reverse-engineer parsed splats → CAM SoA (`GaussianBatch` + `cam_pq`) | |
| 40 | +//! | [`sse`] | C | screen-space-error LOD selection (`geometricError·viewportH/(dist·2tan(fovy/2))`) | |
| 41 | +//! | [`hlod`] | C | HLOD tree + refine ADD·REPLACE | |
| 42 | +//! | [`point_fallback`] | D | point-cloud fallback (KHR base extension = point primitives) | |
| 43 | +//! | [`oracle`] | D | reference-render invocation + SSIM/PSNR diff vs `splat3d` | |
| 44 | +//! | [`fixtures`] | D | golden scenes + parity gates | |
| 45 | +
|
| 46 | +pub mod tileset; |
| 47 | +pub mod implicit_tiling; |
| 48 | +pub mod khr_gs; |
| 49 | +pub mod arcgis_pbf; |
| 50 | +pub mod spz; |
| 51 | +pub mod esri_crs; |
| 52 | +pub mod to_cam_soa; |
| 53 | +pub mod sse; |
| 54 | +pub mod hlod; |
| 55 | +pub mod point_fallback; |
| 56 | +pub mod oracle; |
| 57 | +pub mod fixtures; |
0 commit comments