Nodes/ComfyUI-SplatKit/Sequence Player
ComfyUI Node

Sequence Player

Orbit a moving gaussian splat inside the node

By mickmumpitz·Created about a month ago·Updated 2 days ago· 18
Sequence Player
  • sequence

    Most splat viewing gives you two options: a still preview of one file, or a render from a camera somebody fixed in advance. Sequence Player is the third one, and it's the one that actually tells you whether a sequence worked - a real splat renderer embedded in the node, pointed at your trained sequence, running while you drag the camera around it. The subject keeps moving underneath you and you get to walk around them.

    It sounds like a nicety. It isn't. Splats can look fine from the one angle they were trained from hardest and fall apart from the side, and a sequence can look fine at frame 30 and be full of floating debris by frame 90. Orbiting through the moving subject is how you catch both.

    How it works

    There's no rendering on your server. The node registers the sequence's splat/ folder behind a small HTTP route, keyed by a hash of the resolved path, and ComfyUI's frontend - using an embedded copy of the antimatter15 splat renderer, vendored into the pack under web/ - pulls the frames and renders them in the browser. The route only serves plain filenames from inside the registered folder, so it isn't a general file reader.

    That also explains the one hard requirement: the sequence must have playback files. Train Sequence writes a compact .splatsh copy alongside the full-SH .ply files, precisely so this node has something to stream. Load Sequence repairs missing or truncated playback files if it finds them; if you never trained, there's nothing to play.

    The controls are the standard set, and once you know them the node is genuinely pleasant:

    drag         orbit
    right-drag   pan
    wheel        zoom
    space        play / pause
    arrows       step a frame
    F            reset the view
    

    Inputs and outputs

    sequence in, and that's the whole schema - no outputs at all. It's an output node; queue it and it draws itself.

    The reason to keep it in the graph permanently is that it's the fastest feedback loop you have. Change a training setting, re-run, and the player re-registers the new folder on the next queue; you're looking at the new sequence in seconds, from any angle.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/mickmumpitz/ComfyUI-SplatKit
    python_embeded/python.exe -m pip install -r ComfyUI-SplatKit/requirements.txt
    

    Restart, or ComfyUI Manager → "ComfyUI-SplatKit". Two things have to be in place for the node to work at all: the pack's web/ assets served by a current ComfyUI (0.34 or newer), and the aiohttp route registration, which uses ComfyUI's own PromptServer. Both are already there in a normal install. To have a sequence worth playing, you need the isolated backend installed via installer.bat from the GitHub Releases page.

    When it breaks

    • "No playable sequence in … Train writes one there." The folder has ply/ but not the splat/ playback copy. Load Sequence pointed at the same folder will rebuild it; do that first, then re-queue the player.
    • "The SplatKit player route did not register. Restart ComfyUI." The route is registered at import time. If it failed - usually a server or aiohttp import problem, or a reload quirk - a restart fixes it.
    • A black node with no controls. Usually the browser side: hard-refresh the ComfyUI tab. The pack is built so a failed frontend script degrades gracefully - the rest of the graph still runs - but this node's entire UI is javascript, so there's nothing to fall back to.
    • Choppy playback on a long sequence. The player streams the compact .splatsh frames, one per sequence frame; 121 frames of a dense splat is a lot of data to hold in a browser tab. Drop the frame range you trained if you're only inspecting, or step through with the arrows instead of playing.
    • Accessing the server from another machine. The route serves from a token registered in that process, so the browser has to be looking at the same ComfyUI instance that trained the sequence. Loading an old workflow on a second machine and pressing play shows you nothing, even though the node looks fine.
    CategorySplatKit/Splatting

    Inputs (1)

    NameTypeDefaultDescription
    sequenceSPLATKIT_SEQUENCE

    Outputs (0)

    No outputs