Nodes/KJNodes for ComfyUI/Stable Zero123 Batch Schedule
ComfyUI Node Runs on cloud

Stable Zero123 Batch Schedule

Keyframe a camera orbit around an object

By kijai·Created 3 years ago·Updated about 21 hours ago· 2,930
Stable Zero123 Batch Schedule
  • clip_vision
  • init_image
  • vae
  • positive
  • negative
  • latent
width256
height256
batch_size1
interpolation
azimuth_points_string0:(0.0), 7:(1.0), 15:(0.0)
elevation_points_string0:(0.0), 7:(0.0), 15:(0.0)

This node drives Stable Zero123 - Stability's single-image novel-view model - to render an object from a scheduled camera path instead of one fixed angle. You give it keyframed camera angles across a batch, and it interpolates between them, so a batch turns into a smooth orbit: a turntable spin, a tilt-up, whatever camera move you keyframe. It's the "make my object rotate" node for the Zero123 pipeline.

It's part of KJNodes, kijai's utility pack, and it's marked experimental - which, honestly, matches where Stable Zero123 sits in 2026. It was a notable trick a couple of years back; today it's niche. Community chatter around it is thin, and most people who want a spinning object now reach for a video model or a purpose-built 3D pipeline rather than Zero123. So think of this as a specialist tool for a specific older model, not a default.

How it works

Zero123 takes one image of an object plus a target camera angle and hallucinates what the object looks like from that angle. This node schedules those angles across a batch. You provide azimuth (the yaw, i.e. spin-around) and elevation (the pitch, i.e. up/down tilt) as keyframes - lines of frame:(value) - and it interpolates between them with your chosen easing to produce a per-frame camera path. It encodes your init image and packages everything into conditioning and a latent for a sampler to turn into the actual views.

The inputs and outputs that matter

  • init_image - the object, from a single starting view.
  • clip_vision and vae - Zero123's encoders (it's CLIP-vision conditioned).
  • batch_size - the number of frames in the orbit.
  • azimuth_points_string / elevation_points_string - the keyframes, one frame:(value) per line. Azimuth spins the camera around the object; elevation raises or lowers it. Edit these to design the move.
  • interpolation - the easing between keyframes: linear, ease_in, ease_out, ease_in_out.
  • width / height - the working resolution.

Outputs are positive and negative conditioning plus a latent - feed them into a KSampler to render the scheduled views.

Installing it

ComfyUI Manager → search KJNodes for ComfyUI → install → restart. Or cd ComfyUI/custom_nodes && git clone https://github.com/kijai/ComfyUI-KJNodes, then pip install -r ComfyUI-KJNodes/requirements.txt, and restart. You'll also need the Stable Zero123 checkpoint (a separate download) plus the CLIP-vision and VAE it expects - this node schedules the model, it doesn't ship it.

Where people get burned

  • Keyframe string syntax. The azimuth/elevation inputs are text, and the frame:(value) format is picky - a stray character breaks the schedule. Start from the default strings and edit the numbers rather than writing them from scratch.
  • Zero123's limits are the ceiling. Novel-view synthesis from a single image guesses at everything it can't see; big angle jumps and complex objects come back distorted. Keep the orbit gradual and expect a "good enough" turntable, not a true 3D render.
  • It's an older model in an experimental node. Expect rough edges, thin documentation, and few recent tutorials. If a clean turntable is the actual goal and you're starting fresh, a modern video model is usually the easier road - reach for this when you specifically want the Zero123 approach.
CategoryKJNodes/experimental

Inputs (9)

NameTypeDefaultDescription
clip_visionCLIP_VISION
init_imageIMAGE
vaeVAE
widthINT25616–16384
heightINT25616–16384
batch_sizeINT11–4096
interpolationCOMBO4 options: linear, ease_in, ease_out, ease_in_out
azimuth_points_stringSTRING0:(0.0), 7:(1.0), 15:(0.0)
elevation_points_stringSTRING0:(0.0), 7:(0.0), 15:(0.0)

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT