LoadPlySplat
Pull any 3DGS .ply file into ComfyUI
- splats
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.npzor.npysplat 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- pincudaif the default landed on CPU and rendering is crawling. - Save your work: the pack's SavePlySplat writes a
GSPLATback out tooutput/as.ply, so the round-trip (train elsewhere → load → process → save) is fully covered.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| splat_file | COMBO | Select a 3DGS .ply file to load from your input folder. | |
| deviceopt | COMBO | auto | 3 options: auto, cpu, cuda |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| splats | GSPLAT | — |