Nodes/ComfyUI-JakeUpgrade/Orbit Poses JK๐Ÿ‰
ComfyUI Node

Orbit Poses JK๐Ÿ‰

Camera orbits for 3D generation, without hand-typing 24 coordinates

By jakechaiยทCreated 2 years agoยทUpdated 3 months agoยท 146
Orbit Poses JK๐Ÿ‰
    • orbit_lists
    • orbit_camposes
    โ—„orbitpose_presetCustomโ–บ
    โ—„azimuths-90.0, 0.0, 180.0, 90.0, 0.0, 0.0โ–บ
    โ—„elevations0.0, 90.0, 0.0, 0.0, -90.0, 0.0โ–บ
    โ—„radius4.0, 4.0, 4.0, 4.0, 4.0, 4.0โ–บ
    โ—„center0.0, 0.0, 0.0, 0.0, 0.0, 0.0โ–บ

    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.

    Category๐Ÿ‰ JK/๐Ÿ•’ 3D

    Inputs (5)

    NameTypeDefaultDescription
    orbitpose_presetCOMBOCustomSelect a preset camera track configuration, or select Custom to customize it.
    azimuthsSTRING-90.0, 0.0, 180.0, 90.0, 0.0, 0.0A comma-separated list of azimuth angles (degrees). Controls the camera's horizontal rotation angle.
    elevationsSTRING0.0, 90.0, 0.0, 0.0, -90.0, 0.0Elevation angle list (degrees), comma separated. Controls the vertical tilt angle of the camera.
    radiusSTRING4.0, 4.0, 4.0, 4.0, 4.0, 4.0A comma-separated list of radius that controls the distance between the camera and the target.
    centerSTRING0.0, 0.0, 0.0, 0.0, 0.0, 0.0A comma-separated list of center point coordinates. The XYZ coordinates of the center of the control track.

    Outputs (2)

    NameTypeDescription
    orbit_listsORBIT_CAMPOSESโ€”
    orbit_camposesORBIT_CAMPOSESโ€”