You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Issue Voxel LOD for /clouds/{name}/points (and Draco as a stretch) #320 ("Voxel LOD for /clouds/{name}/points") is open and in-progress: it proposes server-side voxel-grid downsampling via a max_points query parameter, and considers precomputing a Morton/octree ordering so paging and LOD collapse into one mechanism.
No Potree integration exists; the frontend has no .potree tile consumer.
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:
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?
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?
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.
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 fromruxdas streamed RUXP v1 binary pages (/clouds/{name}/points), decoded client-side and appended to aTHREE.Pointsgeometry per page. This works well for moderate clouds but gives a viewport full of nothing (or a prefix slice) for large scans.Current state
max_pointsquery parameter, and considers precomputing a Morton/octree ordering so paging and LOD collapse into one mechanism..potreetile consumer.Scope
Potree-Next converts a point cloud into an octree tile tree of
.potreechunk 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:
.ruxclouds be exported to the Potree format atcreate cloudstime (or on demand)? What is the conversion cost and storage overhead?ruxdserve tile trees alongside its existing API, or does this require a separate static file server?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,
ruxdtile-serving, and replacingPointCloudScene.ts's paging model with Potree-Next'sPointCloudOctree.Related
max_pointsparameter — the competing approach; this evaluation should either complement or supersede it