WanVideo RealisDance Latents
SMPL + hand-aware pose control for dance
- ref_latent
- smpl_latent
- hamer_latent
- add_cond_latents
RealisDance is a pose-driven human animation method built for the case where a plain skeleton isn't enough - dance, where hands and body volume actually matter. The usual OpenPose/DWPose stick figure throws away depth and finger detail, and that's exactly what breaks on fast, hand-heavy motion. RealisDance leans on richer control signals: a SMPL body model for volumetric pose and HaMeR for the hands. This node bundles those signals into the conditioning latents Wan needs.
The KB frames this tension well. It's the same reason SCAIL-2 got praise for dropping the stick figure: "the things that get lost in that conversion, like depth and contact, are exactly the things that matter." RealisDance is another approach to keeping that information - SMPL gives you a 3D-aware body (the KB's ControlNet notes call DensePose/SMPL "much more detailed than OpenPose ... captures body surface orientation, not just joint positions"), and HaMeR handles the fingers that DWPose mangles.
How it works
You give it a reference latent for identity plus optional pose latents - a SMPL latent for the body and a HaMeR latent for the hands. It packs these into an additional-conditioning bundle that gets injected into the Wan generation alongside your normal setup, steering the character to follow the posed motion while holding the reference's look. The two pose_cond percentages control when in sampling that pose guidance is active.
The inputs and output
ref_latent(LATENT, required) - the reference the animation is anchored to; this is what keeps identity.pose_cond_start_percent(0) /pose_cond_end_percent(1) - the sampling window where pose conditioning applies. Full range by default; narrow it if the pose is fighting detail late in the render.smpl_latent(LATENT, optional) - the SMPL body pose. This is the main driving signal for the body.hamer_latent(LATENT, optional) - the HaMeR hand pose, for finger detail.
The single output is add_cond_latents (ADD_COND_LATENTS) - an additional-conditioning bundle that plugs into the RealisDance-aware point of your Wan graph.
Both pose latents are optional, but you want at least the SMPL one - without any driving pose this node has nothing to make the character do.
How to install it
Comes with Kijai's WanVideoWrapper. ComfyUI Manager: search ComfyUI-WanVideoWrapper, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
pip install -r ComfyUI-WanVideoWrapper/requirements.txt
then restart. The node itself downloads nothing, but the RealisDance path in front of it is the real work: you need SMPL and HaMeR preprocessing to produce those pose latents, plus the RealisDance model support in your Wan setup. This is a niche technique - only a handful of community threads - so workflows are sparse and you'll be doing some assembly.
Common issues & troubleshooting
Hands are still a mess. If you skipped the hamer_latent, you're back to body-only control and fingers will do what Wan wants, which on dance footage is usually wrong. Wire in the HaMeR latent if hands matter.
Character morphs or loses identity. Standard Wan motion-transfer failure mode - the KB notes body morphing on complex movement persists even in good workflows. Keep the ref_latent strong and try pulling pose_cond_end_percent back so the model gets the last stretch of sampling to reconcile identity.
Type mismatch feeding the pose latents. SMPL and HaMeR here are LATENTs produced by RealisDance-specific preprocessing, not raw pose images. If ComfyUI won't connect them, you're missing the encode step that turns detected pose into a latent.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| ref_latent | LATENT | Reference image to encode | |
| pose_cond_start_percent | FLOAT | 0.000–1 | Start percent of the SMPL model |
| pose_cond_end_percent | FLOAT | 1.000–1 | End percent of the SMPL model |
| smpl_latentopt | LATENT | SMPL pose image to encode | |
| hamer_latentopt | LATENT | Hamer hand pose image to encode |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| add_cond_latents | ADD_COND_LATENTS | — |