PageSourceSearch

https://bshfang.github.io/worldreel/

html bshfang.github.io collected 2026-10-03 08:44:27 UTC 46,034 bytes, 1,187 lines download raw bytes

1<!doctype html>
2<html lang="en">
3
4<head>
5  <meta charset="UTF-8" />
6  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
7  <title>WorldReel</title>
8  <style>
9    body {
10      padding: 2em;
11      font-family: sans-serif;
12      background-color: #f7f7f7;
13      color: #333;
14      margin: 0;
15    }
16
17    .hero {
18      text-align: center;
19      padding: 2.5em 2.5em;
20      background-color: #ffffff;
21      color: #1f252d;
22      border-radius: 1em;
23      margin-bottom: 2em;
24      border: 1px solid #e5e5e5;
25      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
26    }
27
28    .hero h1 {
29      font-size: 2.2em;
30      margin: 0;
31      font-weight: bold;
32      margin-bottom: 0.5em; /* 稍微增加标题和作者之间的间距 */
33    }
34
35    .publication-venue {
36      display: block;
37      margin: 0 0 0.9em;
38      color: #d65252;
39      font-size: 1.65em;
40      font-weight: 700;
41      line-height: 1.05;
42    }
43
44    .hero p {
45      font-size: 1.15em;
46      margin: 0.75em 0 0;
47    }
48
49    .publication-authors {
50      font-family: 'Google Sans', sans-serif;
51    }
52
53    .author-block {
54      font-size: 20px;
55      color: #1f252d;
56      padding: 0 5px;
57      display: inline-block;
58    }
59
60    .author-block a {
61      color: inherit;
62      text-decoration: none;
63    }
64    
65    .author-block a:hover {
66      text-decoration: underline;
67    }
68
69    .publication-affiliations {
70      margin-top: 10px;
71      font-size: 16px;
72      color: #55616a;
73    }
74
75    .affiliation-block {
76      display: inline-block;
77      margin: 0 10px;
78    }
79
80    .hero-actions {
81      display: flex;
82      justify-content: center;
83      gap: 0.75em;
84      margin-top: 1.5em;
85      flex-wrap: wrap;
86    }
87
88    .hero-button {
89      display: inline-flex;
90      align-items: center;
91      gap: 0.5em;
92      padding: 0.55em 1.2em;
93      border-radius: 0.8em;
94      border: 1px solid #2d3138;
95      background-color: #2d3138;
96      color: #ffffff;
97      text-decoration: none;
98      font-weight: 600;
99      transition: all 0.18s ease;
100      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
101    }
102
103    .hero-button:hover {
104      background-color: #181c22;
105      color: #ffffff;
106      border-color: #181c22;
107    }
108
109    .hero-button svg {
110      width: 18px;
111      height: 18px;
112    }
113
114    .hero .hero-tldr {
115      display: block;
116      margin: 1.1em 0 0;
117      padding: 0 1em;
118      font-size: 1.02em;
119      line-height: 1.55;
120      color: #4a5560;
121      text-align: center;
122      white-space: normal;
123      overflow-wrap: anywhere;
124    }
125
126    .hero .hero-tldr strong {
127      color: #1f252d;
128      font-weight: 700;
129    }
130
131    .overview-figure {
132      width: 85%;
133      max-width: 1100px;
134      height: auto;
135      display: block;
136      margin: 1em auto;
137      border: none;
138      border-radius: 0;
139      box-shadow: none;
140      overflow: visible;
141    }
142
143    .overview-caption {
144      max-width: 1100px;
145      margin: 0 auto;
146      font-size: 0.97em;
147      line-height: 1.6em;
148      color: #444;
149      text-align: left;
150    }
151
152    .bibtex-block {
153      background-color: #ffffff;
154      border: 1px solid #e5e5e5;
155      border-radius: 1em;
156      padding: 2em;
157      box-shadow: 0 0 1em 0 rgba(0, 0, 0, 0.1);
158      margin: 0 0 3em 0;
159    }
160
161    .bibtex-block .teaser-title {
162      text-align: center;
163    }
164
165    .bibtex-code {
166      background: #f1f2f5;
167      color: #1f252d;
168      border-radius: 0.6em;
169      padding: 1.1em;
170      overflow-x: auto;
171      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
172      font-size: 0.9em;
173      margin: 0 auto;
174      border: 1px solid #dcdfe3;
175      max-width: 960px;
176    }
177
178
179    .section-nav {
180      display: flex;
181      flex-wrap: wrap;
182      justify-content: center;
183      gap: 1em;
184      margin-bottom: 2em;
185    }
186
187    .section-button {
188      background-color: #ffffff;
189      border-radius: 999px;
190      border: 2px solid #333;
191      color: #333;
192      padding: 0.6em 1.5em;
193      text-decoration: none;
194      font-weight: 600;
195      transition: background-color 0.2s ease, color 0.2s ease;
196    }
197
198    .section-button:hover {
199      background-color: #333;
200      color: #fff;
201    }
202
203    .teaser {
204      text-align: center;
205      margin-bottom: 3em;
206      padding: 2em;
207      background-color: #ffffff;
208      border-radius: 1em;
209      box-shadow: 0 0 1em 0em rgba(0, 0, 0, 0.1);
210    }
211
212    .teaser-title {
213      font-size: 2em;
214      font-weight: bold;
215      margin-bottom: 0.5em;
216    }
217
218    .teaser-description {
219      font-size: 1.05em;
220      line-height: 1.55em;
221      margin-bottom: 2em;
222      max-width: 1100px;
223      margin-left: auto;
224      margin-right: auto;
225    }
226
227    /* --- Ablation Text Description Styles --- */
228    .ablation-text {
229      text-align: left;
230      max-width: 1000px;
231      margin: 0 auto 2em auto;
232      padding: 1.5em;
233      background-color: #f4f4f4; /* Slightly different grey to distinguish */
234      border-radius: 0.5em;
235      font-size: 0.95em;
236      line-height: 1.6em;
237    }
238
239    .ablation-text strong {
240      color: #222;
241      font-weight: 700;
242    }
243    
244    .ablation-text ul {
245      margin-top: 0.5em;
246      padding-left: 1.5em;
247    }
248    
249    .ablation-text li {
250      margin-bottom: 0.5em;
251    }
252
253    .placeholder-note {
254      color: #666;
255      font-style: italic;
256    }
257
258    .ablation-sample {
259      margin-bottom: 2.5em;
260    }
261
262    .ablation-input-row {
263      display: flex;
264      justify-content: center;
265      gap: 1.25em;
266      margin-bottom: 1em;
267    }
268
269    .ablation-row {
270      display: flex;
271      flex-wrap: nowrap;
272      gap: 1.25em;
273      justify-content: flex-start; 
274      overflow-x: auto;
275      padding-bottom: 0.5em;
276      padding-left: 1em; 
277      padding-right: 1em;
278    }
279
280    @media (min-width: 1600px) {
281      .ablation-row {
282        justify-content: center;
283      }
284    }
285
286    .ablation-row::-webkit-scrollbar {
287      height: 8px;
288    }
289
290    .ablation-row::-webkit-scrollbar-thumb {
291      background: rgba(0, 0, 0, 0.25);
292      border-radius: 999px;
293    }
294
295    .ablation-item {
296      flex: 0 0 auto;
297      text-align: center;
298    }
299
300    .ablation-label {
301      font-size: 1em;
302      font-weight: 600;
303      margin-bottom: 0.4em;
304    }
305
306    .ablation-media {
307      width: 300px;
308      border-radius: 0.5em;
309      box-shadow: 0 0 1em rgba(0, 0, 0, 0.15);
310      display: block; 
311    }
312
313    @media (max-width: 1200px) {
314      .ablation-media {
315        width: 280px;
316      }
317    }
318
319    @media (max-width: 900px) {
320      .ablation-media {
321        width: 260px;
322      }
323    }
324
325    @media (max-width: 600px) {
326      .ablation-media {
327        width: 220px;
328      }
329    }
330
331    .generated-group {
332      margin-bottom: 2.5em;
333    }
334
335    .generated-row {
336      display: flex;
337      flex-wrap: nowrap;
338      justify-content: flex-start;
339      gap: 1em;
340      overflow-x: auto;
341      padding-bottom: 0.5em;
342      padding-left: 1em;
343      padding-right: 1em;
344    }
345    
346    @media (min-width: 1600px) {
347      .generated-row {
348        justify-content: center;
349      }
350    }
351
352    .generated-row::-webkit-scrollbar {
353      height: 8px;
354    }
355
356    .generated-row::-webkit-scrollbar-thumb {
357      background: rgba(0, 0, 0, 0.25);
358      border-radius: 999px;
359    }
360
361    .generated-item {
362      flex: 0 0 auto;
363      text-align: center;
364    }
365
366    .generated-label {
367      font-weight: 600;
368      margin-bottom: 0.4em;
369      min-height: 1.2em;
370    }
371
372    .generated-media {
373      width: 300px;
374      border-radius: 0.5em;
375      box-shadow: 0 0 1em rgba(0, 0, 0, 0.15);
376    }
377
378    @media (max-width: 1200px) {
379      .generated-media {
380        width: 280px;
381      }
382    }
383
384    @media (max-width: 900px) {
385      .generated-media {
386        width: 260px;
387      }
388    }
389
390    @media (max-width: 600px) {
391      .generated-media {
392        width: 220px;
393      }
394    }
395  </style>
396</head>
397
398<body>
399  <div class="hero">
400    <h1>WorldReel: 4D Video Generation with Consistent Geometry and Motion Modeling</h1>
401    <div class="publication-venue">CVPR 2026</div>
402    
403    <div class="publication-authors">
404      <span class="author-block">
405        <a href="https://bshfang.github.io/" target="_blank">Shaoheng Fang</a><sup>1</sup>,
406      </span>
407      <span class="author-block">
408        <a href="https://hwjiang1510.github.io/" target="_blank">Hanwen Jiang</a><sup>2</sup>,
409      </span>
410      <span class="author-block">
411        <a href="https://bbaaii.github.io/" target="_blank">Yunpeng Bai</a><sup>1</sup>,
412      </span>
413      <span class="author-block">
414        <a href="http://www0.cs.ucl.ac.uk/staff/n.mitra/" target="_blank">Niloy J. Mitra</a><sup>2,3</sup>,
415      </span>
416      <span class="author-block">
417        <a href="https://www.cs.utexas.edu/~huangqx/" target="_blank">Qixing Huang</a><sup>1</sup>
418      </span>
419    </div>
420
421    <div class="publication-affiliations">
422      <span class="affiliation-block"><sup>1</sup>The University of Texas at Austin</span>
423      <span class="affiliation-block"><sup>2</sup>Adobe Research</span>
424      <span class="affiliation-block"><sup>3</sup>University College London</span>
425    </div>
426
427    <div class="hero-actions">
428      <a class="hero-button" href="https://arxiv.org/pdf/2512.07821">
429        <svg viewBox="0 0 448 512" aria-hidden="true">
430          <path fill="currentColor" d="m119.65 351.996c-5.85.135-11.19-3.299-13.5-8.676-2.2-5.27-.62-8.967 4.2-15.865 7.05-10.38 78.82-96.563 78.82-96.563l-15.88-14.863c-13.38-13.378-13.96-31.333-1.51-43.775l18.49-17.613-51.59-63.377c-4.01-4.268-6.49-11.756-4.25-17.131 2.28-5.536 7.7-9.129 13.68-9.07 3.84.096 7.44 1.874 9.84 4.861l61.37 57.057 94.58-90.07c3.19-3.084 7.44-4.84 11.88-4.91 1.61.004 3.2.245 4.74.715 5.78 1.806 10.25 6.418 11.87 12.252 1.3 5.474-.28 11.234-4.18 15.284l-83.09 100.012 14.88 13.834c11.1 10.003 11.16 27.39.13 37.469l-16.3 15.63 56.26 66.444.07.086.07.09c5.03 6.53 7.43 11.561 4.84 17.94-3.13 5.968-8.7 10.29-15.26 11.851-.68.091-1.36.136-2.04.137v-.012c-4.43-.271-8.61-2.131-11.78-5.24l-.13-.108-.12-.111-65.21-59.127-89.9 86.24s-5.33 6.478-10.97 6.612zm178.11-33.041c.48-.002.96-.033 1.43-.096 4.84-1.333 8.96-4.54 11.43-8.91 1.45-3.563 1-6.457-4.2-13.215l-56.05-66.218-26.38 25.303 64.95 58.906c2.34 2.415 5.47 3.911 8.82 4.217zm-105.32-91.553L334.45 57.244c2.79-3.489 4.53-6.979 3.34-10.912-1.16-4.303-4.43-7.718-8.68-9.057-1.08-.334-2.21-.504-3.34-.506-3.21.076-6.27 1.356-8.58 3.588L175.14 175.642c-11.17 11.172-9.48 26.02 1.39 36.895z"/>
431        </svg>
432        <span>ArXiv</span>
433      </a>
434      <a class="hero-button" href="WorldReel_arxiv.pdf" target="_blank" rel="noopener">
435        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
436          <path d="M7 3h7l5 5v13a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"></path>
437          <path d="M14 3v5h5"></path>
438          <path d="M9 13h6M9 17h6"></path>
439        </svg>
440        <span>Paper (PDF)</span>
441      </a>
442      <a class="hero-button" href="https://github.com/bshfang/WorldReel" target="_blank" rel="noopener">
443        <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
444          <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C6.48 2 2 6.58 2 12.2c0 4.5 2.87 8.31 6.84 9.66.5.1.68-.22.68-.48l-.01-1.7c-2.78.62-3.37-1.34-3.37-1.34-.45-1.17-1.1-1.48-1.1-1.48-.9-.62.07-.61.07-.61 1 .07 1.53 1.05 1.53 1.05.9 1.58 2.37 1.12 2.95.86.09-.67.35-1.12.63-1.38-2.22-.26-4.55-1.13-4.55-5 0-1.1.38-2 .99-2.7-.1-.26-.43-1.3.09-2.71 0 0 .83-.27 2.73 1.02a9.3 9.3 0 0 1 4.96 0c1.9-1.29 2.73-1.02 2.73-1.02.52 1.41.19 2.45.09 2.71.61.7.99 1.6.99 2.7 0 3.88-2.34 4.74-4.57 5 .36.31.68.92.68 1.86l-.01 2.76c0 .27.18.58.69.48A10.23 10.23 0 0 0 22 12.2C22 6.58 17.52 2 12 2Z"></path>
445        </svg>
446        <span>Code</span>
447      </a>
448    </div>
449    <p class="hero-tldr"><strong>TLDR:</strong> WorldReel jointly generates RGB videos and 4D scene representations, keeping geometry and motion consistent across time, viewpoints, and dynamic scenes.</p>
450
451  </div>
452
453  <div class="teaser" id="abstract">
454    <div class="teaser-title">Abstract</div>
455    <p class="teaser-description">Recent video generators achieve striking photorealism, yet remain fundamentally inconsistent in 3D. We present WorldReel, a 4D video generator that is natively spatio-temporally consistent. WorldReel jointly produces RGB frames together with 4D scene representations, including pointmaps, camera trajectory, and dense flow mapping, enabling coherent geometry and appearance modeling over time. Our explicit 4D representation enforces a single underlying scene that persists across viewpoints and dynamic content, yielding videos that remain consistent even under large non-rigid motion and significant camera movement. We train WorldReel by carefully combining synthetic and real data: synthetic data providing precise 4D supervision (geometry, motion, and camera), while real videos contribute visual diversity and realism. This blend allows WorldReel to generalize to in-the-wild footage while preserving strong geometric fidelity. Extensive experiments demonstrate that WorldReel sets a new state-of-the-art for consistent video generation with dynamic scenes and moving cameras, improving metrics of geometric consistency, motion coherence, and reducing view-time artifacts over competing methods. We believe that WorldReel brings video generation closer to 4D-consistent world modeling, where agents can render, interact, and reason about scenes through a single and stable spatiotemporal representation.</p>
456  </div>
457
458  <div class="teaser" id="overview">
459    <div class="teaser-title">Overview</div>
460    <img src="figure_overview.png" alt="WorldReel method overview" class="overview-figure">
461    <p class="overview-caption">Overview of WorldReel. We augment a video diffusion transformer with a geo-motion latent (from RGB and 2.5D cues such as depth/optical flow) to inject a 4D inductive bias for spatio-temporal consistency. A temporal DPT decoder is trained with direct supervision and regularization to predict unified 4D outputs (depth/point cloud, calibrated camera, 3D scene flow, and masks).</p>
462  </div>
463
464  <div class="section-nav">
465    <a class="section-button" href="#unified">Unified 4D Videos</a>
466    <a class="section-button" href="#scene-rendering">4D Scene Rendering</a>
467    <a class="section-button" href="#comparison">In-the-wild Video Comparison</a>
468    <a class="section-button" href="#generated">Generated In-the-wild Video</a>
469    <a class="section-button" href="#ablation">Ablation</a>
470  </div>
471
472  <div class="teaser" id="unified">
473    <div class="teaser-title">Unified 4D Videos</div>
474    <p class="teaser-description">4D outputs jointly generated by WorldReel.</p>
475    
476    <div class="ablation-sample sync-row">
477      <div class="ablation-input-row">
478        <div class="ablation-item">
479          <p class="ablation-label">Input Image</p>
480          <img src="unified_4d_outputs/condition_4.png" alt="Input Image 4" class="ablation-media">
481        </div>
482      </div>
483      <div class="ablation-row">
484        <div class="ablation-item">
485          <p class="ablation-label">Generated Video</p>
486          <video src="unified_4d_outputs/video_4.mp4" loop muted playsinline class="ablation-media"></video>
487        </div>
488        <div class="ablation-item">
489          <p class="ablation-label">Generated Depth</p>
490          <video src="unified_4d_outputs/depth_4.mp4" loop muted playsinline class="ablation-media"></video>
491        </div>
492        <div class="ablation-item">
493          <p class="ablation-label">Generated Optical Flow</p>
494          <video src="unified_4d_outputs/optical_flow_4.mp4" loop muted playsinline class="ablation-media"></video>
495        </div>
496        <div class="ablation-item">
497          <p class="ablation-label">Generated Scene Flow</p>
498          <video src="unified_4d_outputs/pred_flow_rgb_4.mp4" loop muted playsinline class="ablation-media"></video>
499        </div>
500        <div class="ablation-item">
501          <p class="ablation-label">Generated Mask</p>
502          <video src="unified_4d_outputs/pred_masks_4.mp4" loop muted playsinline class="ablation-media"></video>
503        </div>
504      </div>
505    </div>
506
507    <div class="ablation-sample sync-row">
508      <div class="ablation-input-row">
509        <div class="ablation-item">
510          <p class="ablation-label">Input Image</p>
511          <img src="unified_4d_outputs/condition_5.png" alt="Input Image 5" class="ablation-media">
512        </div>
513      </div>
514      <div class="ablation-row">
515        <div class="ablation-item">
516          <p class="ablation-label">Generated Video</p>
517          <video src="unified_4d_outputs/video_5.mp4" loop muted playsinline class="ablation-media"></video>
518        </div>
519        <div class="ablation-item">
520          <p class="ablation-label">Generated Depth</p>
521          <video src="unified_4d_outputs/depth_5.mp4" loop muted playsinline class="ablation-media"></video>
522        </div>
523        <div class="ablation-item">
524          <p class="ablation-label">Generated Optical Flow</p>
525          <video src="unified_4d_outputs/optical_flow_5.mp4" loop muted playsinline class="ablation-media"></video>
526        </div>
527        <div class="ablation-item">
528          <p class="ablation-label">Generated Scene Flow</p>
529          <video src="unified_4d_outputs/pred_flow_rgb_5.mp4" loop muted playsinline class="ablation-media"></video>
530        </div>
531        <div class="ablation-item">
532          <p class="ablation-label">Generated Mask</p>
533          <video src="unified_4d_outputs/pred_masks_5.mp4" loop muted playsinline class="ablation-media"></video>
534        </div>
535      </div>
536    </div>
537
538    <div class="ablation-sample sync-row">
539      <div class="ablation-input-row">
540        <div class="ablation-item">
541          <p class="ablation-label">Input Image</p>
542          <img src="unified_4d_outputs/condition_2.png" alt="Input Image 2" class="ablation-media">
543        </div>
544      </div>
545      <div class="ablation-row">
546        <div class="ablation-item">
547          <p class="ablation-label">Generated Video</p>
548          <video src="unified_4d_outputs/video_2.mp4" loop muted playsinline class="ablation-media"></video>
549        </div>
550        <div class="ablation-item">
551          <p class="ablation-label">Generated Depth</p>
552          <video src="unified_4d_outputs/depth_2.mp4" loop muted playsinline class="ablation-media"></video>
553        </div>
554        <div class="ablation-item">
555          <p class="ablation-label">Generated Optical Flow</p>
556          <video src="unified_4d_outputs/optical_flow_2.mp4" loop muted playsinline class="ablation-media"></video>
557        </div>
558        <div class="ablation-item">
559          <p class="ablation-label">Generated Scene Flow</p>
560          <video src="unified_4d_outputs/pred_flow_rgb_2.mp4" loop muted playsinline class="ablation-media"></video>
561        </div>
562        <div class="ablation-item">
563          <p class="ablation-label">Generated Mask</p>
564          <video src="unified_4d_outputs/pred_masks_2.mp4" loop muted playsinline class="ablation-media"></video>
565        </div>
566      </div>
567    </div>
568
569    <div class="ablation-sample sync-row">
570      <div class="ablation-input-row">
571        <div class="ablation-item">
572          <p class="ablation-label">Input Image</p>
573          <img src="unified_4d_outputs/condition_3.png" alt="Input Image 3" class="ablation-media">
574        </div>
575      </div>
576      <div class="ablation-row">
577        <div class="ablation-item">
578          <p class="ablation-label">Generated Video</p>
579          <video src="unified_4d_outputs/video_3.mp4" loop muted playsinline class="ablation-media"></video>
580        </div>
581        <div class="ablation-item">
582          <p class="ablation-label">Generated Depth</p>
583          <video src="unified_4d_outputs/depth_3.mp4" loop muted playsinline class="ablation-media"></video>
584        </div>
585        <div class="ablation-item">
586          <p class="ablation-label">Generated Optical Flow</p>
587          <video src="unified_4d_outputs/optical_flow_3.mp4" loop muted playsinline class="ablation-media"></video>
588        </div>
589        <div class="ablation-item">
590          <p class="ablation-label">Generated Scene Flow</p>
591          <video src="unified_4d_outputs/pred_flow_rgb_3.mp4" loop muted playsinline class="ablation-media"></video>
592        </div>
593        <div class="ablation-item">
594          <p class="ablation-label">Generated Mask</p>
595          <video src="unified_4d_outputs/pred_masks_3.mp4" loop muted playsinline class="ablation-media"></video>
596        </div>
597      </div>
598    </div>
599
600    <div class="ablation-sample sync-row">
601      <div class="ablation-input-row">
602        <div class="ablation-item">
603          <p class="ablation-label">Input Image</p>
604          <img src="unified_4d_outputs/condition_6.png" alt="Input Image 6" class="ablation-media">
605        </div>
606      </div>
607      <div class="ablation-row">
608        <div class="ablation-item">
609          <p class="ablation-label">Generated Video</p>
610          <video src="unified_4d_outputs/video_6.mp4" loop muted playsinline class="ablation-media"></video>
611        </div>
612        <div class="ablation-item">
613          <p class="ablation-label">Generated Depth</p>
614          <video src="unified_4d_outputs/depth_6.mp4" loop muted playsinline class="ablation-media"></video>
615        </div>
616        <div class="ablation-item">
617          <p class="ablation-label">Generated Optical Flow</p>
618          <video src="unified_4d_outputs/optical_flow_6.mp4" loop muted playsinline class="ablation-media"></video>
619        </div>
620        <div class="ablation-item">
621          <p class="ablation-label">Generated Scene Flow</p>
622          <video src="unified_4d_outputs/pred_flow_rgb_6.mp4" loop muted playsinline class="ablation-media"></video>
623        </div>
624        <div class="ablation-item">
625          <p class="ablation-label">Generated Mask</p>
626          <video src="unified_4d_outputs/pred_masks_6.mp4" loop muted playsinline class="ablation-media"></video>
627        </div>
628      </div>
629    </div>
630  </div>
631
632  <div class="teaser" id="scene-rendering">
633    <div class="teaser-title">4D Scene Rendering</div>
634    <p class="teaser-description">Rendering results of the generated 4D scene.</p>
635    
636    <div class="ablation-sample sync-row">
637      <div class="ablation-row">
638        <div class="ablation-item">
639          <p class="ablation-label">Input Image</p>
640          <img src="4d_scene_output/condition_1.png" alt="Input Image 1" class="ablation-media">
641        </div>
642        <div class="ablation-item">
643          <p class="ablation-label">Generated Video</p>
644          <video src="4d_scene_output/video_1.mp4" loop muted playsinline class="ablation-media"></video>
645        </div>
646        <div class="ablation-item">
647          <p class="ablation-label">Rendered Scene</p>
648          <video src="4d_scene_output/scene_1.mp4" loop muted playsinline class="ablation-media"></video>
649        </div>
650      </div>
651    </div>
652
653    <div class="ablation-sample sync-row">
654      <div class="ablation-row">
655        <div class="ablation-item">
656          <p class="ablation-label">Input Image</p>
657          <img src="4d_scene_output/condition_2.png" alt="Input Image 2" class="ablation-media">
658        </div>
659        <div class="ablation-item">
660          <p class="ablation-label">Generated Video</p>
661          <video src="4d_scene_output/video_2.mp4" loop muted playsinline class="ablation-media"></video>
662        </div>
663        <div class="ablation-item">
664          <p class="ablation-label">Rendered Scene</p>
665          <video src="4d_scene_output/scene_2.mp4" loop muted playsinline class="ablation-media"></video>
666        </div>
667      </div>
668    </div>
669
670    <div class="ablation-sample sync-row">
671      <div class="ablation-row">
672        <div class="ablation-item">
673          <p class="ablation-label">Input Image</p>
674          <img src="4d_scene_output/condition_3.png" alt="Input Image 3" class="ablation-media">
675        </div>
676        <div class="ablation-item">
677          <p class="ablation-label">Generated Video</p>
678          <video src="4d_scene_output/video_3.mp4" loop muted playsinline class="ablation-media"></video>
679        </div>
680        <div class="ablation-item">
681          <p class="ablation-label">Rendered Scene</p>
682          <video src="4d_scene_output/scene_3.mp4" loop muted playsinline class="ablation-media"></video>
683        </div>
684      </div>
685    </div>
686
687    <div class="ablation-sample sync-row">
688      <div class="ablation-row">
689        <div class="ablation-item">
690          <p class="ablation-label">Input Image</p>
691          <img src="4d_scene_output/condition_4.png" alt="Input Image 4" class="ablation-media">
692        </div>
693        <div class="ablation-item">
694          <p class="ablation-label">Generated Video</p>
695          <video src="4d_scene_output/video_4.mp4" loop muted playsinline class="ablation-media"></video>
696        </div>
697        <div class="ablation-item">
698          <p class="ablation-label">Rendered Scene</p>
699          <video src="4d_scene_output/scene_4.mp4" loop muted playsinline class="ablation-media"></video>
700        </div>
701      </div>
702    </div>
703  </div>
704
705  <div class="teaser" id="comparison">
706    <div class="teaser-title">In-the-wild Video Comparison</div>
707    <p class="teaser-description">Comparison with other video generation methods.</p>
708    
709    <div class="ablation-sample sync-row">
710      <div class="ablation-input-row">
711        <div class="ablation-item">
712          <p class="ablation-label">Input Image</p>
713          <img src="comparison/condition_1.png" alt="Input Image 1" class="ablation-media">
714        </div>
715      </div>
716      <div class="ablation-row">
717        <div class="ablation-item">
718          <p class="ablation-label">CogVideoX</p>
719          <video src="comparison/cogvideox_1.mp4" loop muted playsinline class="ablation-media"></video>
720        </div>
721        <div class="ablation-item">
722          <p class="ablation-label">4DNeX</p>
723          <video src="comparison/4dnex_1.mp4" loop muted playsinline class="ablation-media"></video>
724        </div>
725        <div class="ablation-item">
726          <p class="ablation-label">DimensionX</p>
727          <video src="comparison/dimensionx_1.mp4" loop muted playsinline class="ablation-media"></video>
728        </div>
729        <div class="ablation-item">
730          <p class="ablation-label">GeoVideo</p>
731          <video src="comparison/geovideo_1.mp4" loop muted playsinline class="ablation-media"></video>
732        </div>
733        <div class="ablation-item">
734          <p class="ablation-label">WorldReel (ours)</p>
735          <video src="comparison/ours_1.mp4" loop muted playsinline class="ablation-media"></video>
736        </div>
737      </div>
738    </div>
739
740    <div class="ablation-sample sync-row">
741      <div class="ablation-input-row">
742        <div class="ablation-item">
743          <p class="ablation-label">Input Image</p>
744          <img src="comparison/condition_2.png" alt="Input Image 2" class="ablation-media">
745        </div>
746      </div>
747      <div class="ablation-row">
748        <div class="ablation-item">
749          <p class="ablation-label">CogVideoX</p>
750          <video src="comparison/cogvideox_2.mp4" loop muted playsinline class="ablation-media"></video>
751        </div>
752        <div class="ablation-item">
753          <p class="ablation-label">4DNeX</p>
754          <video src="comparison/4dnex_2.mp4" loop muted playsinline class="ablation-media"></video>
755        </div>
756        <div class="ablation-item">
757          <p class="ablation-label">DimensionX</p>
758          <video src="comparison/dimensionx_2.mp4" loop muted playsinline class="ablation-media"></video>
759        </div>
760        <div class="ablation-item">
761          <p class="ablation-label">GeoVideo</p>
762          <video src="comparison/geovideo_2.mp4" loop muted playsinline class="ablation-media"></video>
763        </div>
764        <div class="ablation-item">
765          <p class="ablation-label">WorldReel (ours)</p>
766          <video src="comparison/ours_2.mp4" loop muted playsinline class="ablation-media"></video>
767        </div>
768      </div>
769    </div>
770
771    <div class="abl
771ation-sample sync-row">
772      <div class="ablation-input-row">
773        <div class="ablation-item">
774          <p class="ablation-label">Input Image</p>
775          <img src="comparison/condition_3.png" alt="Input Image 3" class="ablation-media">
776        </div>
777      </div>
778      <div class="ablation-row">
779        <div class="ablation-item">
780          <p class="ablation-label">CogVideoX</p>
781          <video src="comparison/cogvideox_3.mp4" loop muted playsinline class="ablation-media"></video>
782        </div>
783        <div class="ablation-item">
784          <p class="ablation-label">4DNeX</p>
785          <video src="comparison/4dnex_3.mp4" loop muted playsinline class="ablation-media"></video>
786        </div>
787        <div class="ablation-item">
788          <p class="ablation-label">DimensionX</p>
789          <video src="comparison/dimensionx_3.mp4" loop muted playsinline class="ablation-media"></video>
790        </div>
791        <div class="ablation-item">
792          <p class="ablation-label">GeoVideo</p>
793          <video src="comparison/geovideo_3.mp4" loop muted playsinline class="ablation-media"></video>
794        </div>
795        <div class="ablation-item">
796          <p class="ablation-label">WorldReel (ours)</p>
797          <video src="comparison/ours_3.mp4" loop muted playsinline class="ablation-media"></video>
798        </div>
799      </div>
800    </div>
801
802    <div class="ablation-sample sync-row">
803      <div class="ablation-input-row">
804        <div class="ablation-item">
805          <p class="ablation-label">Input Image</p>
806          <img src="comparison/condition_4.png" alt="Input Image 4" class="ablation-media">
807        </div>
808      </div>
809      <div class="ablation-row">
810        <div class="ablation-item">
811          <p class="ablation-label">CogVideoX</p>
812          <video src="comparison/cogvideox_4.mp4" loop muted playsinline class="ablation-media"></video>
813        </div>
814        <div class="ablation-item">
815          <p class="ablation-label">4DNeX</p>
816          <video src="comparison/4dnex_4.mp4" loop muted playsinline class="ablation-media"></video>
817        </div>
818        <div class="ablation-item">
819          <p class="ablation-label">DimensionX</p>
820          <video src="comparison/dimensionx_4.mp4" loop muted playsinline class="ablation-media"></video>
821        </div>
822        <div class="ablation-item">
823          <p class="ablation-label">GeoVideo</p>
824          <video src="comparison/geovideo_4.mp4" loop muted playsinline class="ablation-media"></video>
825        </div>
826        <div class="ablation-item">
827          <p class="ablation-label">WorldReel (ours)</p>
828          <video src="comparison/ours_4.mp4" loop muted playsinline class="ablation-media"></video>
829        </div>
830      </div>
831    </div>
832
833    <div class="ablation-sample sync-row">
834      <div class="ablation-input-row">
835        <div class="ablation-item">
836          <p class="ablation-label">Input Image</p>
837          <img src="comparison/condition_5.png" alt="Input Image 5" class="ablation-media">
838        </div>
839      </div>
840      <div class="ablation-row">
841        <div class="ablation-item">
842          <p class="ablation-label">CogVideoX</p>
843          <video src="comparison/cogvideox_5.mp4" loop muted playsinline class="ablation-media"></video>
844        </div>
845        <div class="ablation-item">
846          <p class="ablation-label">4DNeX</p>
847          <video src="comparison/4dnex_5.mp4" loop muted playsinline class="ablation-media"></video>
848        </div>
849        <div class="ablation-item">
850          <p class="ablation-label">DimensionX</p>
851          <video src="comparison/dimensionx_5.mp4" loop muted playsinline class="ablation-media"></video>
852        </div>
853        <div class="ablation-item">
854          <p class="ablation-label">GeoVideo</p>
855          <video src="comparison/geovideo_5.mp4" loop muted playsinline class="ablation-media"></video>
856        </div>
857        <div class="ablation-item">
858          <p class="ablation-label">WorldReel (ours)</p>
859          <video src="comparison/ours_5.mp4" loop muted playsinline class="ablation-media"></video>
860        </div>
861      </div>
862    </div>
863
864    <div class="ablation-sample sync-row">
865      <div class="ablation-input-row">
866        <div class="ablation-item">
867          <p class="ablation-label">Input Image</p>
868          <img src="comparison/condition_6.png" alt="Input Image 6" class="ablation-media">
869        </div>
870      </div>
871      <div class="ablation-row">
872        <div class="ablation-item">
873          <p class="ablation-label">CogVideoX</p>
874          <video src="comparison/cogvideox_6.mp4" loop muted playsinline class="ablation-media"></video>
875        </div>
876        <div class="ablation-item">
877          <p class="ablation-label">4DNeX</p>
878          <video src="comparison/4dnex_6.mp4" loop muted playsinline class="ablation-media"></video>
879        </div>
880        <div class="ablation-item">
881          <p class="ablation-label">DimensionX</p>
882          <video src="comparison/dimensionx_6.mp4" loop muted playsinline class="ablation-media"></video>
883        </div>
884        <div class="ablation-item">
885          <p class="ablation-label">GeoVideo</p>
886          <video src="comparison/geovideo_6.mp4" loop muted playsinline class="ablation-media"></video>
887        </div>
888        <div class="ablation-item">
889          <p class="ablation-label">WorldReel (ours)</p>
890          <video src="comparison/ours_6.mp4" loop muted playsinline class="ablation-media"></video>
891        </div>
892      </div>
893    </div>
894
895    <div class="ablation-sample sync-row">
896      <div class="ablation-input-row">
897        <div class="ablation-item">
898          <p class="ablation-label">Input Image</p>
899          <img src="comparison/condition_7.png" alt="Input Image 7" class="ablation-media">
900        </div>
901      </div>
902      <div class="ablation-row">
903        <div class="ablation-item">
904          <p class="ablation-label">CogVideoX</p>
905          <video src="comparison/cogvideox_7.mp4" loop muted playsinline class="ablation-media"></video>
906        </div>
907        <div class="ablation-item">
908          <p class="ablation-label">4DNeX</p>
909          <video src="comparison/4dnex_7.mp4" loop muted playsinline class="ablation-media"></video>
910        </div>
911        <div class="ablation-item">
912          <p class="ablation-label">DimensionX</p>
913          <video src="comparison/dimensionx_7.mp4" loop muted playsinline class="ablation-media"></video>
914        </div>
915        <div class="ablation-item">
916          <p class="ablation-label">GeoVideo</p>
917          <video src="comparison/geovideo_7.mp4" loop muted playsinline class="ablation-media"></video>
918        </div>
919        <div class="ablation-item">
920          <p class="ablation-label">WorldReel (ours)</p>
921          <video src="comparison/ours_7.mp4" loop muted playsinline class="ablation-media"></video>
922        </div>
923      </div>
924    </div>
925  </div>
926
927  <div class="teaser" id="generated">
928    <div class="teaser-title">Generated In-the-wild Video</div>
929    <p class="teaser-description">Qualitative samples generated by WorldReel on in-the-wild images.</p>
930    
931    <div class="generated-group sync-row">
932      <div class="generated-row">
933        <div class="generated-item">
934          <p class="generated-label">&nbsp;</p>
935          <img src="generated_videos/1.png" alt="Input 1" class="generated-media">
936        </div>
937        <div class="generated-item">
938          <p class="generated-label">&nbsp;</p>
939          <img src="generated_videos/2.png" alt="Input 2" class="generated-media">
940        </div>
941        <div class="generated-item">
942          <p class="generated-label">
942Input Image (static scenes)</p>
943          <img src="generated_videos/3.png" alt="Input 3" class="generated-media">
944        </div>
945        <div class="generated-item">
946          <p class="generated-label">&nbsp;</p>
947          <img src="generated_videos/4.png" alt="Input 4" class="generated-media">
948        </div>
949        <div class="generated-item">
950          <p class="generated-label">&nbsp;</p>
951          <img src="generated_videos/5.png" alt="Input 5" class="generated-media">
952        </div>
953      </div>
954      <div class="generated-row">
955        <div class="generated-item">
956          <p class="generated-label">&nbsp;</p>
957          <video src="generated_videos/1.mp4" loop muted playsinline class="generated-media"></video>
958        </div>
959        <div class="generated-item">
960          <p class="generated-label">&nbsp;</p>
961          <video src="generated_videos/2.mp4" loop muted playsinline class="generated-media"></video>
962        </div>
963        <div class="generated-item">
964          <p class="generated-label">Generated Videos</p>
965          <video src="generated_videos/3.mp4" loop muted playsinline class="generated-media"></video>
966        </div>
967        <div class="generated-item">
968          <p class="generated-label">&nbsp;</p>
969          <video src="generated_videos/4.mp4" loop muted playsinline class="generated-media"></video>
970        </div>
971        <div class="generated-item">
972          <p class="generated-label">&nbsp;</p>
973          <video src="generated_videos/5.mp4" loop muted playsinline class="generated-media"></video>
974        </div>
975      </div>
976    </div>
977
978    <div class="generated-group sync-row">
979      <div class="generated-row">
980        <div class="generated-item">
981          <p class="generated-label">&nbsp;</p>
982          <img src="generated_videos/6.png" alt="Input 6" class="generated-media">
983        </div>
984        <div class="generated-item">
985          <p class="generated-label">&nbsp;</p>
986          <img src="generated_videos/7.png" alt="Input 7" class="generated-media">
987        </div>
988        <div class="generated-item">
989          <p class="generated-label">Input Image (dynamic scenes)</p>
990          <img src="generated_videos/8.png" alt="Input 8" class="generated-media">
991        </div>
992        <div class="generated-item">
993          <p class="generated-label">&nbsp;</p>
994          <img src="generated_videos/9.png" alt="Input 9" class="generated-media">
995        </div>
996        <div class="generated-item">
997          <p class="generated-label">&nbsp;</p>
998          <img src="generated_videos/10.png" alt="Input 10" class="generated-media">
999        </div>
1000      </div>
1001      <div class="generated-row">
1002        <div class="generated-item">
1003          <p class="generated-label">&nbsp;</p>
1004          <video src="generated_videos/6.mp4" loop muted playsinline class="generated-media"></video>
1005        </div>
1006        <div class="generated-item">
1007          <p class="generated-label">&nbsp;</p>
1008          <video src="generated_videos/7.mp4" loop muted playsinline class="generated-media"></video>
1009        </div>
1010        <div class="generated-item">
1011          <p class="generated-label">Generated Videos</p>
1012          <video src="generated_videos/8.mp4" loop muted playsinline class="generated-media"></video>
1013        </div>
1014        <div class="generated-item">
1015          <p class="generated-label">&nbsp;</p>
1016          <video src="generated_videos/9.mp4" loop muted playsinline class="generated-media"></video>
1017        </div>
1018        <div class="generated-item">
1019          <p class="generated-label">&nbsp;</p>
1020          <video src="generated_videos/10.mp4" loop muted playsinline class="generated-media"></video>
1021        </div>
1022      </div>
1023    </div>
1024  </div>
1025
1026  <div class="teaser" id="ablation">
1027    <div class="teaser-title">Ablation</div>
1028    <p class="teaser-description">Ablation study results.</p>
1029
1030    <div class="ablation-text">
1031      We validate the effectiveness of our core designs: the <b>geo-motion augmented latents</b> and the <b>joint optimization strategy</b>. 
1032      <br><br>
1033      As demonstrated in the visual comparison:
1034      <ul>
1035        <li>
1036            <strong>Base Finetuned:</strong> a finetuned version of the CogVideoX model. Results show <strong>unnatural motion</strong> and <strong>inconsistent appearance</strong> across frames.
1037          </li>
1038        <li>
1039          <strong>w/o Geo-Motion:</strong> relying solely on the RGB-only model (without geo-motion latents) leads to noticeable 
1040          <strong>visual artifacts</strong> and <strong>ghosting</strong>, degrading scene stability.
1041        </li>
1042        <li>
1043          <strong>w/o Joint:</strong> skipping the joint training and regularization stage results in reduced subject consistency, causing 
1044          <strong>incoherent motion</strong> particularly for dynamic objects and humans.
1045        </li>
1046        <li>
1047          <strong>WorldReel (Ours):</strong> by effectively aligning appearance and geometry, our full model produces the 
1048          <strong>smoothest non-rigid motion</strong> and maintains natural, high-quality complex dynamics.
1049        </li>
1050      </ul>
1051    </div>
1052
1053    <div class="ablation-sample sync-row">
1054      <div class="ablation-input-row">
1055        <div class="ablation-item">
1056          <p class="ablation-label">Input Image</p>
1057          <img src="ablation/condition_1.png" alt="Input Image 1" class="ablation-media">
1058        </div>
1059      </div>
1060      <div class="ablation-row">
1061        <div class="ablation-item">
1062          <p class="ablation-label">Base Finetuned</p>
1063          <video src="ablation/finetuned_1.mp4" loop muted playsinline class="ablation-media"></video>
1064        </div>
1065        <div class="ablation-item">
1066          <p class="ablation-label">w/o Geo-Motion</p>
1067          <video src="ablation/wo_geomotion_1.mp4" loop muted playsinline class="ablation-media"></video>
1068        </div>
1069        <div class="ablation-item">
1070          <p class="ablation-label">w/o Joint</p>
1071          <video src="ablation/wo_joint_1.mp4" loop muted playsinline class="ablation-media"></video>
1072        </div>
1073        <div class="ablation-item">
1074          <p class="ablation-label">WorldReel (ours)</p>
1075          <video src="ablation/ours_1.mp4" loop muted playsinline class="ablation-media"></video>
1076        </div>
1077      </div>
1078    </div>
1079
1080    <div class="ablation-sample sync-row">
1081      <div class="ablation-input-row">
1082        <div class="ablation-item">
1083          <p class="ablation-label">Input Image</p>
1084          <img src="ablation/condition_2.png" alt="Input Image 2" class="ablation-media">
1085        </div>
1086      </div>
1087      <div class="ablation-row">
1088        <div class="ablation-item">
1089          <p class="ablation-label">Base Finetuned</p>
1090          <video src="ablation/finetuned_2.mp4" loop muted playsinline class="ablation-media"></video>
1091        </div>
1092        <div class="ablation-item">
1093          <p class="ablation-label">w/o Geo-Motion</p>
1094          <video src="ablation/wo_geomotion_2.mp4" loop muted playsinline class="ablation-media"></video>
1095        </div>
1096        <div class="ablation-item">
1097          <p class="ablation-label">w/o Joint</p>
1098          <video src="ablation/wo_joint_2.mp4" loop muted playsinline class="ablation-media"></video>
1099        </div>
1100        <div class="ablation-item">
1101          <p class="ablation-label">WorldReel (ours)</p>
1102          <video src="ablation/ours_2.mp4" loop muted playsinline class="ablation-media"></video>
1103        </div>
1104      </div>
1105    </div>
1106
1107    <div class="ablation-sample sync-row">
1108      <div class="ablation-input-row">
1109        <div class="ablation-item">
1110          <p class="ablation-label">Input Image</p>
1111          <img src="ablation/condition_3.png" alt="Input Image 3" class="ablation-media">
1112        </div>
1113      </div>
1114      <div class="ablation-row">
1115        <div class="ablation-item">
1116          <p class="ablation-label">Base Finetuned</p>
1117          <video src="ablation/finetuned_3.mp4" loop muted playsinline class="ablation-media"></video>
1118        </div>
1119        <div class="ablation-item">
1120          <p class="ablation-label">w/o Geo-Motion</p>
1121          <video src="ablation/wo_geomotion_3.mp4" loop muted playsinline class="ablation-media"></video>
1122        </div>
1123        <div class="ablation-item">
1124          <p class="ablation-label">w/o Joint</p>
1125          <video src="ablation/wo_joint_3.mp4" loop muted playsinline class="ablation-media"></video>
1126        </div>
1127        <div class="ablation-item">
1128          <p class="ablation-label">WorldReel (ours)</p>
1129          <video src="ablation/ours_3.mp4" loop muted playsinline class="ablation-media"></video>
1130        </div>
1131      </div>
1132    </div>
1133  </div>
1134
1135  <div class="bibtex-block" id="bibtex">
1136    <div class="teaser-title" style="margin: 0 0 0.75em 0;">BibTeX</div>
1137    <pre class="bibtex-code" id="bibtex-text">@article{fang2025worldreel,
1138      title={WorldReel: 4D Video Generation with Consistent Geometry and Motion Modeling},
1139      author={Fang, Shaoheng and Jiang, Hanwen and Bai, Yunpeng and Mitra, Niloy J. and Huang, Qixing},
1140      journal={arXiv preprint arXiv:2512.07821},
1141      year={2025}
1142    }</pre>
1143  </div>
1144
1145  
1145<script>
1146    document.addEventListener('DOMContentLoaded', () => {
1147      // Select all rows that require sync playback
1148      // We added the class 'sync-row' to ablation-sample and generated-group in the HTML above
1149      const syncRows = document.querySelectorAll('.sync-row');
1150
1151      syncRows.forEach(row => {
1152        const videos = row.querySelectorAll('video');
1153
1154        // Function to handle playing
1155        const playAll = () => {
1156          videos.forEach(v => {
1157            // Reset to start to ensure synchronization
1158            v.currentTime = 0;
1159            // Play the video
1160            const playPromise = v.play();
1161            if (playPromise !== undefined) {
1162              playPromise.catch(error => {
1163                // Auto-play was prevented
1164                console.log('Autoplay prevented:', error);
1165              });
1166            }
1167          });
1168        };
1169
1170        // Function to handle pausing
1171        const pauseAll = () => {
1172          videos.forEach(v => {
1173            v.pause();
1174          });
1175        };
1176
1177        // Event Listeners for Mouse Enter/Leave
1178        row.addEventListener('mouseenter', playAll);
1179        row.addEventListener('mouseleave', pauseAll);
1180      });
1181
1182    });
1183  </script>
1183
1184
1185</body>
1186
1187</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.