Generative Cinematographer: Composing Camera and Object Motion in 3D
Jiahan Zhang, Chaohao Yang, Namitha Guruprasad, Vivekjyoti Banerjee, Trong-Tung Nguyen, Alan Yuille, Anand Bhattad
cs.CV, cs.AI
2026-10-02
把单图抬升成 3D 场景,分开画相机路径与前景 3D 轨迹,冻结 Wan 只训 LoRA 与轻量分支;相机平移误差与前景感知保真度居五基线最优。
可控视频生成里,物体运动的主流控制方式是 2D 的:要么画像素级轨迹(DragAnything、DragNUWA 这类),要么给几个稀疏 drag 点。问题在于同一条 2D 轨迹可以对应好几种 3D 运动,相机和物体同时动的时候尤其分不清:画面里的位移到底是物体转了,还是镜头摇了?生成的视频可以看起来完全合理,走的却不是艺术家想要的运动。论文里有个直观例子:对一条鱼做 2D drag,基线模型把鱼朝反方向转了。
另两条路各有代价。物理模拟器和类别先验(比如人体骨架)能提供结构,但只覆盖它们支持的材质和类别;想直接学 3D 控制,又卡在标注上,3D 运动标注稀缺,合成数据有真值但画面和真实素材差距大。
GenCine 的思路是把控制面整个搬进 3D:先把单张图抬成一个 3D 场景,再让艺术家在这个场景里同时编排相机和物体。
难点在后半段:预训练视频模型不认识相机路径和 3D 点轨迹。GenCine 把控制投影成三张逐帧引导图:
前景和背景共用同一套坐标归一化,物体运动因此是相对整个场景表达的,这正是 2D 轨迹丢掉的信息。
训练侧冻结 Wan2.1-Fun-V1.1-14B-Control 的 VAE 和主干,只训三样东西:一个半分辨率几何 side branch(零初始化残差投影注入主干)、分支间的卷积投影、主干 LoRA。数据是 45k 段视频:约 5k 来自合成集(Dynamic Replica、PointOdyssey,带真值几何和轨迹),40k 来自真实数据(SpatialVid-HQ 等),真实视频的控制靠 ViPE 估深度和相机、CoWTracker 出轨迹,把观测到的运动反解成 handle。训练时随机改变 handle 的数量和摆放,模拟艺术家实际给出的稀疏、部分控制。总预算约 20k 迭代、4 张 H100,分辨率 480×832。
75 个评测例(DAVIS + SpatialVid 测试集),按内容分 Camera Shooting 和 Object Interactions 两组,对照五个可控基线加无控制的 Wan2.1。拍摄组:
| 方法 | Trans↓ | Rot↓ | PSNR↑ | R-LPIPS↓ |
| Wan2.1(无控制) | 2.40 | 4.98 | 12.44 | 0.34 |
| Wan-Move | 1.02 | 3.73 | 16.58 | 0.19 |
| Go-with-the-Track | 1.07 | 3.69 | 16.61 | 0.19 |
| GenCine | 1.00 | 3.70 | 16.64 | 0.18 |
拍摄组里 GenCine 平移误差最低,PSNR、R-PSNR(17.16)、R-LPIPS 都最好;旋转误差 3.70 排第二,比 Go-with-the-Track 的 3.69 高 0.01。交互组同样平移误差最低(1.05),LPIPS 0.35 和 R-LPIPS 0.21 均为全场最低,PSNR 16.54 略低于 Go-with-the-Track 的 16.59。R- 前缀指标只在受控前景区域内计算。
这组对照还有一个输入不对称:ATI、Wan-Move、Go-with-the-Track 拿到的是从参考视频提取的 dense 2D 轨迹,VerseCrafter 和 SymphoMotion 拿相机加粗粒度物体控制;GenCine 只用稀疏 3D handle 加相机轨迹。论文自己说明 dense 轨迹在从单图创作新运动时拿不到,但不对称仍然意味着数字不能只按表面读。
消融把三张图的分工拆开了:去掉背景 XYZ 图,R-LPIPS 从 0.184 涨到 0.235,R-PSNR 从 17.16 掉到 16.20,静态背景的对应关系是前景控制的参照系;去掉前景 XYZ 图,R-PSNR 掉到 15.26。side branch 用半分辨率反而比全分辨率略好(R-LPIPS 0.184 对 0.189)。
对做可控生成的人,这篇验证了一件事:3D 原生的控制接口可以接进现成视频模型,代价只是一条轻量分支加 LoRA,4 张 H100、20k 迭代、45k 段数据,是小团队负担得起的量级。对使用者,相机路径加局部 3D 轨迹的表达方式和实拍工作流对齐,比逐帧画 2D 轨迹省事,也天然避开 2D 控制的歧义。机器人手臂的定性结果有点超出预期:只控制末端执行器,模型带出了相连关节的运动,说明稀疏控制能泛化到控制区域之外。
作者自己列的:单图场景不建模被遮挡区域,大视角变化下未见表面全靠生成器补;分段刚性 handle 擅长铰接运动,不适合断裂、撕裂、流体;分布式形变要画很多 handle,操作会变得繁琐;handle 之间没有物理约束或因果交互,两个把手交错不会产生碰撞。
读下来还有几处要打折扣。75 个例子分两组,单组三十几个,0.01 级别的旋转误差差距在这个规模下说明不了什么;控制信号与基线不同源,严格说这不是同输入对照;真实训练视频的几何和轨迹都来自估计器,伪标签噪声会传进模型;操作门槛也是真的,要在 Blender 里圈区域画轨迹,比在图上拖点高一个档次。论文正文没有给出代码或权重发布计划,目前只有项目网站。