A customized 2D/3D OpenPose editor node for ComfyUI, built for practical pose editing inside real workflows.
This version keeps the original 2D editing flow, adds a full 3D editing mode, and includes a number of quality-of-life improvements such as reset view, FK/IK workflow, JSON naming on export, background image support, and frontend conflict fixes for mixed-editor setups.
The current UI in this custom build is English, including toolbar buttons, panel labels, prompts, and runtime status messages.
- 2D and 3D pose editing in a single node
- Reset View button to restore the initial camera angle and zoom
- FK-style joint editing for controlled axis-based adjustments
- IK support for arms and legs while preserving limb lengths, including elbow/knee bend control
- Built-in gizmo for X/Y/Z movement and rotation
- Save pose JSON with a custom filename dialog
- Load and restore saved 3D pose data, camera state, and model rotation
- Background image loading for pose matching
- Pose auto-completion for missing limbs and mirrored joints
- 3D mirror tools for full-pose mirroring and left/right side copy
- Posture text output for downstream prompt or workflow usage
- Better coexistence with other OpenPose editors in the same ComfyUI frontend
Clone or copy this repository into your ComfyUI custom_nodes folder:
cd ComfyUI/custom_nodes
git clone <your-repo-url> ComfyUI-3D-OpenPose-Editor2026Then restart ComfyUI.
If you are updating from an older local copy, a full browser hard refresh is recommended after restart.
- Add the
Nui.OpenPoseEditornode to your workflow. - Open the editor panel from the node.
- Edit the pose in 2D or switch to 3D mode.
- Use the built-in buttons such as
Open Pose Editor,Match Size, andApply Poseas needed. - Save or load pose JSON files as needed.
- Use the node output in your downstream pose-driven workflow.
| Button | Description |
|---|---|
Add |
Add a new pose |
Delete Points |
Delete selected joints |
Clear |
Clear the current pose |
Reset |
Reset to the original loaded pose |
Save |
Export pose JSON with a custom filename(compatible with andreszs/ComfyUI-OpenPose-Studio's json format) |
Load |
Import a saved pose JSON(compatible with andreszs/ComfyUI-OpenPose-Studio's json format) |
Select All |
Select all available joints |
Auto Complete |
Auto-complete missing joints and limb connections |
Mirror |
Mirror the active 3D pose set across the model local X axis |
L→R |
Copy the left side pose to the right side in 3D |
R→L |
Copy the right side pose to the left side in 3D |
Background |
Load a background image |
Clear Background |
Remove the background image |
3D Mode: On / Off |
Toggle 2D / 3D editing mode |
Gizmo: On / Off |
Toggle the 3D gizmo |
Reset View |
Reset the 3D camera to the initial view |
Frame |
Frame the current 3D selection, or all points if nothing is selected |
Cam: World / Local |
Switch orbit and view presets between world space and model local space |
Axes: Local / World |
Switch gizmo and model-rotation axes between model local space and world space |
Front / Back / Left / Right / Top / Bottom |
Snap the 3D camera to a preset view around the current pivot target |
Proj: Persp / Ortho |
Toggle between perspective and orthographic projection |
Nav: Orbit / Model |
Switch between orbiting the camera and rotating the model |
Pivot: Model / Selection |
Set the camera pivot from the model center or the current selection |
Mode: FK / IK |
Switch between FK and IK editing |
| Action | Description |
|---|---|
| Left click | Select a joint or gizmo handle |
| Left drag | Move the selected joint or drag in free space |
| Right drag | Orbit the camera, or rotate the model in Nav: Model mode |
| Middle drag | Pan the camera |
| Mouse wheel | Zoom in or out |
| View preset buttons | Reframe the camera from Front, Back, Left, Right, Top, or Bottom using the current pivot target and the active Cam space |
| Shortcut | Description |
|---|---|
Ctrl + A |
Select all joints |
Delete / Backspace |
Delete selected joints in 3D mode |
Esc |
Clear selection |
R |
Reset 3D view |
. / Numpad . |
Frame the current 3D selection, or all points if nothing is selected |
Home |
Frame all 3D points |
Shift + . |
Set the camera pivot from the current selection |
Shift + Home |
Set the camera pivot from the model center |
Tab |
Toggle between orbit-camera mode and rotate-model mode |
F |
Switch to FK mode |
I |
Switch to IK mode |
Ctrl + Z |
Undo |
Ctrl + Y |
Redo |
The node-level widgets shown in the ComfyUI graph are also in English:
Open Pose EditorMatch SizeApply Pose
Use FK mode when you want to rotate or move a joint while keeping downstream joints following the chain. This is useful for shaping arms, legs, and overall motion arcs from a stable parent joint.
Use IK mode when you want to drag an end effector such as a wrist or ankle while keeping limb lengths stable. You can also drag the elbow or knee directly to adjust the bend direction while preserving the two bone lengths. The current implementation focuses on two-bone chains:
- Left arm
- Right arm
- Left leg
- Right leg
Exported JSON includes:
- 2D projected pose data
- 3D point data
- 3D connection data
- camera state
- camera space
- model rotation
- orbit center
This makes it possible to reopen a pose and continue editing from the same 3D state.
- This project is based on the DocKr OpenPose Editor and extends it with additional 3D editing features and workflow fixes.
- If you use another OpenPose editor plugin in the same ComfyUI session, make sure your browser cache is refreshed after updating.
- The current IK implementation is focused on common limb editing, not a full character rig system.
- Original 2D editor base: DocKr OpenPose Editor
- Extended and customized for mixed 2D/3D workflow editing in ComfyUI
Please update this section to match the license you intend to publish with your GitHub version.

