Skip to content

Evaluate Potree-Next vs extending RUXP streaming for LOD point cloud rendering #321

Description

@pfmephisto

The GUI viewport currently streams point clouds via RUXP binary paging but has no spatial level-of-detail — a 10M-point scan either loads in full or is truncated to a prefix. Two competing approaches exist; this issue tracks the evaluation of Potree-Next as one candidate.

Context

The rux GUI frontend (apps/rux/frontend) renders point clouds with a custom Three.js scene (src/viewport/PointCloudScene.ts). Points arrive from ruxd as streamed RUXP v1 binary pages (/clouds/{name}/points), decoded client-side and appended to a THREE.Points geometry per page. This works well for moderate clouds but gives a viewport full of nothing (or a prefix slice) for large scans.

Current state

Scope

Potree-Next converts a point cloud into an octree tile tree of .potree chunk files served from a static directory. The browser fetches only the tiles that intersect the current camera frustum at the appropriate LOD level — providing immediate coarse previews of arbitrarily-large clouds with no per-request server compute.

The evaluation should answer:

  1. Feasibility — can .rux clouds be exported to the Potree format at create clouds time (or on demand)? What is the conversion cost and storage overhead?
  2. Serving model — Potree tiles are static files; RUXP pages are dynamic queries. Can ruxd serve tile trees alongside its existing API, or does this require a separate static file server?
  3. Recommendation — is Potree-Next the right fit, or is extending the existing RUXP approach (Morton ordering + max_points, per Voxel LOD for /clouds/{name}/points (and Draco as a stretch) #320) sufficient and less disruptive? Produce a concrete decision with measured tradeoffs.

If Potree is deemed feasible and superior, follow-up issues should be filed covering: converter integration, ruxd tile-serving, and replacing PointCloudScene.ts's paging model with Potree-Next's PointCloudOctree.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    workstream: guiAnchor #265 — rux gui web frontend + backend

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions