Create Load3D Camera
Create Load3D Camera without any depth model
- camera_info
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) ororthographic. 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| pos_x | FLOAT | 0.0-1000–1000 | — |
| pos_y | FLOAT | 0.0-1000–1000 | — |
| pos_z | FLOAT | 5.0-1000–1000 | — |
| target_x | FLOAT | 0.0-1000–1000 | — |
| target_y | FLOAT | 0.0-1000–1000 | — |
| target_z | FLOAT | 0.0-1000–1000 | — |
| zoom | INT | 501–1000 | — |
| camera_type | COMBO | perspective | 2 options: perspective, orthographic |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| camera_info | LOAD3D_CAMERA | — |