RenderFormer Camera
Point the virtual camera before the transformer decides what you see
- CAMERA
RenderFormer doesn't render like a normal 3D engine - it's a transformer that looks at your scene description and predicts the image, global illumination included. Which means where you put the camera genuinely matters, because the model has to work with what you gave it. The RenderFormerCamera node is where you decide that viewpoint.
It's one of the 15 nodes in paulh4x/ComfyUI_PHRenderFormerWrapper, the "100% vibecoded" wrapper around Microsoft's RenderFormer (SIGGRAPH 2025). If you're new to this pack, think of it as a three-part pipeline: mesh + camera + lights go into the Scene Builder, which hands a SCENE to the Sampler. This node is the camera part. It's deliberately simple, and that's the point.
What it does
It produces a single CAMERA output describing position, look-at target, and field of view. In the reference scene it's the default RenderFormer "cbox-bunny" style setup: the camera sits at roughly (0, -2, 0) looking at the origin. You can see those same defaults baked into the node:
camera_pos_x / y / z- where the camera sits (defaults0, -2, 0).camera_look_at_x / y / z- the point it looks toward (defaults0, 0, 0, i.e. the origin).fov- field of view in degrees, default37.5, range 1–179. The tooltip calls it out explicitly: degrees, not radians.
That's the entire input list. Seven floats, one output. If you want a different angle, nudge the position and keep the look-at on the object; the fov default of 37.5 is a mild telephoto feel and works well for the 512–1024px renders the model is happiest at.
The one thing to remember
The coordinate conventions here are RenderFormer's, not Blender's - the camera default of y = -2 and a look-at at the origin tells you the model's camera looks "up" its own axis. If your mesh appears invisible or out of frame, before you fight the sampler, check that the camera position and look-at actually enclose your object's transform. Also keep the model's hard limits in mind: it handles meshes up to 8192 polygons, and best-quality renders land between 512² and 1024².
Installing it
It ships inside ComfyUI_PHRenderFormerWrapper, so installing the pack gets you this node:
# ComfyUI Manager: search "ComfyUI_PHRenderFormerWrapper"
cd ComfyUI/custom_nodes/
git clone https://github.com/paulh4x/ComfyUI_PHRenderFormerWrapper.git
cd ComfyUI_PHRenderFormerWrapper
git clone https://github.com/microsoft/renderformer.git renderformer
pip install -r requirements.txt
python -c "import imageio; imageio.plugins.freeimage.download()"
Restart ComfyUI after that. First render also downloads the model from Hugging Face (see RenderFormerModelLoader).
Common issues
- Empty render or the wrong angle - 99% of the time it's the camera. Start from the defaults, put the object at the origin, then move the camera. The defaults are a known-good starting point.
- Animation flicker - the author notes frames of camera/light animation can flicker, especially with glossy materials. That's a known RenderFormer wrapper limitation, not a misconfigured camera.
It's the most boring node in the pack, and that's fine - it's also the one you'll fiddle with constantly to frame a shot.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| camera_pos_x | FLOAT | 0.00-10–10 | — |
| camera_pos_y | FLOAT | -2.00-10–10 | — |
| camera_pos_z | FLOAT | 0.00-10–10 | — |
| camera_look_at_x | FLOAT | 0.00-10–10 | — |
| camera_look_at_y | FLOAT | 0.00-10–10 | — |
| camera_look_at_z | FLOAT | 0.00-10–10 | — |
| fov | FLOAT | 381–179 | Field of View in degrees |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CAMERA | CAMERA | — |