Camera Creator
Point a virtual camera at your 3D scene without ever opening Blender
- camera
If you're assembling a 3D scene in ComfyUI - a few GLBs, a camera, then a render - you need a way to say "stand over there and look at the model." That's this node. Camera Creator builds a camera with a position, a rotation, and a focal length, and hands it to the rest of the Blender-in-ComfyUI pack as a MODELS object. It doesn't render anything and it doesn't touch Blender yet; it just describes a camera so the later nodes know where to put it.
The mechanism, which surprises everyone
Here's the thing that makes this pack make sense: a MODELS output is not geometry. It's a plain Python dictionary - a camera recipe - that travels on the wire. This node writes a dict with the camera's name, position, rotation, scale, focal length, and the Blender collection it should land in. The real camera only gets created later, when BL_Scene_Composer runs Blender headless and turns that dict into an actual bpy camera object (setting lens to your focal length and converting degrees to radians along the way).
So Camera Creator is the cheapest node in the pack: no Blender subprocess, no disk IO, no model files. It's instant, and it can't really fail. The defaults are sane, too - position (0, -20, 2) with a 90° X rotation points the camera at the origin from the front, which is exactly where you want it when you're looking at a model you placed at (0, 0, 0).
The inputs that matter
You don't touch most of these. The two that matter:
- camera_name - required, defaults to
"Camera". Give it something you'll remember, because BL_Render looks up a camera by name when it renders. Its default is the lowercase"camera", and the match is case-insensitive, so the defaults work together fine. But if you rename here, keep the render node in sync. - position_x / y / z and rotation_x / y / z - degrees, not radians. Position range is a generous ±1000, rotation ±360. If you want a closer or higher shot, this is where you do it.
Also worth knowing: focal_length defaults to 50mm (a normal lens). Crank it to 85–100 for a compressed, portrait-y look or 24–28 for a wide establishing shot. collection_name (default "Cameras") just controls which collection the camera lands in inside the resulting .blend.
Where the output goes
The single camera output is MODELS, which means you can wire it straight into BL_Scene_Composer's models input, or - more likely - feed it into a BL_Model_Merger alongside one or more BL_Model_Param outputs so your models and the camera travel to the composer as one object list.
Installing it
This node ships in the blender-in-comfyui pack, so it comes with the pack's one real quirk: the pack shells out to Blender via subprocess, and ComfyUI blocks that by default. Start ComfyUI with --allow-subprocess, then install:
cd ComfyUI/custom_nodes
git clone https://github.com/JayLyu/blender-in-comfyui.git
Restart ComfyUI and you'll get all seven nodes under the Blender category. You'll also need Blender 4.4+ - on Windows and Linux the pack auto-downloads it into its own blender/ folder on first use; on macOS you place Blender.app there yourself (check the README for the exact paths). No Python packages to pip-install beyond what ComfyUI already has.
Troubleshooting
Honestly, this node is the least likely thing in your workflow to break. If you get a black render image later, look downstream: a camera-name mismatch in BL_Render, or a scene that was never composed. And remember the output here is only a description - if you expected to see a camera, you'll see it in the .blend the composer saves, not in the ComfyUI graph. That's not a bug; it's the whole architecture.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| camera_name | STRING | Camera | — |
| position_xopt | FLOAT | 0.0-1000–1000 | — |
| position_yopt | FLOAT | -20.0-1000–1000 | — |
| position_zopt | FLOAT | 2.0-1000–1000 | — |
| rotation_xopt | FLOAT | 90.0-360–360 | — |
| rotation_yopt | FLOAT | 0.0-360–360 | — |
| rotation_zopt | FLOAT | 0.0-360–360 | — |
| focal_lengthopt | FLOAT | 501–500 | — |
| collection_nameopt | STRING | Cameras | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| camera | MODELS | — |