File size: 16,008 Bytes
9f57754
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Meridian: A new perspective on space and time</title>
<style>
:root { color-scheme: light; --ink: #202923; --muted: #647068; --accent: #21634c; --line: #dee5df; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 2rem; }
body { margin: 0; background: #f6f7f3; color: var(--ink); font: 17px/1.8 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
a { color: var(--accent); text-underline-offset: .2em; }
a:hover { text-decoration-thickness: 2px; }
a:focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }
.skip-link { position: absolute; left: 1rem; top: -5rem; padding: .5rem 1rem; background: white; }
.skip-link:focus { top: 1rem; }
.page-header { max-width: 1280px; margin: auto; padding: 1.5rem 2.5rem; display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--line); color: var(--muted); font-size: .8rem; }
.page-header span { font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.layout { max-width: 1280px; margin: auto; padding: 3.5rem 2.5rem 5rem; display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 3.5rem; align-items: start; }
nav { position: sticky; top: 2rem; max-height: calc(100vh - 4rem); overflow-y: auto; font-size: .8rem; line-height: 1.5; }
nav h2 { margin: 0 0 1rem; color: var(--muted); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
nav ul { padding: 0; margin: 0; list-style: none; }
nav ul ul { padding-left: 1rem; border-left: 1px solid var(--line); margin-top: .5rem; }
nav li { margin-bottom: .65rem; }
nav a { color: var(--muted); text-decoration: none; }
nav a:hover { color: var(--accent); }
article { min-width: 0; max-width: 850px; padding: 3rem; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
h1, h2, h3 { line-height: 1.25; letter-spacing: -.025em; text-wrap: balance; }
h1 { margin: 0 0 1.6rem; font-size: clamp(2rem, 4vw, 3.2rem); }
article h2 { margin: 3rem 0 1.2rem; padding-top: 1.8rem; border-top: 1px solid var(--line); font-size: 1.7rem; }
article h3 { margin: 2.2rem 0 1rem; font-size: 1.25rem; }
p { margin: 1.2rem 0; }
article a { overflow-wrap: anywhere; }
img { display: block; max-width: 100%; height: auto; margin: 1.6rem auto; border-radius: 6px; }
video { display: block; width: 100%; height: auto; object-fit: contain; background: #0b0c0c; border-radius: 6px; }
video:focus-visible, summary:focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }
.film { min-width: 0; margin: 1.6rem 0; }
.film .film-caption { margin-top: .65rem; color: var(--muted); font-size: .8rem; line-height: 1.6; }
.video-grid { display: table; width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; margin: 1.8rem 0; }
.video-grid td { width: 50%; padding: 0 1rem 1.5rem 0; border: 0; vertical-align: top; }
.video-grid td:nth-child(2) { padding-right: 0; padding-left: .5rem; }
.video-grid p { margin: .65rem 0 0; color: var(--muted); font-size: .8rem; line-height: 1.6; }
.video-grid video { aspect-ratio: 1920 / 1088; }
.more-examples { margin: 1.8rem 0; padding: 1rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.more-examples summary { color: var(--accent); cursor: pointer; }
.more-examples > p { font-size: .85rem; }
.studio-demo { margin-top: 1.5rem; }
.studio-demo summary { color: var(--accent); cursor: pointer; }
.studio-demo .film { margin-bottom: 0; }
code { padding: .15em .35em; border-radius: 4px; background: #eef2ed; font-size: .87em; }
pre { overflow-x: auto; padding: 1rem; background: #eef2ed; border-radius: 6px; }
pre code { padding: 0; }
blockquote { margin: 1.5rem 0; padding-left: 1.2rem; border-left: 3px solid var(--accent); color: var(--muted); }
li { margin-bottom: .4rem; }
hr { border: 0; border-top: 1px solid var(--line); margin: 3rem 0; }
table { display: block; overflow-x: auto; border-collapse: collapse; }
th, td { padding: .5rem .8rem; border: 1px solid var(--line); text-align: left; }
@media (max-width: 1000px) {
  .layout { grid-template-columns: 1fr; gap: 2rem; max-width: 900px; padding: 2rem 1.5rem; }
  nav { position: static; max-height: none; }
  nav > .toc > ul { columns: 2; column-gap: 2rem; }
  nav li { break-inside: avoid; }
  article { padding: 2rem; }
}
@media (max-width: 600px) {
  body { font-size: 16px; }
  .page-header { padding: 1rem; }
  .layout { padding: 1.5rem .75rem; }
  nav { padding: 0 .5rem; }
  nav > .toc > ul { columns: 1; }
  article { padding: 1.4rem; }
  .video-grid, .video-grid tbody, .video-grid tr, .video-grid td { display: block; width: 100%; }
  .video-grid td, .video-grid td:nth-child(2) { padding: 0 0 1.5rem; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
@media print {
  body { background: white; font-size: 11pt; }
  .page-header, nav, .skip-link { display: none; }
  .layout { display: block; padding: 0; }
  article { max-width: none; padding: 0; border: 0; }
  h1, h2, h3 { break-after: avoid; }
  img { break-inside: avoid; }
  a { color: inherit; }
}
</style>
</head>
<body>
<a class="skip-link" href="#article">Skip to article</a>
<header class="page-header"><span>Meridian · Research</span><a href="research.md">Markdown source</a></header>
<div class="layout">
<nav aria-label="Table of contents"><h2>Contents</h2><div class="toc">
<ul>
<li><a href="#choose-where-choose-when">Choose where. Choose when.</a></li>
<li><a href="#method">Method</a></li>
<li><a href="#why-this-matters">Why this matters</a></li>
<li><a href="#try-meridian">Try Meridian</a></li>
</ul>
</div>

</nav>
<main id="article"><article>
<h1 id="meridian-a-new-perspective-on-space-and-time">Meridian: A new perspective on space and time</h1>
<p><strong>One event. Anywhere. Anytime.</strong></p>
<p>By <strong>Viggle AI</strong></p>
<p><em>14 September 2026.</em></p>
<div class="film hero-film">
  <video id="teaser-film" controls playsinline preload="none" width="100%" poster="../videos-all/longtake_showcase/teaser_v7/intro_059.jpg" src="../videos-all/teaser_meridian_showcase_v7.mp4" aria-label="Meridian teaser: a new perspective on space and time">
    <a href="../videos-all/teaser_meridian_showcase_v7.mp4">Watch the Meridian teaser</a>.
  </video>
  <p class="film-caption">48-second teaser</p>
</div>

<p><strong>Meridian is a geometry-guided video model for authoring new observations of existing events.</strong>
Given a video, choose a new camera path and the source moments to observe. Follow the action from
another angle, linger on a gesture, or hold an instant while the camera keeps moving.</p>
<h2 id="choose-where-choose-when">Choose where. Choose when.</h2>
<ul>
<li><strong>Where:</strong> design the camera's position, viewing direction, and lens over a shot.</li>
<li><strong>When:</strong> let the action advance, hold a source moment, or change its pace by retiming the input.</li>
</ul>
<p><strong>Bullet time is one possibility, not the whole idea.</strong> Camera motion and source time can be
composed into different ways of watching the same event. A single image can also be the starting
point for a moving view.</p>
<p>The compound-camera example shows its source and requested path. The ballet examples use still images.</p>
<table class="video-grid">
  <tr>
    <td width="50%" valign="top">
      <video id="nba-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/nba.jpg" src="../videos-all/research_examples_v1/nba.mp4" aria-label="NBA edit combining labeled source footage and generated views of held moments">
        <a href="../videos-all/research_examples_v1/nba.mp4">Watch the example</a>.
      </video>
      <p><strong>A dunk.</strong> Source action, revisited from new angles. An edited sequence; dunk completion is source footage.</p>
    </td>
    <td width="50%" valign="top">
      <video id="berry-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/berry.jpg" src="../videos-all/research_examples_v1/berry.mp4" aria-label="Strawberries: source time advances, holds while the camera moves, then resumes">
        <a href="../videos-all/research_examples_v1/berry.mp4">Watch the example</a>.
      </video>
      <p><strong>Play. Hold. Resume.</strong> Linger on the splash, then let it continue.</p>
    </td>
  </tr>
  <tr>
    <td width="50%" valign="top">
      <video id="moto-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v2/motor_compound.jpg" src="../videos-all/teaser_meridian_compound_motor_dust_explained_v1.mp4" aria-label="Motocross: one uncut take with a compound camera path, selected source video, and requested camera diagrams">
        <a href="../videos-all/teaser_meridian_compound_motor_dust_explained_v1.mp4">Watch the example</a>.
      </video>
      <p><strong>Compose a camera path.</strong> Widen, orbit, slide, approach, retreat—one uncut take.</p>
    </td>
    <td width="50%" valign="top">
      <video id="ballet-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v2/ballet_reverse45.jpg" src="../videos-all/meridian_ballet_l150_female_reverse45.mp4" aria-label="Female ballet dancer: generated camera movement from one still image">
        <a href="../videos-all/meridian_ballet_l150_female_reverse45.mp4">Watch the example</a>.
      </video>
      <p><strong>One image. Another viewpoint.</strong> A camera move from a single ballet image.</p>
    </td>
  </tr>
</table>

<details class="more-examples">
  <summary>More examples · robots, animation, dance, and sport</summary>
  <table class="video-grid">
  <tr>
    <td width="50%" valign="top">
      <video id="robot-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/robot.jpg" src="../videos-all/research_examples_v1/robot.mp4" aria-label="Robot folding cloth from a higher generated viewpoint, with aligned input">
        <a href="../videos-all/research_examples_v1/robot.mp4">Watch the example</a>.
      </video>
      <p><strong>Robot manipulation.</strong> The task continues from a higher viewpoint.</p>
    </td>
    <td width="50%" valign="top">
      <video id="charge-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/charge.jpg" src="../videos-all/research_examples_v1/charge.mp4" aria-label="Charge animation: play, hold, resume with a moving viewpoint">
        <a href="../videos-all/research_examples_v1/charge.mp4">Watch the example</a>.
      </video>
      <p><strong>An animated event.</strong> Hold the action; move the camera.</p>
    </td>
  </tr>
  <tr>
    <td width="50%" valign="top">
      <video id="ballet_male-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/ballet_male.jpg" src="../videos-all/research_examples_v1/ballet_male.mp4" aria-label="Male ballet dancer: a separate single-image input and generated viewpoint">
        <a href="../videos-all/research_examples_v1/ballet_male.mp4">Watch the example</a>.
      </video>
      <p><strong>Another ballet photograph.</strong> One image, a moving view.</p>
    </td>
    <td width="50%" valign="top">
      <video id="gymnast-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/gymnast.jpg" src="../videos-all/research_examples_v1/gymnast.mp4" aria-label="Gymnastics: action continues while the generated camera rises">
        <a href="../videos-all/research_examples_v1/gymnast.mp4">Watch the example</a>.
      </video>
      <p><strong>A rising view.</strong> The gesture unfolds.</p>
    </td>
  </tr>
  <tr>
    <td width="50%" valign="top">
      <video id="powder-film" controls playsinline preload="none" width="100%" poster="../videos-all/research_examples_v1/powder.jpg" src="../videos-all/research_examples_v1/powder.mp4" aria-label="Snow sports: action continues with a moving generated viewpoint">
        <a href="../videos-all/research_examples_v1/powder.mp4">Watch the example</a>.
      </video>
      <p><strong>Through the powder.</strong> Move with the action.</p>
    </td>
  </tr>
</table>
</details>

<h2 id="method">Method</h2>
<p><img alt="Input video enters VGGT-Omega; estimated depth and source cameras give colored 3D points. User-specified target cameras reproject those points into a warped video. Both the time-aligned source video and warped video condition Meridian to generate the output video. Video samples are real; 3D points and cameras are schematic." src="assets/research/meridian_illustrated_method.png" /></p>
<p><em>Matched source, warp, and output frames; the 3D points and cameras are schematic.</em></p>
<p>The method is simple: <strong>use geometry to show a video model where to look.</strong></p>
<p><strong>1. Reproject the source.</strong> VGGT-Omega estimates depth and source-camera poses. We build colored
3D points, select the source moments, and project those points through an authored camera path
into a warped video.</p>
<p><strong>2. Generate the new view.</strong> Meridian, built on MiniMax-H3, takes <strong>the source video and warped
video</strong>, aligned to the same source moments, and generates the new shot. Geometry guides the view;
the video model fills missing regions and refines appearance.</p>
<p><strong>Preview before generation.</strong> Once geometry is available, fast point-cloud rendering makes the
chosen path visible. Check the framing, viewing direction, and uncovered regions—and adjust the
camera before running the video model. This inexpensive preview is a useful consequence of making
camera control explicit.</p>
<h2 id="why-this-matters">Why this matters</h2>
<p>The shift is from generating another scene to <strong>choosing another observation of the same event</strong>.
This is the world-model perspective behind Meridian: connect what we see to where and when we
observe it, grounded in supplied footage rather than unrestricted simulation.</p>
<p>Unseen regions are generated, not recovered. Geometry errors and large moves—including 360°
orbits—can destabilize the view. Time edits revisit supplied frames, and separate takes need not
form a consistent world.</p>
<h2 id="try-meridian">Try Meridian</h2>
<p><a href="../README.md#quickstart">Get started with Meridian</a>.</p>
<p>Meridian uses MiniMax-H3 with precomputed text embeddings, <strong>without loading a text encoder</strong>.
We welcome community work on quantization and CPU offloading toward smaller GPUs, including the
RTX 4090; those configurations are not yet supported or validated by the provided implementation.</p>
<p>The release also includes a <strong>very basic, vibe-coded Studio demo</strong> to illustrate how
to use the model—not a production editor. It supports multi-key camera paths and real-time 3D
preview, not real-time video generation.</p>
<details class="studio-demo">
  <summary>Watch the 38-second Studio walkthrough</summary>
  <div class="film">
    <video id="studio-film" controls playsinline preload="none" width="100%" poster="../videos-all/studio_walkthrough/nba3_preview_live_02/studio_walkthrough_concise_poster.jpg" src="../videos-all/studio_walkthrough/nba3_preview_live_02/studio_walkthrough_concise.mp4" aria-label="Early Studio demo: actual authoring and geometric preview, not final generation">
      <a href="../videos-all/studio_walkthrough/nba3_preview_live_02/studio_walkthrough_concise.mp4">Watch the Studio walkthrough</a>.
    </video>
    <p class="film-caption">Authoring and geometric preview only, with some operations and waits omitted—not a final generated take.</p>
  </div>
</details>

<hr />
<p>Powered by MiniMax H3. See the <a href="../README.md#license">licenses and intended use</a>.</p>
</article></main>
</div>
</body>
</html>