Nodes/ComfyTV/Load 3D Model
ComfyUI Node

Load 3D Model

Load 3D models into ComfyTV and bind materials to individual mesh parts

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Load 3D Model
  • materials
  • model
  • image
project_id
parent_output_id0
material_bindings
captured_image
model

If the 3D Model Stage generates meshes, Load 3D Model is the stage that pulls a mesh you already own into the canvas. It's an Input stage - no Run button, no GPU - which makes it the ComfyTV equivalent of the core Load Image node, except your files come from ComfyUI/input/3d and the preview lets you orbit the result and bind materials onto it.

You pick a model from the model dropdown (the card's thumbnail dropdown carries the server-side file list), and the snapshot becomes the output immediately. Supported formats: GLB, GLTF, FBX, OBJ, PLY, SPZ, SPLAT, KSPLAT - which is most of what a 3D pipeline produces these days, covering both classic meshes and gaussian splats.

What makes it more than a file opener

Two things, both worth knowing before you wire one in:

The orbit preview. The node embeds a 3D viewport so you can actually look at the model before sending it downstream. The captured_image input is the /view? URL of whatever the preview was showing, and it becomes the image output - a free thumbnail for storyboards or image stages, exactly like the snapshot the 3D Model Stage emits.

Material binding. Wire materials in via the autogrow materials slots, and the node lets you bind each material onto individual mesh parts by clicking - the part-binding UI raycasts the part you click and writes a mesh-part key → material input slot map into material_bindings. That's the bridge between a plain mesh and the pack's Material stage: you can have the body and the armor of the same character wearing different PBR materials, without splitting the mesh in an external editor first. This is one of those ComfyTV features that sounds like a nicety and turns out to be the reason you don't reach for Blender mid-workflow.

The schema, translated

Most of the required inputs are ComfyTV plumbing (project_id, parent_output_id) or internally written (material_bindings, captured_image). The two you actually touch:

  • model - the picker (COMBO). Files come from ComfyUI's input/3d folder; drop a GLB in there and it shows up.
  • materials - autogrow slots for material snapshots from a Material stage or other upstream producer.

Outputs are model (COMFYTV_MODEL) and image (COMFYTV_IMAGE). Wire model into Scene3D, Mesh Op, or a generation stage that accepts reference models; image is your flat preview.

Install and the usual caveats

Same pack install as everything else in ComfyTV:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI. On Desktop/macOS, clone into the running instance by absolute path and verify custom_nodes/ComfyTV/__init__.py is at the top level; a browser refresh is not a restart. No extra Python dependencies to chase.

The main gotcha is the source folder: models must live under ComfyUI/input/3d or the picker won't see them. Drop them anywhere else and you'll swear the node is broken when it's actually just looking in the wrong drawer. And remember the pack-wide rule - these are project snapshots, not native ComfyUI tensors, so native 3D nodes on the same graph need a Bridge node between them.

CategoryComfyTV/Input

Inputs (6)

NameTypeDefaultDescription
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
materialsCOMFY_AUTOGROW_V3
material_bindingsSTRINGInternal — JSON map of mesh-part key → material input slot, written by the part-binding UI in the node body.
captured_imageSTRINGInternal — /view? URL of the preview-viewport snapshot. Written by the 3D preview in the node body; becomes the `image` output.
modeloptCOMBOInternal — input/3d-relative path of the picked model. Driven by the card's thumbnail dropdown; options carry the server-side file list.

Outputs (2)

NameTypeDescription
modelCOMFYTV_MODEL
imageCOMFYTV_IMAGE