Skip to content

simreaney/Triptych360

Repository files navigation

Triptych360 Banner

Triptych360 - 360 Media + 3D Video Wall Controller

Triptych360 is a Python application built with PySide6 and ModernGL that takes a 360-degree equirectangular image/video or a 3D point-based model and projects it in real-time onto multiple windows for immersive viewing. Flexibly switch between 2-screen (Front & Right) or 3-screen (Left, Front & Right) configurations. The projection mapping is entirely GPU-accelerated using GLSL fragment shaders, making it highly performant and capable of decoding high-framerate videos smoothly.

Features

  • GPU-Accelerated: Fast real-time Equirectangular to Rectilinear conversion.
  • Flexible Display Modes: Switch between 2-screen (Front & Right adjacent views) or 3-screen (Left, Front & Right triptych) configurations.
  • Adjustable Aspect Ratios: Choose between Window (dynamic), 1:1 Square, or 16:9 Widescreen projection formats.
  • Video Playback: Native support for auto-looping 360 videos (.mp4, .mkv, .avi, .mov) via OpenCV.
  • 3D Model Support: Load LiDAR point clouds from .las / .laz and Gaussian splats from .ply / .splat.
  • Multi-Window Display & Kiosk Mode: Automatically opens multiple view windows. Check the "Kiosk Mode" box to make them frameless and smoothly lock onto your monitors. The projection math cleanly aligns edges for seamless multi-screen layouts.
  • Interactive Unified Controller: Use your mouse to rotate and zoom across all display outputs instantly.
  • 3Dconnexion SpaceMouse Support: Move around your panoramas smoothly using native SpaceMouse integration.
  • Auto-Panning Idle Animation: If the system is left untouched for 5 seconds, it will automatically slowly pan around the scene to attract an audience.
  • Config & State Saving: The app will remember your last loaded video, rotation and zoom levels, window preferences, screen count, and aspect ratio mode on next launch.

Setup

  1. Create a Python virtual environment and activate it:

    python -m venv venv
    source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
  2. System Dependencies (macOS for SpaceMouse): If you plan to use a 3Dconnexion SpaceMouse, ensure the HID library is installed globally on your machine:

    brew install hidapi
  3. Install python dependencies:

    pip install -r requirements.txt

Supported File Types

  • 360 Media
    • Images: .png, .jpg, .jpeg
    • Videos: .mp4, .mkv, .avi, .mov
  • 3D Data
    • LiDAR point clouds: .las, .laz
    • Gaussian splats: .ply, .splat

Usage

  1. Launch the application:

    python triptych360.py
  2. Load Media:

    • A controller window will appear. Click "Load Media / 3D Model".
    • You can test with the provided sample_equirectangular.jpg or load any supported video/image/3D file (.las, .laz, .ply, .splat).
    • Three new windows will open showing the Left, Front, and Right segments of the media.
  3. Navigate & Control:

    • Mouse: Click and drag inside the main controller window to pitch and yaw around the scene. Use the Scroll Wheel to fine-tune the Zoom (Field of View).
    • SpaceMouse: Twist or tilt the controller knob to smoothly pan and look around.
    • Idle: Just let go! After 5 seconds, the view begins auto-panning automatically.
  4. Display Configuration:

    • Screens: Choose between 2-screen (Front & Right) or 3-screen (Left, Front & Right) mode to match your display setup.
    • Aspect Ratio: Select Window (dynamic based on window size), 1:1 Square, or 16:9 Widescreen projection format.
  5. Kiosk Mode & Saving State:

    • Check the Kiosk Mode checkbox to drop all window borders and auto-snap windows to multiple monitors.
    • When you close the app, all settings (media, position, zoom, screen count, aspect ratio, and kiosk preference) are saved to config.json and automatically restored on next launch.

Generating a Test Image

If you want to generate a new calibrated test grid, you can run:

python create_sample.py

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages