Load 3D (Advanced)
The mesh loader that doesn't render anything
- viewport_state
- model_3d
- model_3d_info
- camera_info
- width
- height
Load 3D (Advanced) is the quiet sibling. Where the plain Load 3D & Animation node is a 3D viewport that renders image, mask and normal passes, this one does almost nothing visual: it loads a mesh file and hands it to the rest of your graph as a raw model_3d object. If your workflow's goal is "get a mesh in, pass it to Preview 3D or Save 3D Model, done," this is the loader you actually want. You're not filming anything; you're moving data.
It's part of ComfyUI core, in the "3d" category - nothing to install. It's also new: the whole "advanced" 3D family (this, Preview 3D Advanced, Preview Splat, Preview Point Cloud) landed around June 2026, so treat it as freshly minted and still being stabilized.
What it actually does
You pick a file, it wraps it as a FILE_3D object and passes it downstream along with its metadata and a camera. That's it. The mesh formats it accepts are the classic ones - .gltf, .glb, .obj, .fbx, .stl - which is the main difference from the regular Load 3D node, which also takes splat and point-cloud formats. This one is deliberately mesh-only, and the files live in ComfyUI/input/3d/ just like the regular loader.
The viewport_state input (a LOAD_3D socket) is the same embedded 3D viewer widget you get on the other loader, but here it isn't producing renders. It's carrying camera state and model info forward, which matters when you chain this into a preview node that wants to show the model at a specific angle. The width and height (default 1024×1024) just pass through - they become the render resolution if a downstream preview uses them.
Inputs and outputs
- model_file - the dropdown of meshes in
input/3d/. Set it to "none" and you'll get an empty model; you can still drag-and-drop a mesh straight onto the viewport, same as the regular loader. - viewport_state - the viewer widget. Ignore it if you don't care about camera angle.
- width / height - passthrough resolution.
Outputs are the pipeline-friendly set: model_3d (the FILE_3D object), model_3d_info (metadata), camera_info (the viewport's camera), and width/height. That first output is the one you'll wire into Preview 3D Advanced or Save 3D Model.
The trap
The trap is choosing the wrong loader. People reach for the regular Load 3D because it has the pretty viewport, then get confused about why their pipeline wants model_3d and they only have image/mask/normal outputs to offer. Reverse it: if a node downstream asks for a FILE_3D socket, feed it from this node. If you need renders of the model, use the viewport loader. The two exist because the 3D node family split - preview-style nodes want files, render-style nodes want images - and this one is the file side.
Also note the "Advanced" in the name is about the file-passing architecture, not about you needing to be advanced. It's actually the simpler node to use. The only genuinely fiddly bit is remembering that it won't show you a pretty preview on its own - that's what the Preview nodes are for.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model_file | COMBO | 1 options: none | |
| viewport_state | LOAD_3D | — | |
| width | INT | 10241–4096 | — |
| height | INT | 10241–4096 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model_3d | FILE_3D | — |
| model_3d_info | LOAD3D_MODEL_INFO | — |
| camera_info | LOAD3D_CAMERA | — |
| width | INT | — |
| height | INT | — |