Nodes/camera-comfyUI/LoadPlySplat
ComfyUI Node

LoadPlySplat

Pull any 3DGS .ply file into ComfyUI

By Alexankharin·Created about a year ago·Updated about a month ago· 36
LoadPlySplat
    • splats
    splat_file
    deviceauto

    Every 3D Gaussian Splatting tool in the world exports .ply files - that's the universal format for a trained splat cloud, the thing you get out of a standard 3DGS fit or a Scaniverse capture or a friend's reconstruction. LoadPlySplat is the door that lets those files walk into ComfyUI: pick a .ply from your input folder and out comes a GSPLAT object ready for every splat node this pack has.

    It's the file-I/O sibling of ImageToSplat. Where ImageToSplat predicts splats from a photo, LoadPlySplat just reads them - which makes it the node for the workflow "someone trained a decent 3DGS of the space, now I want to render it from my own camera path in ComfyUI." RenderSplat, RotateSplats, FuseSplats, and the 4D builders all eat the GSPLAT type, so a loaded file plugs into the whole toolkit.

    How it works

    The splat_file input is a dropdown populated from .ply files in ComfyUI's input/ folder (it has a file chooser too). Drop your .ply into ComfyUI/input/, refresh the node, select it. There's an optional device (auto/cpu/cuda) for where the splat tensors land.

    The loader reads the standard 3DGS vertex attributes - x, y, z position plus the covariance/color features a trained splat carries - and packs them into the pack's GSPLAT object. One catch to know: this is the trained 3DGS format, not a generic point cloud. If you've got a plain XYZ point cloud, that's LoadPointCloud's job (it reads .ply and .npy and hands you the (N,7) tensor type). Grab the wrong loader for the wrong file and you'll get a type mismatch downstream. The distinction between "a GSPLAT I can render" and "a point cloud tensor I can transform" is the pack's core type split, and every node lands on one side of it.

    Install

    Shared camera-comfyUI install: Manager → search "camera-comfyUI" → Install, or clone https://github.com/Alexankharin/camera-comfyUI into custom_nodes/ and run python install.py. Loading needs no gsplat and no SHARP - it's pure parsing. But keep in mind what you're loading for: rendering it with RenderSplat (the fast backend), fusing, or rendering via the 4D nodes does want gsplat present, so install.py should have run for the fun stuff.

    Troubleshooting

    • File doesn't appear in the dropdown: it's not in input/ (check the exact folder), or it doesn't end in .ply - this node lists only .ply, so .npz or .npy splat files won't show.
    • Load error on a known-good file: some exporters write non-standard PLY headers or extra attributes. If it's a point cloud rather than trained splats, use LoadPointCloud instead.
    • Loaded splats render but look wrong: check device - pin cuda if the default landed on CPU and rendering is crawling.
    • Save your work: the pack's SavePlySplat writes a GSPLAT back out to output/ as .ply, so the round-trip (train elsewhere → load → process → save) is fully covered.
    CategoryCamera/GSplat

    Inputs (2)

    NameTypeDefaultDescription
    splat_fileCOMBOSelect a 3DGS .ply file to load from your input folder.
    deviceoptCOMBOauto3 options: auto, cpu, cuda

    Outputs (1)

    NameTypeDescription
    splatsGSPLAT