视频生成模型过去常常逐帧绘制像素,一旦镜头移动或物体旋转,画面就容易出现纹理漂移和结构崩塌。Sora走了一条不同的路:它把视频压缩成时空图块,再用Transformer根据前后文预测下一个图块。这个思路看似只是把图像模型扩展到时间轴,但图块之间的自注意力会在训练中逐渐捕捉到深度、遮挡、光影和运动等三维线索。也正因如此,Sora并不是在显式建模一个三维网格,而是在隐式统计中逼近世界的外观规律。

这种隐式表达带来的好处是生成效率高、画面连续性强,但它的边界也藏在同一个机制里。下面从时空图块、三维空间一致性和物理规律三个层面展开。
时空图块:一种绕过显式建模的中间表示
视觉Transformer在图像任务中已经证明,把图片切成固定大小的patch后送入自注意力网络,模型能够学习局部纹理与全局结构之间的关系。Sora把这一思路扩展到了视频。视频不再是一帧一帧独立图像,而是一个五维张量:批大小、通道、时间、高度、宽度。这个五维张量被沿着时间、高度和宽度三个方向切分为小块,每个小块展开成一个向量,再加上可学习的位置编码,构成Transformer的输入序列。
import torch
import torch.nn as nn
def video_to_spacetime_patches(video, patch_t=4, patch_h=32, patch_w=32):
# video: (B, C, T, H, W)
B, C, T, H, W = video.shape
# 补零保证时间、高度、宽度可被对应图块大小整除
pad_t = (patch_t - T % patch_t) % patch_t
pad_h = (patch_h - H % patch_h) % patch_h
pad_w = (patch_w - W % patch_w) % patch_w
video = torch.nn.functional.pad(video, (0, pad_w, 0, pad_h, 0, pad_t))
T, H, W = video.shape[2], video.shape[3], video.shape[4]
patches = video.unfold(2, patch_t, patch_t).unfold(3, patch_h, patch_h).unfold(4, patch_w, patch_w)
# patches 形状: (B, C, nt, nh, nw, patch_t, patch_h, patch_w)
patches = patches.permute(0, 2, 3, 4, 5, 6, 7, 1).contiguous()
B, nt, nh, nw, pt, ph, pw, C = patches.shape
patches = patches.view(B, nt * nh * nw, C * pt * ph * pw)
return patches
class PatchEmbed(nn.Module):
def __init__(self, patch_dim, embed_dim):
super().__init__()
self.proj = nn.Linear(patch_dim, embed_dim)
def forward(self, x):
return self.proj(x)
值得强调的是,时空图块并不是三维体素,它没有事先指定哪些小块属于同一个物体,也没有为每个图块绑定一个深度值。模型在预测被遮挡或运动后的图块时,必须依赖上下文推断出空间关系。例如,一个杯子从桌面滑到边缘再掉落,后续图块的内容不仅取决于杯子本身的纹理,还取决于相机视角、桌面高度和重力方向。只要数据规模足够大,这种约束会迫使模型在隐层中形成类似深度图和法线图的结构。
这种做法和传统三维重建存在本质区别。显式管线会先估计深度图、点云或网格,再渲染投影;Sora则把这些信息压缩在注意力权重和高维特征中。它的优势是端到端训练,不依赖标定参数;代价是可解释性较弱,且当训练数据中某种空间关系出现频率不高时,模型容易产生自信但错误的幻觉。
三维空间一致性:遮挡、透视和相机运动
判断一个视频生成模型是否具备空间理解,最直观的方法是观察相机横移或环绕时,前景物体是否保持正确的遮挡关系。Sora在很多演示片段中能生成连续、稳定的前景轮廓,背景的透视变化也大致符合单目几何。这并非因为模型内部有一个相机参数矩阵,而是因为自注意力在大量视频中见过类似运动模式,学会了在生成下一个图块时参考邻近图块的边缘和颜色分布。
但三维空间一致性并不等于三维重建。可以把Sora想象成一个非常熟练的剪辑师:它见过很多杯子掉落的镜头,于是在脑海中组合出最合理的画面。这种能力在常见场景中很强,一旦场景变得少见于训练分布,例如透明物体叠放、镜面反射中的二次遮挡,或者极端焦距下的透视畸变,错误就会显现。模型可能突然让物体穿透桌面,或者让手臂从身体另一侧出现。
与NeRF或3D Gaussian Splatting这类显式表示相比,Sora的隐式空间理解更适合生成任务,而不是测量任务。显式方法可以从任意新视角合成像素,并保证几何一致性;Sora则在已知视角的视频延续上更自然。未来如果二者结合,例如先用视频生成器产出粗粒度序列,再用显式三维模型修正物理和几何错误,可能会显著提升可用性。
物理规律:统计相关性如何逼近力学约束
物理规律在视频中表现为强约束:物体不会凭空消失,刚体碰撞后动量传递,液体流动时体积近似守恒。Sora并不求解纳维-斯托克斯方程,也不维护刚体之间的接触约束。它只是发现视频序列中,某些图块组合几乎总是以特定方式出现。例如,一个球撞击积木后,积木倒塌的方向在统计上与撞击角度相关。模型学习了这种相关性后,就能生成看上去符合直觉的物理过程。
这种统计物理观在短时间尺度内效果很好。杯子落地时碎片飞溅、水面被石子激起波纹,这些高频、局部的物理现象都可以从数据中直接模仿。问题出现在长时间尺度和多物体耦合场景。比如一个钟摆连续摆动二十秒,模型可能慢慢丢失能量守恒;多个弹性小球相互碰撞时,可能出现速度突变或穿透。因为它并没有真正的动力学状态变量,只是在每个时间步生成最像下一帧的画面,误差会逐步累积。
一个可行的改进思路是把物理先验作为条件信号注入生成过程。传统物理引擎可以输出刚体位置、速度、碰撞掩码,这些表示压缩后可以作为交叉注意力中的key和value,引导视频模型生成更符合力学约束的画面。反过来,Sora也可以为物理引擎提供材质和初始状态的粗略估计。这种生成模型与可微模拟器的闭环,或许能突破当前世界模型在物理一致性上的瓶颈。
局限、评估与工程落地建议
评估Sora这类世界模型的三维与物理能力,不能只看主观画面是否好看。更可靠的方式是设计针对性的测试集:固定相机后让物体做已知运动,检查投影尺度变化是否合理;或者生成一段自由落体,追踪物体边界框的加速度是否接近重力常数。对于遮挡关系,可以用分割掩码衡量前景边缘的稳定程度。这些指标比人工打分更能暴露隐式模型的弱点。
工程实践中,如果计划把Sora生成的内容用于产品原型、广告分镜或训练数据增强,需要建立一道校验环节。对物理精度要求较高的片段,例如产品跌落模拟、液体灌装演示或机械装配过程,建议先用视频生成产出多种候选,再交给传统仿真或人工检查筛选。不要直接把生成结果当作真实物理测量值使用,因为模型输出的只是最符合训练分布的像素序列,而不是可验证的力学状态。
从更大的视角看,世界模型的目标并不是取代物理引擎,而是提供一种低成本的直觉生成能力。物理引擎负责精确,世界模型负责想象。当二者之间的接口越来越成熟,开发人员可以用自然语言描述一个场景,让Sora生成初始分镜,再由显式模拟器验证和修正,最后合成高质量视频。这种混合管线可能会成为未来内容生产与仿真测试的重要形态。