Lift tracks with predicted depth
Point trackers and a monocular depth model give 2D tracks and per-frame depth. Every tracked point is lifted to 3D, and the tracks are split into static and dynamic ones.
RSS 2025 Best Systems Paper Award
Awarded to our conference version, XM: Building Rome with Convex Optimization →
Overview · drag the slider or let it play
From (a) 2D tracks and monocular depth, a solver with certified global optimality recovers (b) the cameras, static geometry, and dynamic motion, which initialize (c) 4D Gaussian splatting for rendering.
Step 1 of 4 · Input
An off-the-shelf point tracker gives 2D tracks, and a monocular depth model gives per-frame depth. Masks split the tracks into static and dynamic ones.
Step 2 of 4 · Preprocess
Each 2D observation is lifted to a 3D point with its predicted depth. The depth of each frame is only known up to scale, so the solver also estimates one scale per frame. The clip lifts one frame this way: every pixel slides along its camera ray to its depth.
Step 3 of 4 · Solve
Our GPU solver certifies a scaled bundle adjustment over the static tracks as globally optimal, then the deformation graph's motion. The clip replays it: each frame's lifted depth falls into place as the cameras settle over eight iterations, then the dynamic tracks play.
Step 4 of 4 · Render
The certified cameras and graph motion initialize dynamic Gaussian splatting, which refines appearance and geometry for novel-view rendering. The clip is that model rendered from the panel's viewpoint, with the same tracked points.
XM4D splits 4D reconstruction into a static and a dynamic stage, and solves each one with a certifiably globally optimal GPU solver before any photometric training.
Each run is seen from one of its input cameras, held fixed while time plays: the trained 4D Gaussians rendered from it, the 3D tracks, and the embedded deformation graph that moves the dynamic points.
Turn each reconstruction around: its 4D Gaussians as trained, the deformation graph that moves the dynamic ones, the input cameras XM4D estimated, and 3D tracks of a few dynamic Gaussians.
Loading…
Drag to orbit · right-drag or shift-drag to pan · scroll to zoom
Both stages are solved by the same GPU Burer–Monteiro solver. These clips replay its iterates, from a copy of the solver that saved every one.
Static solve: scaled bundle adjustment over the static tracks. Every frame’s lifted depth is placed by that iterate’s camera and depth scale, and comes into register as the cameras settle.
Deformation graph: one segment’s rotation-only problem. Each node’s translations follow from its rotations in closed form. The clip starts from zero translation, with every node at its rest position, and from identity rotations, shown as the faint frames. The inset plots the cost above the optimum.
XM4D’s motion is explicit: a graph of nodes, each with a position and a rotation per frame, that carries the dynamic Gaussians. The reconstruction can therefore be edited and re-animated. A motion can drive a robot, parts can be posed by hand, and the moving object can be left out. The static solver on its own also tracks a known object in 6D.
For people, the graph’s nodes are body joints, so the solved motion is a skeleton animation. A Unitree G1 humanoid follows the 17 joints of the body pose through inverse kinematics on its own joints, within their limits and with its own link lengths. It can dance beside the dancer, or take her place.
Point the static solver at one object instead of the scene. The object’s tracked surface points, lifted with the depth, form a rigid scene of their own, and the camera’s motion relative to them is the object’s motion. One global solve over the whole video gives the object’s pose in every frame, with no pose network and no per-frame model fitting. The object frame is set once: by registering the CAD model to the cloud XM fused, or by the first frame’s pose.
| Method | CAD model | First-frame pose | ADD‑S | ADD |
|---|---|---|---|---|
| XM4D (static solver) | registered once | not used | 93.34 | 83.99 |
| XM4D (static solver) | not used | ground truth | 92.15 | 86.28 |
| BundleTrack | not used | ground truth | 92.53 | 87.34 |
| BundleSDF | not used | ground truth | 93.77 | 86.95 |
| Wüthrich et al. | every frame | ground truth | 89.18 | 78.28 |
| se(3)-TrackNet | every frame | ground truth | 95.53 | 92.66 |
| FoundationPose | every frame | ground truth | 96.42 | 93.09 |
Our rows follow the benchmark’s evaluation script on every frame, with masks from SAM 2 prompted by the first-frame mask. The other rows are as reported in FoundationPose (Wen et al., CVPR 2024), Table 4. The solve is certified globally optimal on 6 of the 9 videos; on the other three the duality gap bounds the suboptimality by 1.6–8 %. Most of the remaining error is rotation drift where the object turns fast or shows a new face and few tracks survive. Methods that compare against the CAD model in every frame avoid that drift. Data: Wen et al., IROS 2020; YCB models (CC BY 4.0).
For the fridge, the graph is one rigid node per door. Each door’s hinge, an axis and a point on it, is fitted to its solved poses (within a few millimetres), and the doors’ Gaussians are its part. Drag a slider to turn that door about its hinge, including combinations of door angles the video never showed.
Loading…
Drag to orbit · right-drag or shift-drag to pan · scroll to zoom
Leaving out the dynamic Gaussians and rendering every frame from its own camera removes the car from the video. The road behind it comes from the frames where it was seen.
Point trackers and a monocular depth model give 2D tracks and per-frame depth. Every tracked point is lifted to 3D, and the tracks are split into static and dynamic ones.
A scaled bundle adjustment over camera poses, per-frame depth scales, and static landmarks reduces to a QCQP over scaled rotations. Its SDP relaxation is solved by a GPU Riemannian staircase that returns a certificate of global optimality.
Dynamic motion is an embedded deformation graph whose node transformations are expressed relative to one rest frame. Tracking, rigidity, and smoothness then reduce to a rotation-only QCQP that the same certified solver handles.
The certified cameras and graph motion initialize dynamic Gaussian splatting, which refines appearance and geometry for novel-view rendering.
XM4D is the journal extension of XM, our RSS 2025 solver for static structure from motion. It keeps XM's certifiable optimization and carries it over to dynamic scenes.
RSS 2025 Best Systems Paper Award
This work · journal extension
Accurate 4D reconstruction remains challenging: jointly estimating camera motion, scene geometry, and non-rigid deformation entails highly nonconvex optimization, making global optimality difficult to guarantee. We present XM4D, a framework for accurate and efficient 4D reconstruction built upon certifiably globally optimal geometric optimization. By separating camera motion estimation from non-rigid deformation, we formulate both stages as structured quadratically constrained quadratic programs (QCQP) that admit semidefinite programming (SDP) relaxations and verifiable global optimality certificates of the resulting SDPs. For camera motion estimation, we lift static point tracks into 3D using foundational depth prediction models and formulate a scaled bundle adjustment problem that jointly estimates camera poses, depth scales, and static landmarks. By analytically eliminating translations and landmarks, we reduce the problem to a QCQP over scaled rotations. For non-rigid reconstruction, we represent dynamic motion using an embedded deformation graph (EDG) and show that its tracking, rigidity, and temporal regularization objectives similarly reduce to a rotation-only QCQP. Both problems admit SDP relaxations that we solve efficiently with a GPU-accelerated Burer–Monteiro solver based on Riemannian optimization. The recovered geometry further initializes dynamic Gaussian splatting for photometric refinement. Extensive experiments across seven benchmarks demonstrate accurate camera motion estimation on both static and dynamic scenes, efficient optimization that scales to thousands of frames, and state-of-the-art novel-view rendering quality.
@article{han2026xm4d,
title = {{XM4D}: Non-Rigid Convex Structure from Motion with Embedded
Deformation Graphs for {4D} Reconstruction},
author = {Han, Haoyu and Lei, Jiahui and Benarroch Jedlicki, Jack and Yang, Heng},
year = {2026}
}
If you use the static solver, please also cite XM:
@inproceedings{han2025xm,
title = {Building Rome with Convex Optimization},
author = {Han, Haoyu and Yang, Heng},
booktitle = {Robotics: Science and Systems (RSS)},
year = {2025}
}