Splat Perceptual Model Loader
The missing VGG-19, and why your file won't show up
- perceptual_model
If you've come from image or LoRA training, "perceptual loss" is the familiar phrase: instead of comparing your render to the target pixel by pixel, you push both through a pretrained network and compare the feature maps, which punishes blur and rewards structure. It's what makes a reconstruction look crisp rather than merely close, and it's the same idea here. Train Sequence needs a perceptual model, it's a VGG-19, and this node is how you point at it.
One difference from the ecosystem you're used to: the trainer is not ComfyUI. Training runs in SplatKit's isolated Python 3.11 / torch 2.8.0 / CUDA 12.8 environment, so the weights are a file path handed to a subprocess, not a ComfyUI CLIP or MODEL object. The output socket is perceptual_model, a SPLATKIT_PERCEPTUAL_MODEL, and the only thing that accepts it is Train Sequence.
Why the dropdown is usually empty
This is the part that catches people, so here it is plainly. The node registers a model folder key called splatkit_perceptual pointing at ComfyUI/models/splatkit/4danyone/, then lists the .safetensors files in it whose filename contains "vgg". That's it. No recursive scan, no fuzzy match, no fallback.
So:
- If the folder doesn't exist, the dropdown has zero entries and the node has nothing to offer. Create it.
- If you downloaded the file and renamed it to something friendlier, it disappears from the list.
- If it isn't
.safetensors, it isn't listed. - If you dropped it in
models/splatkit/instead ofmodels/splatkit/4danyone/, it isn't listed.
The file the pack documents is imagenet-vgg-verydeep-19-conv.safetensors, from a pinned revision of the AntResearch/4DAnyone model repo, and the link is in the pack's docs/4DANYONE.md. Keep the name as shipped and you'll never hit any of the above.
Two supporting facts while you're here: nothing in this pack downloads weights automatically, and VGG-19 is only needed for training. Generation alone doesn't touch it, so if you're only running Generate Views, you can leave this node out of the graph entirely.
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 use ComfyUI Manager (search "ComfyUI-SplatKit"). Then put the VGG-19 weights in ComfyUI/models/splatkit/4danyone/ and refresh ComfyUI's model lists - the folder scan happens through ComfyUI's folder_paths, so a file copied in while the server is running won't appear until it re-scans. And install the isolated backend via the installer.bat bundle from the GitHub Releases page; this node will happily select a model on a machine that has no backend, and then Train Sequence will tell you the truth.
If your models live somewhere else, extra_model_paths.yaml accepts a splatkit_perceptual key - that's the same registration this node performs, so a custom root works as long as the key name matches.
When it breaks
- "Select installed VGG-19 weights in Splat Perceptual Model Loader. See docs/4DANYONE.md." The selection resolved to nothing. Almost always: the file is named without "vgg" in it, it's in the wrong folder, or ComfyUI hasn't re-scanned.
- "Perceptual weights not found: <path>." The dropdown remembered a selection from a file that's since moved or been deleted. Re-pick it.
- Train Sequence refuses to start. Its error is explicit - "Connect Splat Perceptual Model Loader and select VGG-19 weights" - and it fires before anything expensive happens, which is the version of this problem you want.
- Mixed-up file. A random
.safetensorsfrom another workflow with "vgg" in the name will be selectable and will then fail in the backend. There's one file this pack expects; don't improvise.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| perceptual_model | SPLATKIT_PERCEPTUAL_MODEL | — |