VNCCS Pose Studio
A professional 3D posing studio for character work, without leaving the graph
- pose_image
- images
- lighting_prompt
If you've ever tried to get a character into a specific pose with ComfyUI, you know the drill: hunt down an OpenPose reference, find a matching skeleton image, or sketch something crude and hope the ControlNet squints hard enough. VNCCS Pose Studio is the upgrade - a full 3D posing, framing, and lighting environment that runs inside a single node. You pose a 3D mannequin by grabbing its bones in a viewport, frame the camera, tune the lights, and export a clean pose reference ready for whatever generates your character.
This is the pack's flagship, and the community reception backs that up: the release thread on r/StableDiffusion pulled a few hundred upvotes, with the author - AHEKOT of the VNCCS Visual Novel Character Creation Suite - fielding feature requests directly in the comments. It's the tool the rest of the pack orbits.
How it works
Pose Studio renders a 3D mannequin in a viewport widget (the node's frontend extension does the heavy lifting in the browser). You select joints and manipulate bones with transform gizmos, with full undo/redo. The Dynamic Body Generator tweaks the mannequin itself - sliders for Age, Gender blending, Weight, Muscle, and Height - so your pose reference matches the character you're actually generating, not some default gym dummy.
Then it exports. Two outputs come out of the node:
images- an IMAGE or VIDEO list. In LIST mode, one rendered pose per pose tab; in GRID mode, a single image combining them.lighting_prompt- a STRING list aligned to those images, containing the lighting description plus your camera prompt, ready to be mixed into your generation prompt.
The lighting prompt system is worth using. Pose Studio has real lights - Ambient, Directional, and Point lights with radar-style positioning controls - and it can generate a descriptive lighting prompt from your setup. There's also a Keep Original Lighting mode that bypasses synthetic lighting for flat, clean renders; that's the one to use when your pose image is going into a ControlNet or a pose LoRA and you don't want baked-in shadows messing with the conditioning.
The inputs that matter
pose_data- the state JSON. All your tabs, bones, lights, and camera settings live here. Leave it alone; the UI owns it.pose_image(optional) - a background reference image for tracing. Drop in a reference photo and align the 3D character to it, which is the most reliable way to match a specific pose from an image. There's also image-to-pose import (the pack bundles a SAM 3D backend for it).camera_prompt(optional) - camera direction, and the intended source is VNCCS Visual Camera Control. Wire that node'sprompthere and your visual camera angle drives the pose render's framing.
Features that change how you work
Multi-pose tabs let you build a batch of poses in one node. Keyframe animation mode turns it into a timeline with per-bone tracks, auto-key, easing, and deterministic frame output. Mixamo FBX import drops in an animation clip as keyframes. The modal pose gallery saves/loads poses, and pose data exports to JSON for reuse across workflows. Save a good pose once and you never rebuild it.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/AHEKOT/ComfyUI_VNCCS_Utils.git
cd ComfyUI_VNCCS_Utils
pip install -r requirements.txt
or search VNCCS Utils in ComfyUI Manager and restart. The dependency list is heavier than most packs (transformers, pytorch-lightning, kornia, av, roma...), so give the install a minute.
Honest notes
Two characters in one shot isn't a thing - the author has said it plainly: pose each character in its own tab, export, remove backgrounds, and compose. It's a single-subject tool, but it's the best single-subject tool of its kind in ComfyUI. And note the outputs are pose references: they feed ControlNet-style conditioning or pose LoRAs, not the final art. Which, given how the field has moved - the KB's Qwen-Image-Edit notes that posing largely left ControlNet for dedicated pose LoRAs - is exactly where you want your reference to end up.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| pose_data | STRING | {} | — |
| pose_imageopt | IMAGE | — | |
| camera_promptopt | STRING | Camera direction from VNCCS Visual Camera Control. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE,VIDEO | — |
| lighting_prompt | STRING | — |