Cornell用四段Blender代码做单图逆图形,六项指标赢五项

Thinking in Blender: Staged Executable Inverse Graphics with Vision-Language Models

Guangzhao He, Rundong Luo, Wei-Chiu Ma, Hadar Averbuch-Elor

cs.CV

2026-06-02

Cornell 的 SEIG 把单图逆图形拆成几何、材质、构图、光照四段,每段由 Claude Opus 4.7 写可执行 Blender 代码并自检。NeRF 合成场景 PSNR 13.58,六项指标赢五项,超过带 SAM-3D 的整包代理。

这篇在解决什么

从一张图反推可编辑的三维场景,是图形学里的老问题,也一直欠定:几何、材质、构图、光照缠在一起,改一个量会把另一个量的错盖住。近年主流答案是 NeRF 和 3D Gaussian Splatting 这类神经场,新视角看起来很像,但几何、材质、灯光被压进一套隐向量,不能当 Blender 文件打开,也不能单独换一盏灯、挪一个杯子。

另一条路是让视觉语言模型直接写场景程序。最近的 VIGA 已经把这件事做成「写代码、渲染、对比、再改」的循环,几何、材质、构图、光照仍被当成一个大优化问题一起解。Cornell 这篇问得更窄:不接 SAM、不接 SAM-3D、不用可微渲染、也不用多视图监督,只靠现成 VLM,能不能把单图重建成一份可执行、可编辑的 Blender 程序。

方法

SEIG 的做法是把艺术家在 Blender 里的工作流拆开,按依赖顺序提交,前一段交出去后面原则上不再回头改。管线分五步。

场景图分解与初始化。模型先把图拆成层级场景图,叶子节点必须落到球体、立方体、圆锥这类 Blender 原语。初始化只根据文字描述搭粗脚手架,并粗略放灯光和相机,给每个部件一个稳定物体名。漏掉的物体后面很难补回来,所以这一步会独立采样多份场景图和脚手架,再由选择器挑覆盖最全、结构最像样的一份。方法图注写明采样四份。

几何阶段对每个已命名物体做三类修改:局部网格和曲线、缩放旋转对齐、补零件并整理层级。允许换视角渲染、单独隔离物体、回滚失败编辑。

材质阶段把初始化时的单色占位换成 Blender 的 PBR 材质,改 roughness、metallic、法线等。走材质专用工具,禁止改几何。

构图阶段只调物体相对位置、尺度、旋转和接触关系,必要时动目标相机,不许改几何和材质。

光照阶段把物体形状、外观、布局、相机全部冻结,只改灯类型、位置、能量、颜色、软硬阴影,以及曝光和色彩管理。改猛了会过曝或过暗,指令要求保守,并允许回滚。

每一段内部是 generator–verifier 循环:生成器写代码、执行、渲染,验证器只看本阶段该看的因素,并返回一份可执行的 discrepancy checklist。预算按难度给,几何 5 轮,材质和构图各 3 轮,光照 2 轮。超预算就强制挑本阶段最好的一次往下走。骨干模型全程是 Claude Opus 4.7,生成器和验证器同一套,零微调。

结果

评测集两块。NeRF 合成 8 个场景去掉高光金属球那一档,从剩下 7 个各渲 5 张;再加 VoxHammer 来的 13 个物体中心场景,论文里叫 Edit3D。对照是同一骨干上的 VIGA 两档:原版带 SAM 和 SAM-3D 做预重建,以及关掉专科模型、只留 VLM 循环的 VIGA VLM-only。有参考网格时,先用 Neural Deformation Pyramid 和 ICP 配准,取 Chamfer 距离更小的那次,再从参考相机渲染,避免相机估计搅进分数。

方法NeRF PSNRNeRF DINONeRF CLIPEdit3D PSNREdit3D DINO
VIGA VLM-only12.330.62210.845111.520.5606
VIGA full11.180.55450.798612.480.4832
SEIG13.580.71880.883012.650.6293

两组都是六项里赢五项。NeRF 上 PSNR 比 VLM-only 高 1.25,比带 SAM-3D 的高 2.40;DINO 从 0.6221 / 0.5545 拉到 0.7188。唯一没赢的是 SSIM:NeRF 上 0.6881,低于 VLM-only 的 0.7122;Edit3D 上 0.6737,低于 0.6776,差距很小。带专科工具的 VIGA full 在 NeRF 上全面更差。

定性图里,VIGA full 常碎成错色网格,人形还会把正面五官复制到后脑,就是单视图抬网格里的 Janus 失败。SEIG 用原语拼人,躲过了这一类。面包篮那个例子也老实:遮挡里其实是面包棒,系统做成了圆面包,轮廓说得通,但不是真值。VIGA 两档在同一张图上连篮子结构都没拼圆。

下游不需要再训练。灯可直接换;物体是场景图节点,可复制零件、改贴图、改形状、重排;网格分开存放,接到 Blender 刚体或软体修饰器就能摇桌子、往沙发丢球,不用补成水密网格。

为什么重要

对做 3D 内容管线的人,这篇的判断很明确:当前 agentic 逆图形的瓶颈是视觉精度和任务分解,不是工具箱有多全。同一套 Opus 4.7,分段提交比「SAM-3D 先抬网格再让 VLM 改」更稳,专科工具甚至会把纹理覆盖掉、把场景拆碎。输出是 Blender 程序,重打光、局部编辑、接物理引擎这些 NeRF 和 3DGS 要另做解耦才能碰的事,在这里是文件操作。

它不是把像素误差打到能替代神经重建的水平。PSNR 13.58 仍然很低,场景是原语拼出来的,适合要可编辑资产的工作流,不适合要照片级新视角的工作流。

局限与存疑

论文自己写了两条硬伤。分段是贪心的:几何阶段交出去的错形状,后面材质和构图救不回来,作者提到可以加全局回访,但会再乘一轮推理成本。另一条是调用量:每段多轮 generator–verifier,API 时间和费用明显高于单次生成,正文没给具体美元或分钟数。

评测规模也偏小。合成侧大约 35 张图,真实侧 13 个物体场景,没有报告方差,也没有按阶段做消融。SSIM 两项都输给更简单的 VLM-only VIGA,分段对结构相似度不是单向变好。单视图本身欠定,面包篮那种「看起来合理但不是真值」会继续出现。工具层绑在 Blender 的 Python API 上,换引擎要重写。

术语

原文与代码

社区讨论

相关论文

全部论文解读