Skip to content

Epic 147: OGC 3D Tiles 1.1 point-cloud tileset export - #103

Merged
rsasaki0109 merged 1 commit into
mainfrom
agent/epic147-tiles3d
Aug 6, 2026
Merged

rsasaki0109 merged 1 commit into
mainfrom
agent/epic147-tiles3d

Conversation

@rsasaki0109

Copy link
Copy Markdown
Owner

Summary

Adds the interchange-tiles3d feature to spatialrust-interchange for deterministic OGC 3D Tiles 1.1 point-cloud tileset export. This differentiates SpatialRust from potree/PDAL/Open3D by letting any 3D Tiles runtime (CesiumJS, digital-twin hosts) stream SpatialRust point clouds directly.

Deliverables (Epic 147)

  • 147A pnts binary codec: 28-byte header, feature-table JSON, POSITION/RGB/RTC_CENTER, 8-byte-aligned padding, strict validation, exact round-trip decode.
  • 147B validated tileset.json model: asset 1.1, geometric error, box bounding volumes, refine, content URIs, children, 64-level nesting bound.
  • 147C deterministic octree tileset builder with point budgets, per-tile RTC_CENTER recentering (f32 precision), halving internal geometric error, leaf zero error, and a byte/point/tile write receipt.
  • 147D facade interchange-tiles3d feature, tiles3d_export example (PCD → voxel → tileset), and tiles3d_smoke end-to-end test.

Contract

  • Codec stays dependency-free (no spatialrust-core, serde, or GPU backend); public APIs take &[f32]/optional &[u8].
  • Owned host memory only; no hidden host/device copy.
  • Fixed octant bit order gives deterministic trees for identical input/options.

Verification

  • cargo test -p spatialrust-interchange --features tiles3d — 20 tests
  • cargo test -p spatialrust --features "interchange-tiles3d io-pcd" --test tiles3d_smoke
  • clippy -D warnings clean for both crates; cargo fmt --all --check clean
  • Manual run: 400k-point PCD → 8 tiles / 399,989 points

Add the interchange-tiles3d feature with a dependency-free pnts codec,
a validated tileset.json model, and a deterministic octree tileset
builder. Tiles store positions relative to a per-tile RTC_CENTER to
preserve f32 precision, internal geometric error halves per level, and
leaves carry zero error. The facade re-exports the surface and the
tiles3d_export example converts a PCD through voxel downsample into a
tileset consumable by any 3D Tiles 1.1 runtime.
@rsasaki0109
rsasaki0109 merged commit 5fcaac6 into main Aug 6, 2026
101 checks passed
@rsasaki0109
rsasaki0109 deleted the agent/epic147-tiles3d branch August 6, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant