Nodes/blender-in-comfyui/Camera Creator
ComfyUI Node

Camera Creator

Point a virtual camera at your 3D scene without ever opening Blender

By JayLyu·Created about a year ago·Updated about a year ago· 5
Camera Creator
    • camera
    camera_nameCamera
    position_x0.0
    position_y-20.0
    position_z2.0
    rotation_x90.0
    rotation_y0.0
    rotation_z0.0
    focal_length50
    collection_nameCameras

    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.

    CategoryBlender

    Inputs (9)

    NameTypeDefaultDescription
    camera_nameSTRINGCamera
    position_xoptFLOAT0.0-1000–1000
    position_yoptFLOAT-20.0-1000–1000
    position_zoptFLOAT2.0-1000–1000
    rotation_xoptFLOAT90.0-360–360
    rotation_yoptFLOAT0.0-360–360
    rotation_zoptFLOAT0.0-360–360
    focal_lengthoptFLOAT501–500
    collection_nameoptSTRINGCameras

    Outputs (1)

    NameTypeDescription
    cameraMODELS