3D Model Param
The node that turns a GLB on your disk into a ComfyUI object
- model
Every scene in the Blender-in-ComfyUI pack starts the same way: with a model file somewhere on your disk that you want to stage, frame, and render. That's what this node is for. 3D Model Param points at a GLB, GLTF, FBX or OBJ file, lets you set where it sits, how it's rotated, and how big it is, then emits a MODELS object that the rest of the pack can build on.
How it works - and the one mental model to fix
The single most confusing thing about this pack is that MODELS is not mesh data. BL_Model_Param does not load vertices into the graph. It builds a small dictionary: the file path, a position tuple, a rotation tuple, a scale tuple, a name (taken from the filename), and a collection name. That dict is what travels on the wire. The actual geometry gets imported later, when BL_Scene_Composer runs Blender headless and tells it to open that file.
That's a feature, honestly. It means this node is pure bookkeeping - no Blender subprocess, no heavy import, runs in milliseconds. But it also means the "model" only becomes real when the composer touches the disk, and if the file's gone, nothing downstream works. Keep that in mind and this pack is easy to reason about.
Concretely, the node validates two things: the file must exist, and the extension must be one of .glb, .gltf, .fbx, .obj. Then it packages everything up.
The inputs that matter
- folder_type -
inputoroutput. This decides which ComfyUI folder the path resolves against: yourComfyUI/input/directory (default) orComfyUI/output/. Big gotcha:model_file_pathis relative to that folder, not an absolute path. Dropchair.glbintoinput/and enterchair.glb. - model_file_path - the file, relative to the folder above.
- position_x / y / z, rotation_x / y / z, scale_x / y / z - the transform for this instance. Rotation is in degrees; scale defaults to 1. This is where you'd place a second chair or flip something to face the camera.
- collection_name - defaults to
3D_Model. In the composed.blend, each model with the same collection name lands in one Blender collection (the composer auto-suffixes duplicates with_1,_2, … so they don't collide).
Wiring it up
The single model output (MODELS) flows two ways. The clean route: run two or three of these, feed them into a BL_Model_Merger, and let the merger hand the combined list to BL_Scene_Composer. You can also add a BL_Camera_Creator to the same merger if you want to frame the whole thing in one shot. The example workflow that ships with the pack does exactly this.
Installing it
This is one of seven nodes in the blender-in-comfyui pack, so the install is shared:
cd ComfyUI/custom_nodes
git clone https://github.com/JayLyu/blender-in-comfyui.git
ComfyUI Manager works too, but the pack shells out to Blender with subprocess, which ComfyUI blocks by default - start ComfyUI with --allow-subprocess or the Blender-backed nodes will silently fail. You'll also need Blender 4.4+, which the pack auto-downloads into its own blender/ folder on Windows and Linux (manual placement on macOS). No extra pip packages.
Troubleshooting
The two errors this node can throw are both printed to the console, not shown in the UI: "Model file not found" means your path doesn't resolve against the folder you picked - check folder_type and drop the file in the right place. "Unsupported file format" means you handed it something that isn't GLB/GLTF/FBX/OBJ. And if you see None flowing out of this node into the composer, the composer will log "Model file not found" for every missing file - so fix the path here, not downstream.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| folder_type | COMBO | input | 2 options: input, output |
| model_file_path | STRING | — | |
| position_xopt | FLOAT | 0.0-1000–1000 | — |
| position_yopt | FLOAT | 0.0-1000–1000 | — |
| position_zopt | FLOAT | 0.0-1000–1000 | — |
| rotation_xopt | FLOAT | 0.0-360–360 | — |
| rotation_yopt | FLOAT | 0.0-360–360 | — |
| rotation_zopt | FLOAT | 0.0-360–360 | — |
| scale_xopt | FLOAT | 1.00 | — |
| scale_yopt | FLOAT | 1.00 | — |
| scale_zopt | FLOAT | 1.00 | — |
| collection_nameopt | STRING | 3D_Model | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODELS | — |