RenderFormer Camera Target
A dolly move without leaving ComfyUI
- start_camera
- CAMERA_SEQUENCE
Static renders get boring fast. If you want the camera to move - a slow push-in, a pan across the object, a dolly around it - RenderFormerCameraTarget is how you do it in this pack. You give it a start camera and an end state, and it hands back a CAMERA_SEQUENCE that the Scene Builder interpolates into a full video. It's one of the 15 nodes in paulh4x/ComfyUI_PHRenderFormerWrapper, the "100% vibecoded" wrapper around Microsoft's RenderFormer (SIGGRAPH 2025).
How it works
This is a keyframe node: it takes your existing CAMERA as the start keyframe, and your typed-in values as the end keyframe, and produces a sequence containing exactly those two states ({"sequence": [start, end]}). It doesn't generate intermediate frames itself - the Scene Builder does that when it sees num_frames > 1. So the mental model is: Camera Target defines where the shot ends; the Scene Builder fills in every frame between.
The inputs
start_camera- theCAMERAoutput of aRenderFormerCameranode. This is frame zero.end_pos_x/y/z- where the camera ends up. Defaults mirror the static camera node (0, -2, 0).end_look_at_x/y/z- where the camera is looking at the end of the move (defaults0, 0, 0).end_fov- field of view at the end, in degrees, default37.5.
One output: CAMERA_SEQUENCE, which wires into the Scene Builder's optional camera_sequence input.
The workflow
RenderFormerCamera ──CAMERA──▶ RenderFormerCameraTarget ──CAMERA_SEQUENCE──▶ RenderFormerSceneBuilder (num_frames > 1) ──SCENE_SEQUENCE──▶ RenderFormerGenerator ──IMAGES──▶ Create Video
The important gotcha: you still wire the plain CAMERA output of the start camera into the Scene Builder's required camera input, and the CAMERA_SEQUENCE into camera_sequence. Then set num_frames above 1 on the Scene Builder. Miss that and you'll render a single frame - the sequence only activates when num_frames > 1.
Installing it
# 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.
Common issues
- The video is a still -
num_framesis 1 on the Scene Builder, or you connected the sequence to the wrong input. Sequence →camera_sequence, static camera →camera. - Flickering in the animation - the README is upfront about this: per-frame precision varies slightly, and camera animations can flicker, especially with high-reflective materials. It's a known model/wrapper limitation. Shorter moves and less glossy materials help.
- Only two keyframes - correct, and by design. Multi-keyframe and bezier interpolation are on the pack's to-do list. For now, chain multiple Camera Target → Scene Builder pairs if you need a more complex path, or accept simple linear moves.
It's the cheapest way to get video out of this pack - a two-keyframe dolly is 90% of the motion you need for a v2v or reference-video shot.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| start_camera | CAMERA | — | |
| end_pos_x | FLOAT | 0.00-10–10 | — |
| end_pos_y | FLOAT | -2.00-10–10 | — |
| end_pos_z | FLOAT | 0.00-10–10 | — |
| end_look_at_x | FLOAT | 0.00-10–10 | — |
| end_look_at_y | FLOAT | 0.00-10–10 | — |
| end_look_at_z | FLOAT | 0.00-10–10 | — |
| end_fov | FLOAT | 381–179 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CAMERA_SEQUENCE | CAMERA_SEQUENCE | — |