Nodes/ComfyUI-CameraPack/Create Load3D Camera
ComfyUI Node

Create Load3D Camera

Create Load3D Camera without any depth model

By PozzettiAndrea·Created 7 months ago·Updated 9 days ago· 1
Create Load3D Camera
    • camera_info
    pos_x0.0
    pos_y0.0
    pos_z5.0
    target_x0.0
    target_y0.0
    target_z0.0
    zoom50
    camera_typeperspective

    If the rest of ComfyUI-CameraPack is about converting depth-model cameras, this node is the "I know exactly where I want the camera" option. Create Load3D Camera builds a LOAD3D_CAMERA from plain numbers: a position, a look-at target, a zoom, and a projection type. No model, no matrix math, no estimation - just a camera you describe in one shot.

    What it's for

    ComfyUI's native 3D nodes (Load3D, Preview3D, added to core in late 2024) can render a 3D scene from a camera described as a small dictionary: where the camera sits, where it's pointing, and how zoomed in it is. Most of the time you get that camera from a model that predicts it. But for manual shots - a flythrough you're animating by hand, a deliberate composition, an orthographic top-down view for a depth-displacement effect - typing three coordinates beats reverse-engineering a matrix.

    The node's real virtue is that it's a boring, deterministic builder: whatever you set is exactly what you get. That makes it great for tinkering. Change pos_x by a step and the shot slides sideways; nudge zoom and the framing tightens. It's the node you reach for when you want to understand how the LOAD3D_CAMERA format behaves before you trust a model to generate one.

    The inputs that matter

    Nine inputs, but only a few you'll actually fiddle with:

    • pos_x, pos_y, pos_z - camera position in world space. Defaults to (0, 0, 5), so the camera sits 5 units out along Z, looking at the origin.
    • target_x, target_y, target_z - the look-at point. Default (0, 0, 0). This defines where the camera points, not just where it is.
    • zoom - an integer 1–1000, default 50. This is the native ComfyUI zoom value, not a focal length in pixels. Bigger = more magnified. If your render looks like it's standing too far back, bump this.
    • camera_type - perspective (default) or orthographic. Orthographic kills the perspective foreshortening, which is what you want for top-down displacement maps and technical views.

    All the position/target floats range −1000 to 1000 with 0.1 steps - plenty of range for scene-scale shots.

    The output

    One output, camera_info, typed LOAD3D_CAMERA. That's the same format the depth-to-camera converter in this pack produces, and the same thing Preview3D and the native 3D nodes consume - so you can swap a model-estimated camera for a hand-built one without touching the rest of the graph. If you're scripting, it's literally a dict with position, target, zoom, and cameraType keys.

    Installing and quirks

    It ships in ComfyUI-CameraPack (PozzettiAndrea). Install via ComfyUI Manager - search "CameraPack" - or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/PozzettiAndrea/ComfyUI-CameraPack.git
    

    Then restart ComfyUI. No extra dependencies beyond what ComfyUI already has (numpy, torch), no model files. The node sits under 3d/camera.

    The one trap to know: zoom isn't a focal length. If you're coming from intrinsics land, don't paste your fx value in here and expect the same framing - the native 3D renderer maps this value to its own field of view, so the "right" number is found by feel. And since the consumer (Preview3D) is a ComfyUI core feature, keep ComfyUI reasonably up to date; an old build may not know the LOAD3D_CAMERA type at all.

    Category3d/camera

    Inputs (8)

    NameTypeDefaultDescription
    pos_xFLOAT0.0-1000–1000
    pos_yFLOAT0.0-1000–1000
    pos_zFLOAT5.0-1000–1000
    target_xFLOAT0.0-1000–1000
    target_yFLOAT0.0-1000–1000
    target_zFLOAT0.0-1000–1000
    zoomINT501–1000
    camera_typeCOMBOperspective2 options: perspective, orthographic

    Outputs (1)

    NameTypeDescription
    camera_infoLOAD3D_CAMERA