Orbit Poses JK๐
Camera orbits for 3D generation, without hand-typing 24 coordinates
- orbit_lists
- orbit_camposes
Multi-view 3D generation is picky about where the camera is for each view - the model was trained on a specific orbit (top-down, front-left, side, back...), and if you feed it a different one you get warped, inconsistent views. Orbit Poses JK generates those camera tracks for you. It's the node that turns "I want the standard six-view orbit for this mesh model" into an actual list of camera positions, no coordinate typing required.
The presets are the star
The orbitpose_preset dropdown is where this node earns its keep. Pick the generation method you're driving and it fills in a compatible camera track:
- CRM(6), Zero123Plus(6), Wonder3D(6), Era3D(6) - the classic six-view image-to-mesh orbits.
- MVDream(4), Unique3D(4), CharacterGen(4) - the four-view crowd.
Each preset encodes the right number of camera positions and the right azimuth/elevation pattern for that model. That's a real timesaver - the pack ships these because people kept getting these orbits wrong by hand, and the wrong orbit is the #1 cause of "why do my multiview samples look broken."
Going custom
Set the preset to Custom and you're in full control via four comma-separated lists, all in degrees/units you'd expect:
- azimuths - horizontal rotation per camera (default
-90.0, 0.0, 180.0, 90.0, 0.0, 0.0). - elevations - vertical tilt per camera (default
0.0, 90.0, 0.0, 0.0, -90.0, 0.0). - radius - distance from the target per camera (default
4.0ร 6). - center - XYZ of the orbit's center per camera (default all zeros).
All four lists must be the same length, or the node throws a "must be the same length" error. That's the one thing that trips people: six azimuths, six elevations, but you paste seven radii. Count the commas.
Two outputs, one purpose
The node emits both formats at once - orbit_lists (the [azimuth, elevation, radius, center...] order) and orbit_camposes (the [radius, elevation, azimuth, center...] order) - so you can feed whichever dialect the next node wants without a converter. Wire the matching one into your 3D sampler, MV adapter, or camera-driven workflow, and keep the other around for debugging.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/jakechai/ComfyUI-JakeUpgrade
pip install -r requirements.txt
Restart and it's under the pack's 3D section. No models. It's been in the pack since mid-2024 (v1.1.0) as part of the img2mesh tooling, so it's mature and battle-tested - if a preset exists for your model, just pick it and go. If your target model isn't in the list, Custom + the model card's recommended angles is the move.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| orbitpose_preset | COMBO | Custom | Select a preset camera track configuration, or select Custom to customize it. |
| azimuths | STRING | -90.0, 0.0, 180.0, 90.0, 0.0, 0.0 | A comma-separated list of azimuth angles (degrees). Controls the camera's horizontal rotation angle. |
| elevations | STRING | 0.0, 90.0, 0.0, 0.0, -90.0, 0.0 | Elevation angle list (degrees), comma separated. Controls the vertical tilt angle of the camera. |
| radius | STRING | 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 | A comma-separated list of radius that controls the distance between the camera and the target. |
| center | STRING | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 | A comma-separated list of center point coordinates. The XYZ coordinates of the center of the control track. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| orbit_lists | ORBIT_CAMPOSES | โ |
| orbit_camposes | ORBIT_CAMPOSES | โ |