Alibaba's Wan-Animate-2 Beats Proprietary Platforms Without a Single Skeleton
Alibaba's Wan-Animate-2 ditches pose skeletons entirely, achieving real-time streaming character animation at 24 FPS with open weights under Apache 2.0

- No more pose skeletons: Wan-Animate-2 feeds raw video latents directly into a Diffusion Transformer, eliminating extraction errors and identity drift.
- Real-time streaming: The Lite variant runs at 24 FPS at 400×720 on 4× H100s, the first open-source system to hit real-time thresholds for character animation.
- Text-controlled camera: A Viewpoint LoRA trained on ~50K Unreal Engine renders lets you change camera angle via text prompts, decoupled from the driving video.
- Beats commercial platforms: In a blind user study, Wan-Animate-2 outperformed Dreamina and matched Kling-MotionControl, both built on larger proprietary models.
- Fully open-source: Weights available on HuggingFace under Apache 2.0, with diffusers, ComfyUI, and DiffSynth-Studio integrations.
- Multi-character support: Animate multiple characters simultaneously in one scene, each retaining distinct identity and motion.
Character animation has long been a two-step dance: extract a skeleton or pose from a driving video, then warp a reference character to match it. The skeleton is the bottleneck. It loses hand detail, drifts when body shapes differ, and completely locks the output camera to whatever angle the driving video was filmed at. Wan-Animate-2, the new open-source release from Alibaba's Tongyi Lab, throws out the skeleton entirely and replaces it with something more direct: the raw video latents themselves.
No pose extraction, no problem
Character image animation aims to transfer the spatiotemporal motion features from a driving video to a reference image containing a specific subject to generate an animated video. The field has tried three approaches to do this, and each has a fatal flaw:
- Explicit pose methods (skeletons, SMPL body meshes): fast and interpretable, but extraction errors compound, and cross-identity transfer breaks when body shapes differ significantly.
- Implicit motion encoders: compress the driving video into a learned latent, avoiding skeleton errors, but the compression bottleneck discards fine-grained dynamics like subtle hand movements and micro-expressions.
- In-context learning: feed the raw driving video directly into the model's attention , no intermediate representation at all. Best quality, but full-sequence self-attention over all reference and target tokens is quadratically expensive and practically unusable at scale.
Leading closed-source video generation platforms now increasingly incorporate character animation as a built-in capability, while the open-source community has yet to produce systems of comparable quality, widening the gap between proprietary and publicly available solutions. Wan-Animate-2 is a direct attempt to close that gap.
The architecture: four interlocking ideas
Wan-Animate-2 is a novel end-to-end character animation framework that directly consumes driving videos in a redesigned Diffusion Transformer, which achieves high-fidelity motion generation and strong identity preservation by eliminating intermediate motion extractors. The key insight is that the reference video's own latents are already a complete motion prior , no skeleton needed. Four architectural components make this work at scale:
- Dual-Branch DiT: Rather than concatenating all tokens into one giant sequence (the expensive in-context learning approach), the model runs two parallel branches inside the Diffusion Transformer. The reference branch is pinned at timestep
t=0(clean, no noise), and feeds its key and value tensors into the noisy denoising branch. This keeps the motion signal clean throughout the entire denoising process while avoiding quadratic attention costs. - Time-Align RoPE: Rotary Position Embeddings (RoPE) , the positional encoding scheme used in most modern transformers , need to be synchronized across both branches. The team does this by prepending reference tokens to the target sequence before applying RoPE, so both branches share one coherent temporal coordinate system regardless of resolution differences between the driving and output video.
- Sparse-Ref Attention: Instead of letting every target frame attend to every reference frame (O(Nr × Nl) complexity), each target frame attends only to its temporally aligned reference frame. This drops cross-branch attention complexity from O(Nr × Nl) down to O(Nl) , a massive saving with no measurable quality loss, since character animation already has a natural frame-to-frame correspondence.
- Viewpoint LoRA: A lightweight adapter trained on ~50K Unreal Engine multi-view renders. It maps text descriptions like "top view" or "right 60-degree view" into camera control, completely decoupled from the driving video's angle. The LoRA only touches cross-attention projection matrices, leaving the base model weights unchanged.
Real-time streaming: the Lite variant
The base model produces high-quality results but requires multi-step diffusion sampling , too slow for live applications. Wan-Animate-2-Lite is an efficient variant that reduces inference latency to real-time thresholds for streaming character animation. Getting there required a three-stage training recipe:
- Teacher Forcing Pretraining: Reformulates the model as a causal, chunk-by-chunk generator. During training, each chunk conditions on the clean ground-truth latents of prior chunks, teaching the model to generate autoregressively.
- Error Buffer Mechanism: Bridges the gap between training (where context is always perfect ground-truth) and inference (where context is the model's own imperfect predictions). At each training step, the model's prediction error is recorded and injected back as noise into the conditioning context, making the model robust to its own mistakes before they ever compound.
- Self-Forcing Distillation: Compresses the multi-step denoising process into just 3 steps using Distribution Matching Distillation (DMD) , a technique that trains a student model to match the output distribution of the full teacher without running the full denoising chain. To make this tractable on a 14B-parameter model, they designed chunk-wise backpropagation: gradients are computed one chunk at a time and accumulated, keeping peak memory proportional to chunk size rather than full sequence length.
The result: at a resolution of 400×720, the system achieves a throughput of 24 frames per second, surpassing the real-time threshold and enabling smooth, interactive animation generation. This runs on 4× H100 GPUs in a pipeline-parallel setup, with one GPU handling VAE encoding, two running the DiT with sequence parallelism, and one handling VAE decoding.
What it can and can't do
The qualitative results are strong across a surprisingly wide range of inputs. The model handles humans, cartoon characters, robots, and animals , cross-identity transfer works even when body shapes differ dramatically. Micro-expressions, hand articulation, and non-rigid motions (think flowing fabric or animal fur) are preserved in ways that skeleton-based methods simply cannot replicate.
In a blind user study, Wan-Animate-2 consistently outperforms Wan-Animate across all metrics, with over 70% of pairwise comparisons favoring the new method in overall quality. Notably, Wan-Animate-2 also surpasses Dreamina, a leading proprietary commercial platform, with participants preferring its results in the majority of comparisons. When compared against Kling-MotionControl, Wan-Animate-2 achieves comparable performance.
The limitations are worth noting. The base model requires 8× A800 GPUs for 720P generation (2× A800 for 480P), which is not consumer hardware. The Lite variant needs 4× H100s for real-time throughput. The Viewpoint LoRA is trained on synthetic Unreal Engine data, so unusual real-world camera angles may produce inconsistencies. And while the model handles diverse character types, very extreme body-shape mismatches between driver and target can still cause drift.
How to run it
The model is available on HuggingFace and ModelScope under Apache 2.0. It integrates with diffusers, DiffSynth-Studio, and ComfyUI. The diffusers path is the quickest to get running:
from diffusers import WanAnimate2Pipeline
from diffusers.utils import export_to_video, load_image
import torch
pipe = WanAnimate2Pipeline.from_pretrained(
"Wan-AI/Wan2.2-Animate-2-14B-Diffusers",
torch_dtype=torch.bfloat16
).to("cuda")
output = pipe(
image=load_image("reference.png"),
driving_video="template.mp4",
prompt="your character description here",
height=800, width=640,
num_inference_steps=40,
)
export_to_video(output.frames[0], "output.mp4", fps=24)One important workflow detail: the prompt is a Chinese-language description of the reference image's appearance (not the motion). The repo recommends using an LLM like Qwen to auto-generate this caption. The distilled variant drops inference steps to 10 and disables classifier-free guidance (guidance_scale=1.0), significantly cutting compute at a modest quality tradeoff. A live demo is also available on ModelScope Studio.
Why this matters beyond the demo videos
This technology shows broad application potential in film production, digital avatar creation, and animation production. But the more significant shift is what the Lite variant unlocks: live-streaming virtual hosts, real-time digital avatars, and interactive virtual environments , use cases that were simply not possible with offline diffusion pipelines. Every prior character animation system was designed for batch synthesis. Wan-Animate-2-Lite is the first open-source system to cross the real-time threshold at meaningful resolution.
The field has generally assumed that high-fidelity character animation requires either expensive proprietary infrastructure or explicit pose representations that cap quality. Wan-Animate-2 challenges both assumptions simultaneously , matching or beating closed-source commercial platforms while running on an open-source base model, and doing so without a single skeleton in sight.