TRELLIS.2 / Pixal3D DINOv3 Loader ⚡
The Image Encoder Both 3D Pipelines Quietly Stand On
- clip_vision
Every image-to-3D model has a moment where a 2D picture becomes tokens. In TRELLIS.2 and Pixal3D that moment is DINOv3 - a ViT-L/16 image encoder whose features condition the flow transformer. This node loads it as CLIP_VISION, which is ComfyUI's existing type for exactly this job, and hides the fact that you're doing 3D at all.
What it's for
You don't reach for this node because you want a DINOv3 embedding to look at. You reach for it because core's Trellis2 Conditioning (and its Pixal3D sibling) has a clip_vision-shaped socket and it will not run without one. One node, both pipelines, and the second dropdown is where the two diverge.
The two inputs
dinov3- thefacebook/dinov3-vitl16-pretrain-lvd1689mmodel.safetensors, in upstream Hugging Face layout, not a ComfyUI repack. The loader hands it tocomfy.clip_vision.load_clipvision_from_sd, so if ComfyUI doesn't recognise the architecture you get told so instead of a silent empty object.naf- the NAF upsampler weights (naf_release.pthfromvaleoai/NAF). Optional, and the tooltip spells out the rule: required by Pixal3D Conditioning, unused by TRELLIS.2. Onnoneyou get no upsampler and TRELLIS.2 doesn't care.
Under the hood the NAF tensors are renamed with a naf. prefix and merged into the same state dict before loading, then the node checks the resulting object actually has an upsampler attached. If you handed it a file that isn't NAF, it says "NAF weights … were not loaded" rather than quietly conditioning Pixal3D at the wrong resolution. That's the kind of check that saves you an hour of suspecting the sampler.
One output: clip_vision. Straight into the conditioning node. That's it - this loader has no sampling settings, no precision widget, nothing to tune.
Files and folders
Dropdowns are filename-filtered: dinov3 lists .safetensors files with "dino" in the name, naf lists .pth/.pt/.safetensors with "naf" in the name. Both scan models/trellis2/ and models/pixal3d/.
The practical layout from the README: either HF repo's extras/{birefnet,dinov3-vitl16,moge-2-vitl} goes under models/pixal3d/extras/, and naf_release.pth goes in models/pixal3d/naf/. The upstream sidecar lets torch.hub drop NAF into ~/.cache/torch/hub/checkpoints/, which this node will not find - the dropdown only looks in the model folders, so move it.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
pip install --upgrade gguf
Or ComfyUI Manager, search "ComfyUI-GGUF-Loader", restart. gguf is the only hard dependency this loader touches, even though the pack's requirements file pulls a longer list for the other node families.
The traps
Picking none for dinov3 on a fresh install. Both dropdowns fall back to a single none entry when nothing matches the name filter, so an empty-looking dropdown usually means an empty folder - or a file whose name doesn't contain "dino" or "naf". Renaming model (1).safetensors to something sensible fixes more of these than any setting.
Trying to run Pixal3D without NAF. TRELLIS.2 works fine with naf on none. Pixal3D Conditioning does not - it expects the upsampled features, so leaving NAF out is a quality-and-shape problem, not a cosmetic one. The README is blunt about it: Pixal3D needs the NAF upsampler, and without it the DINOv3 loader still works for TRELLIS.2.
Expecting a safetensors→GGUF quant option. There isn't one here. DINOv3 ViT-L isn't the part of the pipeline eating your VRAM; the flow DiTs are, and those are quantized in the Model Loader instead.
Also worth knowing if you're new to this corner of ComfyUI: the whole per-stage file dance exists because core's TRELLIS.2 nodes assume merged Comfy-Org checkpoints. You're not doing anything unusual, you're just holding the split release - and the payoff is the same one GGUF gave image models: a competent 3D model running on hardware that shouldn't have any business with it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| dinov3 | COMBO | facebook/dinov3-vitl16-pretrain-lvd1689m model.safetensors (upstream Hugging Face format). | |
| naf | COMBO | valeoai/NAF upsampler weights (naf_release.pth) - required by Pixal3D Conditioning, unused by TRELLIS.2. none = no upsampler. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip_vision | CLIP_VISION | — |