ComfyUI Node

Preview Gaussians

Preview Gaussians — the viewer this whole pack is built around

By PozzettiAndrea·Created 4 months ago·Updated 8 days ago· 6
Preview Gaussians
      ply_path
      camera_modeorbit
      fov_degrees70
      rendererplaycanvas
      transport_formatply

      Every other node in the GaussianPack family exists to make, fix, or shrink a gaussian splat. Preview Gaussians is the payoff: an interactive WebGL viewer that renders your splat right in the ComfyUI canvas. The README for this pack literally describes it as "one node, Preview Gaussians" - it's the flagship, the reason the pack got forked in the first place. Feed it a PLY path and you get a turntable you can spin with the mouse.

      The pack's GitHub repo is ComfyUI-TurntableGSViewer but the code self-identifies as "GaussianPack" everywhere else - same author who maintains ComfyUI's HyWorld2 and TRELLIS.2 wrappers. Structurally it's forked from the older comfyui-PlyPreview, but it's grown well past that.

      What you get

      A viewer pane with two camera modes:

      • orbit (default) - trackball turntable. Drag to orbit, scroll to zoom. The "I just want to look at my scene" mode.
      • spectate - WASD fly-cam. Wander around inside the scene; the mode you want once you're inspecting structure rather than admiring it.

      Two renderers, and they're meaningfully different:

      • playcanvas (default) - the PlayCanvas Engine v2.19 GSplat renderer. Uses WebGPU when available and falls back to WebGL2; it's the one to keep for large scenes (5M+ splats) where frame rate matters.
      • spark - a Three.js + WebGL2 renderer with the best SH3 fidelity, and it auto-detects all the container formats: PLY, compressed.ply, SPZ, KSPLAT, SOG, SPLAT.

      The transport_format decision

      This is where people actually get value (or confusion). The viewer can receive the scene as:

      • ply (default) - lossless float32. For a 1M-splat SH3 scene that's ~225 MB down the wire, which can hang your browser on a slow connection - but every view-dependent highlight survives bit-perfect.
      • spz - the server transcodes the PLY to SPZ v2 once and caches it next to the source file. Roughly 9x smaller (~25 MB), but SH2/SH3 coefficients quantize to 4 bits each, which flattens specular highlights.

      So: previewing over a slow link or with a huge scene, pick spz; judging shiny surfaces, pick ply. The SPZ path needs Node.js on the server - if the viewer silently falls back to a slow PLY download, that's why.

      The other inputs are just ply_path, camera_mode, and fov_degrees (vertical FOV, default 70°). It's an output node with no outputs - it exists to be looked at.

      Installing it

      cd ComfyUI/custom_nodes
      git clone https://github.com/PozzettiAndrea/ComfyUI-TurntableGSViewer.git
      cd ComfyUI-TurntableGSViewer
      pip install -r requirements.txt --upgrade
      python install.py
      

      Restart ComfyUI. Or ComfyUI Manager → search "GaussianPack". Watch for the experimental comfy-env installer - it downloads the pixi package manager on first install, which surprises everyone the first time. No model weights needed; sample scenes land in input/ automatically.

      Where it fits

      Wire it after a LoadPLY / LoadPLYOutput, after a GaussianMerge decimation to sanity-check the result, or after a TransformGaussian to verify orientation. If you need the scene rendered to an actual IMAGE tensor (for video, save, or further processing) rather than an interactive viewport, that's PreviewGaussianCamera's job - this one is for looking, and it's the best-looking way to do it.

      Categoryviewer

      Inputs (5)

      NameTypeDefaultDescription
      ply_pathSTRINGPath to a Gaussian Splatting PLY file
      camera_modeCOMBOorbitorbit - trackball turntable camera. spectate - WASD fly-cam.
      fov_degreesFLOAT705–170Vertical field of view in degrees
      rendererCOMBOplaycanvasplaycanvas - PlayCanvas Engine v2.19 GSplat renderer. WebGPU when available, WebGL2 fallback. Good performance on large scenes (5M+ splats). spark - Three.js + WebGL2. Best SH3 fidelity, auto-detects all formats (PLY, compressed.ply, SPZ, KSPLAT, SOG, SPLAT).
      transport_formatCOMBOplyply - lossless float32, ~225 MB for a 1M-splat SH=3 scene. Slow to download but every SH3 highlight is preserved bit-perfect from training. spz - server transcodes to SPZ v2 once and caches next to the PLY. ~9x smaller (~25 MB), but SH2/SH3 quantize to 4 bits each, which flattens specular highlights. Use when bandwidth matters more than view-dependent fidelity.

      Outputs (0)

      No outputs