Skip to content

Add point-cloud and Gaussian splat support to Triptych360#1

Merged
simreaney merged 3 commits into
mainfrom
copilot/add-support-3d-models
May 31, 2026
Merged

Add point-cloud and Gaussian splat support to Triptych360#1
simreaney merged 3 commits into
mainfrom
copilot/add-support-3d-models

Conversation

Copilot AI commented May 31, 2026

Copy link
Copy Markdown
Contributor

Triptych360 previously accepted only equirectangular images/videos. This change extends the app to load and render 3D point-based content from LAS/LAZ point clouds and Gaussian splat data (PLY/SPLAT), while preserving existing panorama/video behavior.

  • Rendering path for 3D datasets

    • Added a point-rendering mode in PanoViewWidget with dedicated GLSL shaders.
    • Introduced per-point position/color/size buffers and camera-driven MVP transforms for interactive view control.
    • Kept existing pano texture pipeline intact and mode-switched at runtime.
  • New model loaders

    • Added LAS/LAZ parsing via laspy (x/y/z, optional RGB).
    • Added Gaussian splat support from:
      • .ply vertex data (x/y/z, optional red/green/blue, f_dc_*, opacity, scale_*)
      • .splat binary records (position, scale, RGBA payload).
    • Normalized model coordinates to stable view space and mapped splat metadata to point size/alpha.
  • UI + media workflow updates

    • Expanded file picker filters to include *.las *.laz *.ply *.splat.
    • Updated controller copy to “Load Media / 3D Model”.
    • Unified interaction gates (scene_loaded) so drag/zoom/idle-pan/SpaceMouse work for both media and 3D scenes.
  • Dependencies + docs

    • Added laspy[lazrs] and plyfile to requirements.
    • Updated README to reflect 3D support, current UI labels, and supported format matrix.
path, _ = QFileDialog.getOpenFileName(
    self,
    "Open 360 Media / 3D Data",
    "",
    "Media & 3D (*.png *.jpg *.jpeg *.mp4 *.mkv *.avi *.mov *.las *.laz *.ply *.splat)"
)

if path_lower.endswith(('.las', '.laz')):
    points, colors, sizes = self._load_las_laz(path)
elif path_lower.endswith(('.ply', '.splat')):
    points, colors, sizes = self._load_gaussian_splats(path)

@simreaney simreaney marked this pull request as ready for review May 31, 2026 09:40
Copilot AI review requested due to automatic review settings May 31, 2026 09:40
@simreaney simreaney merged commit f3917d9 into main May 31, 2026
1 check passed
@simreaney simreaney deleted the copilot/add-support-3d-models branch May 31, 2026 09:40

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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.

3 participants