Nodes/ae-in-workflow/Interactive Pose Editor (ae)
ComfyUI Node

Interactive Pose Editor (ae)

Hand-edit OpenPose keypoints and hand the pose to ControlNet

By by-ae·Created 8 months ago·Updated 2 months ago· 12
Interactive Pose Editor (ae)
  • POSE_KEYPOINT_optional
  • image
  • edited_pose_data
padding128
seed0
reset_cached_window_positionfalse

The difference between a good pose and a throwaway one is usually a few degrees in an elbow - and that's exactly the thing pose detectors won't let you fix. Interactive Pose Editor (ae) opens a window where you drag OpenPose keypoints by hand, then hands you back both a rendered pose image and the edited pose data, ready to feed a ControlNet.

Why you'd reach for it: pose-conditioned generation is powerful but unforgiving. OpenPose and DWPose detectors miss wrists and cross limbs, and re-prompting won't save you - the structure is baked into the conditioning image. This node is the fix-it stage: pipe in pose data from your detector (via ComfyUI's ControlNet Auxiliary Preprocessors), drag the offending joint back where it belongs, and continue. Or start from nothing - with no input it builds a clean T-pose, and you pose the whole scene from scratch. That's the whole promise of pose control: you give the graph spatial structure, it honors the structure.

How it works: it's a pygame window, so it blocks the queue while it's open - you edit, hit ESC, and the outputs flow on. Editing is hierarchical. Left-drag moves one keypoint; Ctrl+drag moves it with its children; middle-drag moves the whole person; scroll zooms; Ctrl+scroll rotates. Multi-person scenes are first-class: add a T-pose person with Ctrl+N, duplicate with Ctrl+D, delete with Ctrl+X, mirror with Ctrl+R. Missing keypoints get auto-estimated from T-pose proportions (Ctrl+F), and people who end up on top of each other get auto-spaced. Undo/redo runs to 5,000 steps. The clever bit is caching: edits are keyed by an MD5 hash of the input pose and stored in ComfyUI's user directory, so re-running the same pose data reopens with your last edits - great for iterative animation chains, and mildly alarming the first time it happens. Ctrl+O resets to the original input if you get lost.

The inputs: POSE_KEYPOINT_optional accepts OpenPose-format pose data (leave it empty for a default T-pose). padding controls the blank space around the pose in the output image - the rendered visualization, which is what you'll feed into ControlNet. seed is the pack's standard trick (fixed = run once, change it to re-open). reset_cached_window_position exists for one specific failure: the editor remembers where you parked its window, and if that position is now off-screen, set it to true to bring it back.

The outputs: image is the rendered pose visualization - wire it into your ControlNet's image input. edited_pose_data is the modified OpenPose-format data (people, keypoints, canvas size) - save it for reuse or chain it into another PoseEditorAE node for frame-by-frame animation.

Install is the same as the rest of the pack: ComfyUI Manager → Install via Git URL (https://github.com/by-ae/ae-in-workflow.git) → restart, or clone into custom_nodes and pip install -r requirements.txt. The editor needs pygame, which the requirements install for you. No separate model downloads - pose detection happens upstream in your preprocessor nodes; this node only edits.

Troubleshooting: the window not appearing is the top issue. First try reset_cached_window_position, then make sure ComfyUI is running on a machine with a display - headless and remote setups can't open it, same limitation as the pack's Image Selector. The changelog notes an early "font not initialized" pygame crash was fixed by moving pygame.init() inside the editor, so keep the pack updated if you hit it. And remember it's interactive by design - the author flags "requires user interaction, not suitable for automated workflows" as a known limitation, not a bug. If you're chaining poses for animation, hit ESC after each one so the cache saves before the next run.

Categoryae-in-workflow

Inputs (4)

NameTypeDefaultDescription
POSE_KEYPOINT_optionalopt*OpenPose format pose data with keypoints
paddingoptINT1280–512Padding around poses in output image (pixels)
seedoptINT00–18446744073709550000Change this value to force the node to run again with the same pose data
reset_cached_window_positionoptBOOLEANfalseUsually False, but if you can't find the window set to True to reset.

Outputs (2)

NameTypeDescription
imageIMAGERendered pose visualization image
edited_pose_data*Modified pose data in OpenPose format with user edits applied