NeurIPS 2026

BLARM

Animating 3D Objects from Video via Blending LAtent Rigid Motion Primitives

BLARM teaser: textured animations next to their learned skinning weights
BLARM animates static 3D meshes from monocular videos using compact, time-varying latent rigid motions and time-invariant vertex-to-component skinning weights, visualized right of the textured animations. Our representation produces temporally coherent, rig-free mesh animations across diverse objects.

TL;DR

Video-driven mesh animators usually regress every vertex independently, which is high-dimensional. BLARM instead explains the motion with a small set of learned rigid transformations that change over time, blended onto the mesh by skinning weights that stay fixed. No skeletons, cages, or rig annotations are used during training or at test time.

Abstract

We introduce BLARM, a feed-forward method for video-driven 3D mesh animation. Given a monocular video and a static object mesh, BLARM predicts a temporally coherent animated mesh whose motion follows the video. Rather than relying on explicit rigs or directly regressing high-dimensional vertex motion, we represent animation using a compact set of learned, time-varying rigid motion components and time-invariant vertex-to-component skinning weights. This yields a low-dimensional deformation space without requiring skeletons, cages, skinning weights, or rig annotations. Our architecture conditions geometry-derived deformation latents on video features through factorized spatial-temporal attention, then decodes rigid transformations blended by predicted skinning weights. Trained with trajectory reconstruction, entropy regularization, and motion-aware contrastive learning, BLARM produces accurate and temporally stable animations while recovering compact, interpretable motion structure from monocular video.

01 Representation

How the object moves, separated from where it moves

Many object motions are intrinsically low-dimensional: large groups of vertices move together as rigid or nearly rigid parts. BLARM exploits this structure, but learns the parts from data instead of relying on a predefined rig. For every frame $t$ it predicts $J$ latent motion components, each decoded into a rigid transformation $(R_{t,i},\, t_{t,i}) \in SE(3)$. Each canonical vertex $x_n$ gets one set of weights $w_n$ over the non-root components, fixed across the whole video. The first component is a special root that carries the global motion of the object.

$$\hat{x}_{t,n} \;=\; R_{t,1}\Big(\sum_{i=2}^{J} w_{n,i}\,\big(R_{t,i}\,x_n + t_{t,i}\big)\Big) + t_{t,1}$$
$R_{t,i},\, t_{t,i}$ time-varying rigid motion of component $i$
$w_{n,i}$ time-invariant skinning weight of vertex $n$
$R_{t,1},\, t_{t,1}$ root component for global motion
02 Architecture

From a mesh and a video to rigid motions and skinning weights

BLARM takes a canonical mesh and a monocular video and predicts two things in a single forward pass: a sequence of time-varying rigid transformations and a set of time-invariant skinning weights.

BLARM architecture overview
Method overview. BLARM takes a canonical mesh and a monocular video as input and represents the animation using a compact set of latent rigid motion components. Geometry-aware latents are conditioned on frame-wise DINOv3 features to predict time-varying rigid transformations, while time-invariant vertex-to-component skinning weights are learned without explicit skinning supervision. The final animated sequence is obtained by blending the predicted transformations through linear blend skinning.
  1. 1

    Geometry encoding

    Surface points and normals are encoded by the frozen TripoSG shape encoder. A fixed set of $J$ learnable queries cross-attends to these dense features, DETR-style, compressing the shape into $J$ deformation tokens. Each token is a candidate motion component.

  2. 2

    Motion encoding with factorized attention

    Tokens are broadcast over time and refined by 16 blocks of DINOv3 cross-attention, spatial self-attention within each frame, and temporal self-attention across frames. This costs $O(TJ^2) + O(JT^2)$ instead of $O((TJ)^2)$ for full attention, while preserving both part-to-part coordination and temporal consistency.

  3. 3

    Rigid decoding and skinning

    Two small MLP heads decode every token into a 6D rotation (orthogonalized with Gram–Schmidt) and a translation. For the weights, each vertex combines a positional encoding with frozen PartField features and cross-attends to the time-averaged motion tokens; a softmax gives non-negative, normalized weights.

03 Training

Three losses, no rig supervision

BLARM is trained only from point trajectories. Three complementary terms shape the motion and the decomposition:

Trajectory reconstruction
$$\mathcal{L}_{rec} = \tfrac{1}{TN_v}\textstyle\sum_{t,n} \omega_{t,n}\,\lVert \hat{x}_{t,n} - x^*_{t,n}\rVert_1$$

A focal-style weight $\omega_{t,n}$ emphasizes points with large error, so articulated regions are not drowned out by static ones.

Entropy regularization
$$\mathcal{L}_{ent} = -\tfrac{1}{N_v}\textstyle\sum_{n}\sum_{i\ge 2} w_{n,i}\log w_{n,i}$$

Encourages each vertex to depend on only a few components, like a vertex bound to a few bones in a traditional rig.

Motion-aware contrastive
$$s^{skin}_{u,v} = \textstyle\sum_{i\ge 2}\sqrt{w_{u,i}\,w_{v,i}}$$

An InfoNCE loss on the Bhattacharyya similarity of skinning weights pulls together vertices that move alike and pushes apart those that do not.

Contrastive triplet construction

Mining pairs from motion

Each point trajectory is summarized by a per-frame descriptor of rotation-axis direction, translation direction, and a static flag. Motion similarity, averaged over time, picks candidate pairs, and canonical-space distance decides how they are sampled:

  • Anchor a vertex on the moving leaf
  • Positive nearby, moves the same way
  • Hard negative nearby, moves differently
  • Easy negative far away, moves differently

Hard negatives sharpen boundaries between neighbouring parts; easy negatives keep unrelated motions apart globally.

04 Results

Ground truth next to BLARM

Held-out sequences from ActionBench (16 frames) and Motion80 (variable length, up to 72 frames shown). Each clip shows the ground-truth animation on the left (this is also the video BLARM sees) and BLARM's animated mesh on the right, rendered from the same camera with the original texture. Click a clip to enlarge it.

05 Comparison

Against feed-forward mesh animators

We compare with ActionMesh, Motion3-to-4, and Mesh4D, which, like BLARM, take a video and a canonical mesh and output an animated mesh without a predefined rig. All methods receive the same ground-truth first-frame mesh.

Qualitative comparison on ActionBench
Qualitative comparison on ActionBench. Across diverse shapes, BLARM preserves the canonical mesh structure better than baselines and yields temporally more coherent animations with fewer jittering or distorted parts.
Qualitative comparison on Motion80
Qualitative comparison on Motion80. Compared to the baselines, BLARM better maintains part structure and produces more stable deformations across time, yielding animations that closely match the ground-truth motion.
06 In the wild

Beyond the benchmarks

BLARM applied to clips from animated films, each paired with a static mesh of the character. Each example shows the original video next to BLARM's animated mesh, seen from the input camera and colored by its predicted skinning weights, with the location of every component marked.

Input videoBLARM
Input videoBLARM
Input videoBLARM
07 Interpretability

Part structure, discovered without supervision

Coloring each vertex by its skinning weights shows what BLARM has learned. Without any rig or part labels, the components line up with regions that move coherently in the video. Below, each example shows the input video next to the animated mesh colored by its predicted weights, with the location of every component marked.

1 / 1

Skinning weights are predicted per 16-frame window, so in longer Motion80 sequences the colors can shift where one window hands over to the next.

08 Same object, different motion

The decomposition follows the motion

The skinning weights are predicted from the video, not fixed per mesh. Driving the same character with two different performances gives two different decompositions: in each case, the components group the vertices that move together in that video.

Input videoSkinning weights
Dance
Input videoSkinning weights
Breakdance
09 Quantitative

Geometry metrics follow the ActionMesh protocol: CD-3D, CD-4D, and the correspondence-based motion error CD-Motion. Appearance metrics compare rendered views of the predicted animation against the ground-truth renders.

Table 1 · ActionBench 128 sequences, 16 frames
MethodGeometryAppearance
CD-3D↓CD-4D↓CD-Motion↓LPIPS↓CLIP↑FVD↓DreamSim↓
Mesh4D2.575.019.240.060.95787.380.08
Motion3-to-42.495.3410.310.070.921270.800.12
ActionMesh3.305.6111.120.080.931126.900.11
BLARM (ours)1.713.077.150.050.96426.720.05
Quantitative evaluation on ActionBench. BLARM outperforms feed-forward mesh animation baselines across geometric and appearance based metrics, indicating more accurate and temporally stable mesh animation.
Table 2 · Motion80 80 sequences, variable length
MethodGeometryAppearance
CD-3D↓CD-4D↓CD-Motion↓LPIPS↓CLIP↑FVD↓DreamSim↓
Mesh4D5.4011.1324.260.110.931517.450.11
Motion3-to-42.255.8913.000.070.95735.570.06
ActionMesh2.445.4812.780.080.94791.800.08
BLARM (ours)1.933.468.720.060.97482.500.05
Quantitative evaluation on Motion80. BLARM achieves better performance across metrics, demonstrating accurate reconstruction and temporally consistent mesh motion on long animation sequences.
10 Ablations

Every piece prevents a collapse

Without the contrastive term, the model collapses onto very few non-root components and accuracy drops sharply. PartField features, entropy regularization, and the contrastive loss are complementary, and the latent rigid formulation beats directly predicting per-vertex offsets, especially on CD-Motion.

Table 3 · Components ActionBench
ModelCD-3D↓CD-4D↓CD-M↓Lat./Vtx.Lat./Shape
w/o PartField, ent., con.2.955.7813.531.001.00
w/o contrastive2.955.8812.901.001.00
Per-vertex direct prediction2.474.3310.96——
w/o PartField2.374.0710.511.8522.20
w/o entropy2.224.059.711.9727.98
Control2.224.049.481.5925.52
Final model1.713.077.151.7129.50
Lat./Vtx.: active non-root components per vertex (weight > 0.01). Lat./Shape: active components per shape.
Table 4 · Number of primitives $J$ ActionBench
ModelCD-3D↓CD-4D↓CD-M↓Lat./Vtx.Lat./Shape
$J = 15$2.534.4911.422.6314.64
$J = 31$2.224.049.481.5925.52
$J = 63$2.384.209.441.2242.01
$J = 127$2.445.1111.881.2496.27
Too few primitives limit capacity; too many fragment the representation. $J = 31$ balances both.
11 Limitations

When neighboring parts look alike

  • Entangled assignments. When nearby regions look similar but should move independently, such as a hand resting against the torso, vertices can be assigned to the wrong component and adjacent parts move together.
  • Topology must support the motion. BLARM animates the given canonical mesh; if its connectivity cannot reasonably support the target motion, the predicted deformation may show artifacts.
Ground truthBLARM
Ground truthBLARM
Ground truthBLARM
Citation

BibTeX

@inproceedings{goyal2026blarm,
  title={BLARM: Animating 3D Objects from Video via Blending Latent Rigid Motion Primitives},
  author={Goyal, Pradyumn and Ben-Shabat, Yizhak and Liu, Hsueh-Ti Derek and Jiang, Haomiao and Mukherjee, Snehasish and Spence, Kyle and Stauber, Mark and Kalogerakis, Evangelos and Zeng, Yunze},
  booktitle={Advances in Neural Information Processing Systems (NeurIPS)},
  year={2026}
}