← 主页Blender 场景页编辑与动态建模页深度与相机页

白膜能当条件吗?training-free 白膜控制实验

把 Blender 里重建的无纹理几何(白膜)沿相机轨迹渲染,交给五类视频模型,看它能不能像 World in World 那样控制生成,而且不需要训练

2026-10-08 夜间实验 · 场景 robot_bedroom(主)+ 一间彩色客厅(推广检验)· 原版 MiniMax-H3、LingBot-World 2.0 + World in World、SolarWM-H3、H3 Fun-ControlNet、Wan2.1-VACE · AMD MI300X / MI308X / MI350X

0.03 → 0.83原版 H3「照片 + 白膜」第一次左转的画面重合度(改成官方提示词格式、参考补到 243 帧前后)
1.00把白膜直接当 K/V 证据注入后,画面里灰像素的占比(SolarWM-H3):被当成外观照抄
3 / 3LingBot 用「自动上色的白膜」补空洞,3 个随机种子都优于直接补白膜,且几何跟随白膜
0.872 / 0.885现成的 H3 Fun-ControlNet:照片首帧 + 白膜线稿,旋转 / 平移轨迹的画面重合度,全夜最高,首帧 PSNR 约 29.7 dB

结论速览

一、白膜怎么渲染

场景用 GPT-6 Astra 在 Blender 里按照片重建,相机标定为 60° 视场角(见深度与相机页),沿 H3 的「换朝向回访」轨迹渲染 237 帧:先左转 40° 停住,回正;再左转 55° 并下俯 12°,停住,回正。

同一条轨迹上的六种画面:Astra 写的材质、白膜、深度、法向、照片投影上色、均色白膜。

二、原版 MiniMax-H3:用自带的 ref2va

ref2va 的视频参考不是 ControlNet 那种逐帧对齐的控制,而是在时间轴上拼在目标前面的上下文:Qwen3-VL 以 2 fps 读它(语义),视频 VAE 把每一帧编码成固定的锚点(像素)。保留什么、改什么完全由提示词决定,官方格式是六段式,任务前缀、保留标记和每个标签的角色都有固定写法。

白膜参考视频,以及原版 H3 的几种结果:照片 + 白膜(R3a,种子 42 和 7)、照片 + 均色白膜(R3m)、只给白膜(R3b),和第一批格式下的照片 + 白膜(WA)。注意第 44–64 帧第一次左转时谁跟上了。

「重合度」:在生成画面里用 SAM 3 分割床、床头柜、窗、门、床头板,与 3D 场景按同一相机投影的物体比 IoU,取 17 个采样帧平均;「第一次左转」看第 44、56 帧,「第二次左转」看第 180、196 帧。首帧 PSNR 和原始照片比较;机器人比例是检测到机器人的采样帧占比。

组参考图参考视频提示词整体第一次左转第二次左转首帧 PSNR有机器人
Cfl2va:照片作首帧,镜头只用文字描述0.1430.050.0035.1100%
A照片彩色渲染第一批0.1740.030.5918.977%
B—彩色渲染第一批0.3610.060.8413.683%
WA照片白膜第一批0.2070.030.5816.480%
WB—白膜第一批0.1880.130.1110.587%
WC照片深度第一批0.1660.020.0117.2100%
WD照片照片投影上色第一批0.2080.030.6520.583%
R3a照片白膜官方格式0.4610.830.3818.080%
R3a 种子 7照片白膜官方格式0.5220.800.3818.877%
R3a 种子 123照片白膜官方格式0.6940.780.6618.780%
R3b—白膜官方格式0.5010.710.3911.883%
R3b 种子 7—白膜官方格式0.1530.050.4713.880%
R3b 种子 123—白膜官方格式0.4300.920.14——
R3c照片深度官方格式0.3290.710.3719.080%
R3a2照片彩色渲染官方格式0.1900.030.6720.480%
R3p照片照片投影上色官方格式0.1820.030.6320.780%
R3m照片均色白膜官方格式0.1550.040.3819.680%
R3dfl2va:照片作首帧 + 彩色渲染第 208 帧作尾帧0.2110.320.4431.081%
R3a 去掉时间戳照片白膜镜头只写「跟随视频」0.1710.020.0818.487%
R3a 不补帧照片白膜(237 帧,被截成 226)官方格式0.1640.220.3317.380%
官方格式这一批:照片 + 白膜、只给白膜、照片 + 深度、照片 + 投影上色、照片 + 彩色渲染、fl2va 首尾帧,以及两种参考视频。
第一批格式:照片 + 白膜、只给白膜、照片 + 深度,与照片 + 彩色渲染对照。
最早的三组:彩色渲染当参考(A、B)和文字镜头(C),与 SolarWM-H3 基线对照。

平移相机:有视差时还跟得住吗

同样的配方换成「平移回访」轨迹:第二段动作时相机一边左转 50°,一边向左平移 0.66 m、向前 0.22 m,靠近门口。白膜按米制轨迹重新渲染,提示词里的第二段镜头改成平移描述。

组整体第一次左转(同旋转轨迹)平移后的停留段首帧 PSNR有机器人
照片 + 白膜0.2450.450.5117.887%
照片 + 均色白膜0.2300.220.6019.487%
只给白膜0.4150.480.5512.080%

平移后的视角跟到了(0.51–0.60),但这一次第一次左转只跟了一半(旋转轨迹上是 0.78–0.83),说明 H3 跟随视频参考的相机本身有随机性。

平移轨迹:白膜、照片 + 白膜、照片 + 均色白膜、均色白膜、只给白膜、法向。

用白膜做视频编辑

首帧换成之前在 Blender 里改过材质的版本(浅暖灰墙、绿色条纹被子、蜂蜜色木地板,机器人从原图贴回),参考视频仍是原来的白膜,提示词把材质描述换掉。结果首帧和编辑图一致(SSIM 0.83),第一次左转 0.80,转到的新区域也是编辑后的风格。也就是说,只要改一张首帧,几何和镜头由白膜保证,H3 会把编辑传播到整段视频。

同一份白膜:原照片(R3a)和改材质的首帧(R3e)各生成一段,另附 R3a 种子 123。

三、LingBot-World 2.0 + World in World:K/V 证据注入

World in World(WiW)的做法是:把证据画面(源视频按深度投影到目标相机的画面)在 t=0 过一遍冻结的 LingBot,取出每层注意力的 K/V,在前 3 个去噪步里拼进当前段的注意力,按可见度给 logit 加权。源视频看不到的区域是「空洞」,不给证据,由模型自己生成。我们沿用它的实现,只替换证据画面;相机内参改成标定的 60°(WiW 默认按 90° 处理这段视频)。

指标都在空洞区域里算(第 44 帧和第 196 帧镜头转开后露出来的墙、门、地板),取 3 个随机种子的均值:和白膜比的 PSNR 越高越像照抄白膜;和彩色渲染比的 PSNR 越高说明跟着上色的网格走;边缘相关衡量空洞里的几何是否跟白膜一致。

空洞里放什么与白膜 PSNR与彩色渲染 PSNR饱和度与白膜边缘相关观察
不放(WiW 原生)9.2 / 9.712.4 / 11.60.22 / 0.150.01 / −0.02空洞里编出圆镜、书桌、绿植,每个种子编的都不一样
白膜23.4 / 30.611.0 / 12.00.08 / 0.080.16 / 0.12几何跟上了,墙和地板照抄成灰色,机器人边缘有白色描边
彩色网格(Astra 材质)10.8 / 11.524.2 / 30.60.27 / 0.230.20 / 0.22几何跟随,深炭灰墙,机器人保留
均色白膜(自动上色)9.7 / 10.921.9 / 22.70.31 / 0.260.28 / 0.23和彩色网格几乎一样,闪烁最低;不需要任何材质

只跑了种子 42 的其他做法:白膜权重降到 0.25 时几何控制丢了,在白膜没有门的地方多编了一扇门;V 统计量对齐首帧后颜色偏紫蓝灰、地板长出砖纹;只在第 1 步注入时墙上多出开关面板和竖缝;整段画面都用白膜、彩色渲染或均色白膜当证据(不用源视频投影),会几乎逐帧照抄渲染,机器人消失。

LingBot(832×464,16 fps):原生、空洞补彩色网格、补白膜、补均色白膜、纯白膜证据、白膜 + V 统计对齐。

平移相机

相机向左平移时,第 180–196 帧约 99% 的画面都是源视频没见过的空洞。先用 WiW 的深度和白膜的米制深度算出单位换算(0.136 m / WiW 单位,近处和远处并不完全一致),再统一相机运动。3 个种子平均:空洞补均色白膜时,空洞和均色白膜的 PSNR 31.8 / 34.1 dB、与白膜边缘相关 0.52 / 0.55、停留段闪烁 0.20;原生只有 10.3 / 9.9 dB、相关约 0,闪烁 0.65。

平移轨迹:原生 WiW 在门口编出一扇大白门和绿植;补均色白膜后墙、门、床头柜都和白膜一致;补白膜则是灰色。

四、SolarWM-H3:我们的证据注入

SolarWM-H3 用和 WiW 同类的接口:证据画面在干净时刻过一遍冻结模型,取资产覆盖到的 token 的 K/V,从第 4 段(第 68 帧)起拼进注意力。种子 42,换朝向回访轨迹。

证据整体重合度第二次左转色彩度灰像素占比有机器人
无(基线)0.4610.096.60.6397%
彩色网格0.7640.729.40.4130%
白膜(全程注入)0.6630.482.11.0030%
白膜,只在第 1 步注入0.4570.063.40.9863%
白膜,只在前 2 步注入0.4130.212.20.9930%
白膜,V 统计对齐首帧0.7070.693.80.8730%
白膜,半权重混合0.5060.064.30.8363%
白膜,只给家具0.4780.045.90.7837%
彩色网格,只在第 1 步注入0.5610.426.90.4070%
照片投影(只用看得见的像素)0.6040.067.60.6067%
照片投影 + 白膜0.5590.156.00.7230%
均色白膜(自动上色)0.6240.697.60.4130%
SolarWM-H3:白膜、无证据、彩色网格、白膜全程、只第 1 步、V 统计对齐、照片投影、只给家具、半权重。

五、现成的控制模型(训练好的,我们不用训练)

H3 Fun-ControlNet-Union 2.0

阿里 PAI 为 H3 训练的控制分支(10 层注入,支持深度、Canny、MLSD 等)。控制视频由白膜生成:深度用逆深度可视化,线稿 = 法向图的折线 + 深度图的遮挡边。官方管线只支持 t2va(外观全靠文字);「照片首帧」是我们参照 ComfyUI 的做法,给首帧条件行补零控制行接上的。

控制整体重合度第一次左转第二次左转首帧 PSNR有机器人
白膜线稿0.8390.890.7213.277%
白膜深度0.6240.610.5912.480%
照片首帧 + 深度0.6690.870.2128.883%
深度,控制强度 0.60.2900.030.247.383%
照片首帧 + 白膜线稿0.8720.900.7229.880%
白膜线稿,种子 70.8350.900.9013.080%
平移轨迹:白膜线稿0.8500.900.9813.680%
平移轨迹:照片首帧 + 白膜线稿0.8850.910.9829.783%

线稿比深度强:深度在大面墙上几乎没有结构,线稿把墙角、踢脚线、门框、地板缝都画了出来。平移轨迹上第二次转身后的停留段达到 0.98。照片首帧的接法是经验性的(控制分支训练时没见过首帧条件行),首帧加深度时第二次左转明显变差,首帧加线稿则没有这个问题。

H3 Fun-ControlNet(旋转轨迹):白膜线稿控制视频、线稿、照片首帧 + 线稿、深度、照片首帧 + 深度、线稿换种子。
H3 Fun-ControlNet(平移轨迹):白膜线稿控制视频、线稿、照片首帧 + 线稿。

Wan2.1-VACE

832×480、81 帧、50 步。「深度相关」是生成画面估出的视差和白膜深度的相关系数(白膜渲染本身 0.966,真实照片对白膜深度 0.906)。

设置深度相关首帧 PSNR / SSIM观察
深度 + 参考图0.95315.7 / 0.72几何和镜头完全跟随;照片只迁移配色材质,细节由模型编
只有深度0.95812.7 / 0.57外观完全由文字决定,和照片不符
深度 + 照片作首帧0.93933.7 / 0.97首帧锁住、色调继承照片;照片里有、网格里没有的机器人在第 1–2 帧消失
白膜当灰度控制0.95710.0 / 0.46亮度被锁死,输出就是上了色的白膜,不可用
VACE 各设置对比(每 3 帧取 1 帧覆盖整条轨迹,镜头约 2 倍速)。

六、怎么选

需求推荐做法注意
外观来自照片、几何和镜头来自白膜,离线生成原版 H3 ref2va:照片作编辑后的首帧 + 纯白膜视频,官方六段式提示词,镜头逐段写时间,参考补到 243 帧不要给彩色或投影参考;第一次转身偶尔跟不全,建议多种子挑选
交互式 / 长时序世界模型(LingBot、WiW)白膜按物体自动上色,只补源视频投影的空洞不要把纯白膜当证据,也不要整段画面都用网格证据
几何控制最准,外观也要像照片H3 Fun-ControlNet:照片首帧 + 白膜线稿(重合度 0.872);或 VACE 深度 + 照片首帧需要第三方控制权重;照片里有、网格里没有的动态主体在 VACE 里会消失
视频编辑(改材质、换风格)Blender 里改材质,渲染首帧贴回动态主体,配原白膜跑 H3 ref2va首帧里的动态主体需要从原图贴回

七、第二个场景:彩色客厅

为了检验结论能不能推广,换一张颜色丰富得多的客厅照片(淡紫墙、奶白布艺沙发、红紫黄抱枕、人字纹地板、绿植、挂衣架)。没有视频可以自标定,视场角用 MoGe-2 估计(53.6°);Astra 建模 3 轮,物体 IoU 0.458 → 0.524 → 0.569,深度误差 2.3%,有一个物体悬空。沿同一条换朝向轨迹渲染白膜,照搬卧室上的 R3a 配方(官方格式、逐段时间、补帧)。

这个场景用另一种对齐指标:直接拿 Blender 的物体 ID 图当真值,按名字归成沙发、抱枕、地毯、边桌、挂衣架、书架、植物、海报、坐墩、窗帘十类,和生成画面里 SAM 3 的分割比 IoU。Astra 的彩色渲染自己也只有 0.704(SAM 3 在渲染图上本身就有漏检),可以当作上限。

组物体对齐开头第一次左转第二次左转色彩度灰像素占比首帧 PSNR
原版 H3 照片 + 白膜,种子 420.3750.630.390.2035.60.0819.3
原版 H3 照片 + 白膜,种子 70.2890.630.000.3933.10.3018.5
原版 H3 照片 + 白膜,种子 1230.5620.630.380.62———
原版 H3 照片 + 白膜,种子 20250.3640.610.200.30———
Fun-ControlNet 白膜线稿0.5970.680.370.6633.40.2511.1
Fun-ControlNet 照片首帧 + 白膜线稿0.6230.670.490.6736.70.1029.0
Fun-ControlNet 照片首帧 + 白膜深度0.5990.640.470.6342.40.0728.6
参照:Astra 彩色渲染0.7040.710.650.7420.70.54—
参照:白膜本身————3.11.00—
第二个场景:白膜线稿、原版 H3 照片 + 白膜、Fun-ControlNet 线稿、照片首帧 + 线稿、照片首帧 + 深度、Astra 彩色渲染。
第二个场景的渲染:Astra 材质、白膜、均色白膜、深度、法向、线稿。
白膜参考视频、原版 H3 照片 + 白膜(两个种子)、Astra 彩色渲染。

八、顺带:Claude Opus 5.5 和 GPT-6 Astra 谁建模更好

同样的 60° 标定输入、系统提示、反馈和评分,从零开始建 Blender 场景。

模型物体 IoU(逐轮)深度误差每轮耗时费用脚本长度
GPT-6 Astra,4 轮0.717 → 0.755 → 0.759 → 0.7943.4–3.5%285–362 s$3.82688–1102 行
Claude Opus 5.5,4 轮报错 → 0.365 → 0.456 → 0.5454.4–5.5%约 31 s$0.50123–139 行
Claude 接着跑满 12 轮最好 0.6743.4–4.7%约 31 s约 $1.55约 130 行
Astra 最好一轮
Astra 第 4 轮:被子褶皱和条纹、枕头、床单、带抽屉的床头柜、壁灯、门窗。
Claude 最好一轮
Claude 最好一轮:被子是一整块光滑的条纹曲面,床垫是白色方块。

Astra 第 1 轮就超过了 Claude 12 轮的最好成绩;差距主要在细节量。Claude 快约 10 倍、便宜约 7 倍,适合快速迭代粗模。

九、方法与局限