GenRA: End-to-end Framework for LLM-Driven Animation of Rigged 3D Models

1 MacPaw AI & Research
Pipeline overview

Abstract

Animating arbitrary rigged 3D assets remains labor-intensive, while existing generative methods rarely combine broad asset support, fine-grained language control, iterative editing, and preservation of production assets. We present GenRA, an end-to-end framework for generating and refining skeletal animation directly in user-provided assets. GenRA conditions a multimodal large language model on the rig hierarchy and bind pose, multi-view renders, a natural-language instruction, and optional motion examples compactly encoded through keyframe decimation. The model produces sparse, bind-relative joint keyframes that are reconstructed into smooth animation curves and authored back into the original asset without modifying its geometry, skinning, or rig hierarchy. GenRA requires no task-specific training or retargeting and supports zero- and multi-shot generation together with localized, compositional, temporal, and quantitative language-based refinement. In 1,080 blind judgments across 40 diverse assets, GenRA achieves a 74.5% tie-aware preference rate over Puppeteer and is preferred in every evaluated category, while reducing median generation time by 83% and cost by 84%.

Method

Click on any stage above to reveal the corresponding method details.

Results

Comparison with State of the Art

We compare against Puppeteer, the closest state-of-the-art baseline that combines text conditioning, rig-based output, and support for diverse object classes. We evaluate overall preference over prompt adherence and motion quality, since generic motion metrics typically assume canonical skeletons, paired ground truth, or pretrained motion embeddings that do not transfer reliably to this setting. The benchmark uses 40 rigged assets from Articulation-XL-2.0, spanning mechanisms, characters, humanoids, plants, household objects, animals, and vehicles or robots. For each asset, we generate 3 prompts and 3 stochastic trials per prompt, yielding 360 GenRA-Puppeteer pairs. Prompts are produced once by a VLM-assisted procedure from the asset render, category label, and joint list, then used unchanged for both methods; all results are zero-shot, with no exemplar animations provided.

We conduct a blind pairwise preference study with 27 raters. Each pair receives 3 independent judgments, for a total of 1,080 ratings. We report the tie-aware preference score, where A and B denote ratings favoring GenRA and Puppeteer, respectively, and Tie denotes ratings that prefer neither method.

Tie-aware preference rate:

$$\frac{A + 0.5 \cdot \mathrm{Tie}}{A + B + \mathrm{Tie}}$$

By asset category:

Group #Models A B Tie GenRA preference rate
tool/mechanism 4 87 3 18 89%
humanoid/anthropomorphic 4 72 14 22 77%
vehicle/robot 6 116 29 17 77%
animal 7 123 24 42 76%
household item/furniture 3 51 16 14 72%
character/blob 13 220 69 62 72%
plant 3 37 21 23 60%
Overall 40 706 176 198 74.5%

By rig complexity:

Group #Models A B Tie GenRA preference rate
low complexity (≤5 joints) 16 287 59 86 76%
medium complexity (6-24 joints) 17 320 63 76 78%
high complexity (≥25 joints) 7 99 54 36 62%
Overall 40 706 176 198 74.5%

Overall, GenRA attains a 74.5% tie-aware preference rate and stays above the 50% indifference point in every reported asset category and rig-complexity group. The largest gains appear on tools/mechanisms and low- to medium-complexity rigs, where direct rig-level generation better preserves asset-specific articulation and prompt semantics, and where prior-driven methods are less helped by existing dataset coverage. Puppeteer can sometimes look more natural on highly organic motions, but its single-view optimization is more prone to motion drift, unreliable joint recovery, and weaker prompt alignment. The gap narrows on plants and high-complexity rigs, where direct generation must coordinate many coupled joints across deeper hierarchies.

Efficiency-wise, GenRA is also substantially faster and cheaper at inference time. Under realistic deployment settings, GenRA reduces median generation time by 83% and median processing cost by 84% relative to Puppeteer. Its median generation time is 120 s per animation at a median cost of $0.09, using the OpenAI API with gpt-5.4-medium. By comparison, Puppeteer requires 690 s and $0.55 per animation in total, combining a KlingAI API video prior generation step (60 s, $0.35) with a subsequent optimization stage on a Vast.ai 80 GB Nvidia A100 SXM4 instance (630 s, $0.20). This gap is consistent with the design of the two pipelines: GenRA generates directly on the target rig through a single LLM-driven stack, whereas Puppeteer combines video-prior synthesis with downstream optimization.

Approach Generation stack Median time / animation Median cost / animation
GenRA OpenAI API + gpt-5.4-medium 120 s $0.09
Puppeteer KlingAI API video prior + Vast.ai A100 SXM4 optimization 690 s $0.55

Evaluation source files, including all compared pairs and collected ratings, can be found here: Hugging Face dataset.

Animation Examples

Below we show representative qualitative results beyond the benchmark: side-by-side comparisons against Puppeteer, iterative refinement examples, and few-shot or multi-shot generations with exemplar motions.

Side-by-Side Comparisons

Note: visual differences in appearance between the two methods' videos are due to different rendering engines and do not reflect animation quality.

Iterative Refinement

GenRA's chat-based interface supports localized, compositional revisions: modifying a short interval, adjusting a single limb, or specifying approximate angles and speeds — while leaving the rest of the motion unchanged. Edits can be applied repeatedly, enabling progressive improvement or authoring of entirely new parts of the animation through follow-up prompts.

Additional Examples

Multi-shot generation on a proprietary character with animator-authored examples. Few-shot conditioning substantially improves motion specificity and stylistic consistency. The system is robust across prompt styles from short action descriptions to detailed motion directions; in several cases, the results reach production-usable quality.

Related Work

Existing motion-generation approaches broadly fall into several categories: category-specific generators trained on domain-specific datasets, limited to particular character classes such as humans or animals (MotionGPT3, AniMo, Sketch2Anim); topology-conditioned diffusion models that operate on skeleton descriptors without preserving the original rigged asset (AnyTop, Dragon); video-prior approaches that may not preserve the rig and have limited control over the configuration and look of animation (Puppeteer, AniMimic, AnimaX); and LLM-based methods that, while flexible, have been limited to rotation-only outputs or canonical representations (Huang et al.). In production pipelines, animation is authored for concrete rigged assets whose rig hierarchy, skinning weights, and geometry must remain unchanged to maintain compatibility with existing scenes and tools, while supporting iterative and fine-grained nature of refinement and editing of the animations. GenRA uniquely operates directly on user-provided rigged USD assets, preserves all scene data (geometry, skinning, materials), supports all three transformation types (translation, rotation, scale), and enables full iterative editing through a chat-based workflow — making it suitable for direct integration into production DCC pipelines.

supported;  Part. partial or task-specific;  unsupported or not demonstrated. Conditioning lists the inputs supplied to each method. Ex. denotes support for motion exemplars; Dur. duration control; G/R preservation of input geometry and rig; and Edit method-level iterative refinement.

BibTeX

@inproceedings{yaroshevych2026genra,
  title     = {GenRA: End-to-end Framework for LLM-Driven Animation of Rigged 3D Models},
  author    = {Yaroshevych, Andrii and Kryven, Pavlo and Hirna, Mariya and Shamrai, Maksym},
  booktitle = {Proceedings of the European Conference on Computer Vision (ECCV) Workshops},
  year      = {2026}
}