4DAnyone Load View
Look at one camera angle before you spend hours training
- views
- images
- camera_info
The generator finished and the console says it made 32 views. Great - but are they any good? A contact sheet of 32 tiny tiles will tell you whether something went wrong; it will not tell you whether the back of the head is a smear of noise, because at 200 pixels wide everything looks fine. Load View is the node you reach for when you want one angle at full resolution.
What it does
It takes the views bundle Generate Views produced and decodes one video out of it into a ComfyUI IMAGE batch - the whole clip, all frames, at whatever resolution the generator wrote. Wire that into Preview Image to scrub it, or into Create Video to watch it, or into a Save node if you want the raw generated view on disk.
There are two sources, and both are genuinely useful:
generatedgives you one of the invented camera angles.skeletongives you the skeleton conditioning video for the same index - the pose SAM 3D Body estimated from your input clip. ComfyUI's own splat previews and the skeleton render are different things, and when a view comes out with an arm in the wrong place, seeing the pose the generator was conditioned on is how you work out whether the pose was wrong or the generation was.
The camera_info output is a plain string naming the view: its yaw and pitch from the generation's camera metadata, plus the filename. It's not a camera socket - nothing downstream consumes it as one. Read it, log it, or stick it in a note.
The three inputs
views from Generate Views. view_index picks which one - 0 upward, capped at 143 in the UI, which is roomier than any preset (the largest stock preset is 48 views) but covers hand-built custom ring layouts. Either way, if you ask for an index past the end, the node raises rather than silently wrapping, and the error tells you the valid range. source is the generated / skeleton switch described above.
The camera_info string uses ? for yaw and pitch when the index has no entry in the camera metadata - which happens when the views bundle was written without cameras.json. It still loads fine.
Installing it
Same pack, same two steps:
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 use ComfyUI Manager and search for "ComfyUI-SplatKit". This node itself is light - it decodes video through PyAV, which ComfyUI already ships - but it needs an existing views bundle, so you'll have installed the backend and the 4DAnyone weights anyway. There's nothing to download for Load View specifically.
When it breaks
- "The views bundle has no skeleton videos." You asked for
source: skeletonon a result that didn't store them. Switch back togenerated, or regenerate. - "view_index N out of range (0..M-1)." You're picking from a preset that made fewer views than you assumed. The camera preset you ran tells you the count: 16, 24, 32 or 48.
- Silent frame-rate weirdness. The batch is whatever frames exist in the generated mp4. If you set
target_fpson Generate Views, that's the rate you're looking at - don't compare a downsampled view against your original 60fps source and conclude the timing drifted. - Memory. You just loaded a full-resolution video into a ComfyUI IMAGE batch. A 48-view job decoded one view at a time is fine; queueing several Load View nodes that each hold thousands of frames is how you find your RAM ceiling.
The workflow this node fits is the cheap loop: validate the clip, generate views once, then eyeball a couple of angles - one facing, one from behind - before committing to exporting 121 frames and training a splat per frame.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| views | SPLATKIT_4DANYONE_VIEWS | — | |
| view_index | INT | 00–143 | — |
| source | COMBO | generated | 2 options: generated, skeleton |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| camera_info | STRING | — |