1 pointby e8bai11 hours ago1 comment
  • e8bai11 hours ago
    Hi HN,

    I built a web-based Gaussian Splat viewer that supports camera path recording and deterministic MP4 export.

    The viewer loads .ply / .splat scenes and allows users to:

    - Record camera keyframes (position + quaternion rotation) - Edit them in a draggable timeline - Scrub preview in real time - Export the animation to MP4

    The export system renders offscreen frames using a dedicated WebGLRenderTarget and pipes raw frames to FFmpeg on a Node server.

    A few design decisions that might be interesting:

    • Keyframes are stored as immutable snapshots (vec3 + normalized quaternion). • Interpolation uses slerp to avoid rotation artifacts. • Paths can be saved to path.json and re-exported to produce identical output. • Export rendering is isolated from the visible canvas to avoid layout thrashing and UI jitter. • Added cancellation + progress reporting without corrupting partially written video files.

    One challenge was GPU → CPU readback cost during frame extraction. Another was ensuring deterministic replay when the interactive viewer state differs from export state.

    I’d appreciate feedback on: - Cleaner patterns for deterministic rendering in WebGL - Better ways to pipeline frame encoding - Architectural improvements for separating editor vs render state

    Repo: https://github.com/iab131/Scene-Gaussian-Splat-Viewer Demo: https://youtu.be/EPXJpeUkBSA