Blender 程序化编辑:放置成功率 0.5% → 15.5%,差的是一个沙箱

多模态大模型已经能当交互 agent,但精确、程序化的 3D 图形编辑一直训不出来,原因不是模型不够聪明,是没有确定性、状态可验证的执行环境——大家只能对着闭源 API 瞎试。

香港科技大学与商汤的 BlenderFORGE(arXiv 2611.10768,2026-11-07)就是补这个环境:让开权重 MLLM 通过写 Blender Python(bpy)代码去编辑显式的 Blender 场景。

一、它挑的四类任务,都是"状态可验证"的

任务族 要改什么 怎么验证
物体放置(Placement) 把物体挪到该在的位置 比较"被移动物体集合"与真值集合(Jaccard 距离)+ 位姿距离(加权欧氏-测地)
形态键(Shape key) 改形变参数 ShapeKey-L1:形态键值向量的 L1 距离
灯光(Lighting) 改颜色与强度 颜色差 + 能量差
材质(Material) 改材质参数 参数向量化的 L1 距离

评测协议沿用 BlenderGym:每次 episode 的输入包括起点场景 s 的文字描述、起点场景的多视角渲染图(带相机编号)、以及目标场景 s_g 的渲染图。模型在编辑过程里只能通过两个工具跟环境打交道:blender_code_executor 与 blender_preview_renderer——也就是 ReAct 式的工具循环。

每个任务族 200 条测试任务;API 超时或服务端错误导致的 episode 会从分子分母同时剔除,所以一个模型每族可能不到 200 条;模型自己写的代码报错不算一次废弃,可以继续迭代。

二、三个部件:数据、沙箱、优化

  1. 可扩展的扰动式数据生成管线:用精选资产与大规模 3D 场景仓库造"起点—目标"配对。
  2. 隔离的 Blender 沙箱:确定性执行代码、导出结构化场景状态、闭环回读。
  3. 训练策略:先 SFT(只微调语言模型,冻结视觉编码器与多模态投影层,用 Swift),再联合训练;奖励就用上面那套距离度量。

三、结果:同一个 backbone,差别很大

论文给了完整对照表,最值得看的两行(放置任务的三个严格度阈值):

模型 放置阈值 1 / 2 / 3
Qwen3.5-9B(原始) 0.50 / 1.50 / 3.00
Qwen3.5-9B(在 BlenderFORGE 数据集上训练) 15.50 / 29.50 / 40.00

论文自己总结的"8B 相对基线提升"在放置任务上是 +8.50 / +22.50 / +34.50(三个阈值)。有意思的是它在某些视觉距离指标上反而"变差"了(如 PL、N-CLIP 的某些列),说明它学到的是精确操作而不是"看起来更像"。

四、最该读的是失败样例

论文附了失败模式分析(failure.png)——这类附录比主结果有用:它把"模型会错在哪"写清楚了。

(图源:arXiv 2611.10768,下同。)

对做工具的人是提醒:代码能跑 ≠ 结果对。沙箱能保证"不崩",保证不了"改对了"。

五、我们的整理

5.1 为什么"沙箱 + 状态回读"是这类系统的地基

程序化 3D 编辑有三个必要条件,缺一个都训不出来:

  • 确定性:同一段代码必须产生同一场景,否则奖励信号是噪声;
  • 可回读:能把"现在场景长什么样"导出成结构化数据,才能算距离;
  • 可迭代:代码报错要能继续试,而不是整局作废。

这三条跟"模型多强"无关,是环境工程。BlenderFORGE 的贡献就在于把这三条做成了可训练件。

5.2 对我们的两条直接启发

  1. 给 AI 的 3D 工具要能"回读自己的操作":我们做 viewer 时习惯只做"看",但 agent 需要的是"查询"——查询物体列表、变换、材质参数、灯参数。能查询的几何才可验收。
  2. 别用渲染相似度当唯一指标:论文数据说明,视觉指标好看和操作正确是两回事;后者要靠结构化状态比对。

5.3 如果要复现这套评测,需要的东西

需要 具体是什么
场景素材 显式场景(物体、材质、灯光都已存在,不是从零生成)
评估口径 四类任务各自的距离函数(P-CD / ShapeKey-L1 / 材质参数 L1 / 色彩能量差)
沙箱 能确定性执行 bpy 且能导出结构化状态
工具面 至少两个:代码执行器 + 预览渲染器(ReAct 循环)
规模 每族 200 条测试任务(论文口径)

缺“工具面”的系统会退化成“一次性生成一段大代码”,然后靠运气;改成“写一小段 → 看一眼 → 再改”,成功率会差很多。

5.4 边界

  • 任务都在显式场景(有物体、有材质参数的场景)里做,不涉及从零生成模型;
  • 每族 200 条测试集,规模不大,结论适用于"编辑能力"而不是"通用 3D 理解";
  • 沙箱是 Blender 专用的,换 DCC(Maya/Houdini/Unreal)要重建同类环境。

六、先看看被改过的场景

模型改完的场景导出成 GLB / FBX 之后,用 3D Viewer 在浏览器里核对:位置对不对、材质和灯是不是按参数来的。要检查点云或扫描结果,用 LAS Viewer;做雕刻类改造就用 Sculpt。

同主题阅读

Sources