VNCCS Simple Pose (single)
The Hand-Drawn Pose Node for Qwen-Edit Character Clones
- openpose_image
- openpose
The repo name is a mouthful and the "clone" in it doesn't mean what you think. This isn't a model cloner - it's one node (VNCCS_SimplePose) pulled out of the VNCCS character-creation suite and rebuilt around Qwen-Image-Edit. Its whole job: let you hand-draw a pose and get back a clean OpenPose skeleton image to condition the edit model. If you're doing the 2026 thing - generate your character once, then edit that image into new poses instead of fighting for consistency across generations - this is the "pose" half of that workflow.
What it actually is
VNCCS is AHEKOT's Visual Novel Character Creation Suite, the r/StableDiffusion release that turned "make one character who looks the same in every sprite" into a five-step pipeline. This pack is a stripped-down slice of it: no base-character generator, no clothing or emotion sets, just the single-pose editor and its renderer, tuned for Qwen-Image-Edit-2511. The surrounding scene is worth knowing before you judge it. Posing a character used to mean running DWPose on a reference photo and pushing the skeleton through a ControlNet checkpoint. Then Qwen-Image-Edit took keypoint maps natively as input images (2509), and AnyPose turned posing into a LoRA with no ControlNet at all. This node is the "I still want an explicit skeleton" camp: you're not extracting a pose from a photo, you're drawing one, so a turnaround sheet or a VN sprite gets exactly the limb placement you asked for instead of whatever a LoRA decides.
How it works
The pose lives as JSON in the node's pose_data string widget - a canvas size plus 17 OpenPose joint coordinates. On queue, the node renders those joints onto a black 512×1536 canvas: white dots at each joint, colored lines for the bones in the standard OpenPose palette, done with OpenCV. If you have ComfyUI_VNCCS installed it borrows that pack's fancier renderer and preset skeleton; otherwise a built-in fallback does the drawing. The part you'll actually use is the editor, not the JSON. Hit the node's "Open Pose Editor" button and you get a 2D preview where every joint is draggable, plus an import box that accepts standard OpenPose JSON (BODY_18 or BODY_25). If ComfyUI_VNCCS is present, it goes further and loads a 3D editor so you can orbit and rotate the body, then project down to 2D. Everything writes back into pose_data - you can pretty much never touch the raw JSON by hand.
Inputs and outputs
Three inputs, and you'll set two of them:
pose_data- the multiline string holding the skeleton. The editor writes it; treat it as a widget, not a place to type.line_thickness(1–12, default 4) - stroke width for the bones. Bump it up if your skeleton looks washed out after the encoder resizes it.openpose_image(optional) - a passthrough, and the one trap here. If you connect a ready-made OpenPose PNG, the node returns it unchanged and ignores everything you drew. That's not an overlay; it's a bypass.
The single output is openpose (an IMAGE). In the bundled VN_Clone_SinglePose workflow it feeds the VNCCS_QWEN_Encoder node alongside your character reference image, which is what turns the skeleton into Qwen-Edit conditioning for the sampler.
Installing it
The README's primary path is a docker-compose setup that lives in the parent VNCCS bundle, which is fiddly. The standalone way:
cd ComfyUI/custom_nodes
git clone https://github.com/randomname124290358349/comfyui-singlepose-clone
Then install the two real dependencies - ComfyUI-GGUF (for the GGUF unet loader) and ComfyUI_VNCCS (for the encoder and 3D editor) - via Manager, and restart. The actual weight comes from the models, all referenced in the README: a Q3_K_M GGUF of Qwen-Image-Edit-2511, the fp8-scaled Qwen2.5-VL text encoder, the Qwen VAE, and two LoRAs - the 4-step Lightning one and VNCCS's poser_helper_v2. Expect several GB of downloads. Note that pack has no requirements.txt of its own; cv2 and torch come from ComfyUI itself.
Common issues
The README is honest about its two known rough edges. First, tuned for an 8GB GPU, the first run after a cold boot can OOM at the sampler - just re-queue; it settles. Second, that Q3_K_M quant is a heavy quant, and GGUF's tax is dequantization overhead, so don't expect speed records - it's there so the thing fits in 8GB at all. And if your 3D editor won't load, check that ComfyUI_VNCCS is installed and that the browser can reach the internet for three.js; the 2D dragging still works regardless. If the pose you carefully drew shows up as a default standing figure, you've almost certainly connected an openpose_image and lost the draw - disconnect it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_data | STRING | {"canvas": {"width": 512, "height": 1536}, "poses": [{"nose": [256, 200], "neck": [256, 280], "r_shoulder": [320, 320], "r_elbow": [350, 520], "r_wrist": [360, 720], "l_shoulder": [192, 320], "l_elbow": [162, 520], "l_wrist": [152, 720], "r_hip": [290, 720], "r_knee": [295, 1020], "r_ankle": [300, 1320], "l_hip": [222, 720], "l_knee": [217, 1020], "l_ankle": [212, 1320], "r_eye": [270, 185], "l_eye": [242, 185], "r_ear": [285, 195], "l_ear": [227, 195]}]} | — |
| line_thickness | INT | 41–12 | — |
| openpose_imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| openpose | IMAGE | — |