Holo4D: Holistic 4D Reconstruction as Geometric Control for Video Diffusion
Organizations: University of Oxford · Nanyang Technological University
Abstract
Synthesizing a monocular video from a new camera trajectory requires preserving the observed scene geometry and motion while completing regions that become newly visible. Feed-forward 4D reconstructors recover the structure of the observed scene, whereas video diffusion models provide a generative prior for completing unseen content. We introduce Holo4D, a video reshooting framework that uses reconstructed 3D trajectories as a holistic source-view 4D scaffold. We project these trajectories into the requested views and encode their geometry and source appearance to guide a pretrained video diffusion model. Together with the source video and target cameras, the scaffold grounds generation in reconstructed observations while leaving unsupported regions to the generative prior. Experiments demonstrate the value of trajectory-based conditioning for camera control and novel-view synthesis. The framework accommodates different 4D reconstructors without retraining the video generator, allowing it to benefit from future advances in source reconstruction. More details can be found in our project page.
Figures & tables
| Method | mPSNR | mSSIM | mLPIPS | PSNR | SSIM | LPIPS |
|---|---|---|---|---|---|---|
| ReCamMaster | 10.34 | 0.478 | 0.628 | 10.56 | 0.326 | 0.689 |
| TrajectoryCrafter | 11.56 | 0.438 | 0.569 | 11.14 | 0.288 | 0.631 |
| EX-4D | 13.31 | 0.520 | 0.464 | 12.91 | 0.366 | 0.532 |
| Gen3C | 12.42 | 0.469 | 0.489 | 12.20 | 0.312 | 0.550 |
| Vista4D | 12.84 | 0.487 | 0.484 | 12.46 | 0.328 | 0.535 |
| [0pt][0pt] Holo4D -14B α | 13.22 | 0.484 | 0.435 | 12.68 | 0.326 | 0.509 |
| Camera control | VBench [ 84 ] | ||||||||
| Method | Control | ATE | RPE-T | RPE-R | Aest. | Imag. | Subj. | Backg. | Temp. |
| ReCamMaster | Extrinsics | 9.547 | 15.37 | 0.099 | 0.493 | 0.503 | 0.922 | 0.942 | 0.256 |
| TrajectoryCrafter | Point cloud | 3.533 | 4.817 | 0.207 | 0.500 | 0.548 | 0.894 | 0.923 | 0.253 |
| EX-4D | Point cloud | 2.903 | 3.560 | 0.587 | 0.442 | 0.377 | 0.827 | 0.899 | 0.238 |
| Gen3C | Point cloud | 5.168 | 7.581 | 0.386 | 0.454 | 0.450 | 0.856 | 0.911 | 0.248 |
| Vista4D | Point cloud | 3.576 | 3.608 | 0.132 | 0.478 | 0.534 | 0.904 | 0.926 | 0.256 |
| Method | ATE | RPE-T | RPE-R | PSNR | SSIM | LPIPS | FVD |
|---|---|---|---|---|---|---|---|
| ReCamMaster | 12.68 | 62.20 | 0.749 | 13.66 | 0.118 | 0.236 | 1849 |
| TrajectoryCrafter | 5.018 | 20.61 | 0.225 | 13.64 | 0.256 | 0.178 | 1878 |
| EX-4D | 8.163 | 57.89 | 0.563 | 12.69 | 0.273 | 0.271 | 1916 |
| Gen3C | 5.724 | 40.03 | 0.469 | 13.10 | 0.103 | 0.211 | 1633 |
| Vista4D | 5.953 | 25.19 | 0.255 | 14.28 | 0.285 | 0.151 | 1214 |
| [0pt][0pt] Holo4D -14B | 1.065 | 6.154 | 0.073 | 16.52 | 0.441 | 0.119 | 973 |
| Condition | ATE | RPE-T | RPE-R |
|---|---|---|---|
| w/o source color | 2.327 | 2.125 | 0.094 |
| w/o target depth | 1.882 | 2.135 | 0.068 |
| + rendered RGB/masks | 1.83 | 2.48 | 0.098 |
| [0pt][0pt] Full ( Holo4D ) | 1.621 | 2.077 | 0.065 |
| Source geometry | ATE | RPE-R | PSNR | SSIM | LPIPS |
|---|---|---|---|---|---|
| Open-D4RT ∗ | 1.858 | 0.151 | 13.10 | 0.158 | 0.169 |
| V-DPM | 1.660 | 0.079 | 14.96 | 0.268 | 0.151 |
| 4RC | 1.353 | 0.087 | 14.98 | 0.278 | 0.131 |
| CoWTracker ∗ | 1.205 | 0.107 | 15.09 | 0.294 | 0.137 |
| GT geometry | 1.065 | 0.073 | 16.52 | 0.441 | 0.119 |
| 3.033 | 0.221 | 13.44 | 0.171 | 0.172 |
| Method | VGGT- | Pi3 | |||
|---|---|---|---|---|---|
| ATE | RPE-T | RPE-R | TransErr 2 | RotErr | |
| Vista4D | 46.04 | 36.81 | 0.255 | 4.573 | 4.169 |
| Holo4D -14B α | 46.31 | 21.33 | 1.142 | 2.164 | 14.98 |
| Holo4D -14B β | 13.76 | 9.064 | 0.301 | 2.367 | 6.098 |
| Overall | LIBERO-plus perturbation category | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Initialization | LIBERO | LIB.-plus | Background | Camera | Language | Light | Layout | Robot | Noise |
| Official release | 96.80 | 50.91 | 50.09 | 16.82 | 69.94 | 81.79 | 61.97 | 46.00 | 39.41 |
| Control (Wan2.2) | 95.60 | 50.81 | 56.32 | 9.01 | 70.79 | 85.20 | 66.62 | 49.10 | 31.73 |
| [0pt][0pt] Holo4D init. | 96.45 | 52.10 | 63.38 | 8.01 | 71.57 | 89.14 | 66.16 | 49.16 | 32.92 |
Appendix figures & tables29 assets
Supplementary material from the paper’s appendix.
Appendix
| Submitted version | This version | |
|---|---|---|
| Source video | VAE latents, width-concatenated with target latents | Unchanged |
| RGB-D branch | Target-view RGB, normalized depth, and validity rendered from a static/dynamic point cache; Conv3d geometry tokens | Removed |
| Track branch | Tracked positions; z-buffer aggregation in the described design; fused with RGB-D tokens | Positions, source color, target-camera depth, and validity; channel-wise max with occupancy; injected along channels in every DiT block |
| Target cameras | Plücker rays | Plücker rays, encoded into camera features |
| Backbone | Wan2.1-I2V-14B; Wan2.1-T2V-1.3B | Wan2.1-T2V-14B |
| Resolution | , then | , then |
| Index | Dataset | Real / Syn. | Dyn. / Static | Depth, cameras | 3D tracks | Stage 1 | Stage 2 |
|---|---|---|---|---|---|---|---|
| 1 | Syn4D [ 73 ] | Synthetic | Dynamic | Ground truth | Ground truth | 31.65 | 40.00 |
| 2 | MultiCamVideo [ 1 ] | Synthetic | Dynamic | VGGT- | CoWTracker | 0.00 | 30.00 |
| 3 | DL3DV [ 75 ] | Real | Static | DA3 + dataset | Fixed points | 32.91 | 20.00 |
| 4 | MVS-Synth [ 77 ] | Synthetic | Static | Ground truth | Fixed points | 6.33 | 10.00 |
| 5 | Kubric [ 74 ] | Synthetic | Dynamic | Ground truth | Box motion | 12.66 | 0.00 |
| 6 | TartanAir [ 78 ] | Synthetic | Static | Ground truth | Fixed points | 12.66 | 0.00 |
| Method | Backbone | Res. |
|---|---|---|
| ReCamMaster | Wan2.1-T2V-1.3B | 480 832 |
| TrajectoryCrafter | CogVideoX-5B | 384 672 |
| EX-4D | Wan2.1-I2V-14B | 512 512 |
| Gen3C | Cosmos-7B | 704 1280 |
| Vista4D | Wan2.1-T2V-14B | 384 672 |
| [0pt][0pt] Holo4D -14B | Wan2.1-T2V-14B | 384 672 |
| Method | Steps | Aest. | Imag. | Subj. | Backg. | Temp. |
|---|---|---|---|---|---|---|
| Vista4D α | 50 | 0.478 | 0.534 | 0.904 | 0.926 | 0.256 |
| Holo4D -14B α | 50 | 0.493 | 0.601 | 0.910 | 0.931 | 0.253 |
| Holo4D -14B β | 50 | 0.478 | 0.589 | 0.891 | 0.919 | 0.252 |
| Holo4D -14B β | 25 | 0.471 | 0.580 | 0.883 | 0.910 | 0.249 |
| Holo4D -5B α | 50 | 0.501 | 0.559 | 0.894 | 0.928 | 0.253 |
| Holo4D -5B β | 50 | 0.489 | 0.554 | 0.881 | 0.920 | 0.252 |
| Method | Steps | VGGT- | Pi3 | |||
|---|---|---|---|---|---|---|
| ATE | RPE-T | RPE-R | TransErr 2 | RotErr | ||
| Vista4D α | 50 | 3.576 | 3.608 | 0.132 | 6.201 | 2.070 |
| Holo4D -14B α | 50 | 1.657 | 2.415 | 0.102 | 3.206 | 2.332 |
| Holo4D -14B β | 50 | 0.719 | 1.299 | 0.101 | 3.359 | 2.284 |
| Holo4D -14B β | 25 | 0.729 | 1.095 | 0.077 | 3.625 | 1.785 |
| Holo4D -5B α | 50 | 1.464 | 2.952 | 0.116 | 3.195 | 2.275 |
| Mask | ATE | RPE-T | RPE-R | TransErr 2 | RotErr |
|---|---|---|---|---|---|
| Motion-derived | 0.984 | 1.527 | 0.114 | 3.351 | 2.364 |
| [0pt][0pt] GMOS | 0.719 | 1.299 | 0.101 | 3.359 | 2.284 |
| Method | Geometry | ATE | RPE-T | RPE-R | TransErr 2 | RotErr |
|---|---|---|---|---|---|---|
| Vista4D | GT | 2.233 | 12.12 | 0.079 | 13.36 | 0.372 |
| [0pt][0pt] Holo4D -14B | GT | 1.299 | 8.121 | 0.051 | 1.881 | 0.242 |
| [0pt][0pt] Holo4D -5B | GT | 1.957 | 11.19 | 0.080 | 5.023 | 0.515 |
| Vista4D | Pi3 | 2.348 | 10.15 | 0.067 | 19.26 | 0.651 |
| [0pt][0pt] Holo4D -14B | Pi3 + GT 2D | 1.330 | 8.158 | 0.052 | 5.715 | 0.534 |
| [0pt][0pt] Holo4D -5B | Pi3 + GT 2D | 1.996 | 10.40 | 0.084 | 13.50 | 0.740 |
| Condition | VGGT- | Pi3, source-aligned | Rot. gain | |||
|---|---|---|---|---|---|---|
| ATE | RPE-T | RPE-R | TransErr 2 | RotErr | ||
| Plücker only | 15.03 | 60.92 | 1.423 | 0.9866 | 31.26 | 0.0218 |
| + rendered RGB-D | 16.21 | 41.69 | 1.565 | 0.7625 | 33.59 | 0.0027 |
| + rendered RGB-D + tracks | 16.14 | 45.22 | 1.642 | 0.7117 | 33.25 | 0.0096 |
| + multi-frame RGB-D + tracks | 16.39 | 34.69 | 1.635 | 0.6854 | 33.29 | 0.0149 |
| Condition | ATE | RPE-T | RPE-R |
|---|---|---|---|
| Conditioning variants (training not matched) | |||
| Plücker rays only | 10.65 | 7.32 | 0.373 |
| PCD(RGB-D) + valid mask, no tracks | 10.36 | 9.16 | 0.236 |
| PCD(RGB-D) + 3D tracks | 2.35 | 2.38 | 0.086 |
| Tracks without per-track color | 2.33 | 2.13 | 0.094 |
| [0pt][0pt] 3D tracks only ( Holo4D ) | 1.62 | 2.08 | 0.065 |
| Configuration | mPSNR | mSSIM | mLPIPS | PSNR | SSIM | LPIPS |
|---|---|---|---|---|---|---|
| Plücker rays only | 11.23 | 0.442 | 0.630 | 11.36 | 0.281 | 0.717 |
| RGB render | 11.91 | 0.466 | 0.611 | 11.95 | 0.314 | 0.725 |
| depth + valid mask | 11.93 | 0.453 | 0.640 | 11.93 | 0.296 | 0.758 |
| 3D tracks (single-frame) | 13.58 | 0.477 | 0.490 | 13.20 | 0.319 | 0.568 |
| multi-frame static cache | 13.65 | 0.479 | 0.497 | 13.28 | 0.322 | 0.581 |
| Method | PSNR | SSIM | LPIPS | mPSNR | mSSIM | mLPIPS |
|---|---|---|---|---|---|---|
| ViDAR [ 26 ] | 12.90 | 0.385 | 0.734 | 13.01 | 0.525 | 0.653 |
| [0pt][0pt] Holo4D -14B α | 12.68 | 0.326 | 0.509 | 13.22 | 0.484 | 0.435 |
| [0pt][0pt] Holo4D -14B β | 13.20 | 0.348 | 0.465 | 14.03 | 0.507 | 0.379 |
| Method | PSNR | SSIM | LPIPS | ATE | RPE-T | RPE-R | FVD |
|---|---|---|---|---|---|---|---|
| ReCamMaster | 12.40 | 0.277 | 0.761 | 11.69 | 63.79 | 0.776 | 1908 |
| TrajectoryCrafter | 9.418 | 0.176 | 0.725 | 9.636 | 39.98 | 0.522 | 3073 |
| EX-4D | 9.865 | 0.163 | 0.863 | 18.76 | 89.83 | 2.438 | 2625 |
| Gen3C | 11.72 | 0.216 | 0.686 | 9.336 | 52.28 | 0.395 | 1693 |
| Vista4D | 10.98 | 0.158 | 0.668 | 9.972 | 41.56 | 0.419 | 1525 |
| [0pt][0pt] Holo4D -14B | 11.70 | 0.180 | 0.667 | 3.267 | 32.09 | 0.272 | 1711 |
| Syn4D (exact depth) | iPhone (pseudo-reference) | |||||||
| VGGT- | 4RC | VGGT- | 4RC | |||||
| Method | AbsRel | AbsRel | AbsRel | AbsRel | ||||
| ReCamMaster | 0.762 | 0.311 | 0.738 | 0.298 | 0.152 | 0.765 | 0.121 | 0.835 |
| TrajectoryCrafter | 0.673 | 0.367 | 0.713 | 0.337 | 0.109 | 0.848 | 0.098 | 0.881 |
| EX-4D | 0.673 | 0.298 | 0.766 | 0.232 | 0.109 | 0.823 | 0.112 | 0.877 |
| Gen3C | 0.740 | 0.337 | 0.736 | 0.326 | 0.098 | 0.862 | 0.112 | 0.895 |
| Source geometry | ATE | RPE-T | RPE-R | PSNR | SSIM | LPIPS | FVD |
|---|---|---|---|---|---|---|---|
| VGGT- + Open-D4RT | 1.858 | 11.22 | 0.151 | 13.10 | 0.158 | 0.169 | 1337 |
| V-DPM | 1.660 | 8.904 | 0.079 | 14.96 | 0.268 | 0.151 | 1252 |
| 4RC | 1.353 | 7.148 | 0.087 | 14.98 | 0.278 | 0.131 | 1168 |
| VGGT- + CoWTracker | 1.205 | 7.688 | 0.107 | 15.09 | 0.294 | 0.137 | 1216 |
| Ground-truth tracks | 1.065 | 6.154 | 0.073 | 16.52 | 0.441 | 0.119 | 1098 |
| GT tracks, | 3.033 | 22.53 | 0.221 | 13.44 | 0.171 | 0.172 | 1375 |
| Stage | Time (s) | Share |
|---|---|---|
| 4RC feed-forward | ||
| Static cache + rendering | ||
| Dynamic render + fusion | ||
| 3D-track encoding | ||
| Denoising + decoding | ||
| Warm-pipeline total |
| LIBERO | LIBERO-plus | ||||||
|---|---|---|---|---|---|---|---|
| Suite | Official | Ctrl. | Ours | Tasks | Official | Ctrl. | Ours |
| Spatial | 97.40 | 97.00 | 97.60 | 2,402 | 54.58 | 59.87 | 55.08 |
| Object | 99.40 | 99.20 | 99.20 | 2,518 | 69.46 | 62.43 | 65.45 |
| Goal | 96.40 | 95.20 | 96.00 | 2,591 | 37.32 | 38.67 | 44.89 |
| LIBERO-10 | 94.00 | 91.00 | 93.00 | 2,519 | 42.83 | 43.03 | 43.35 |
| All | 96.80 | 95.60 | 96.45 | 10,030 | 50.91 | 50.81 | 52.10 |
| Asset | License and scope |
|---|---|
| Training and evaluation data | |
| Syn4D | CC BY 4.0; underlying assets retain their individual terms. |
| MultiCamVideo , DyCheck iPhone | Apache 2.0 (dataset releases). |
| DL3DV-10K | CC BY-NC 4.0 and DL3DV-10K Terms of Use. |
| MVS-Synth | Custom terms: research and educational use only. |
| Kubric , RealEstate10K | Apache 2.0 (code); rendered assets/source videos have separate terms. |
Camera-Controlled Video Generation
Camera-controlled video generation creates videos that follow specified viewpoints and camera paths while preserving coherent scenes and motion.
See all 135 papers