ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Antigravity + Blender MCP:AI智能体驱动的数字孪生仓储建模

Antigravity + Blender MCP:AI智能体驱动的数字孪生仓储建模 1. 为什么是 Antigravity Blender MCP 这套组合1.1 数字孪生项目里最花时间的不是效果而是重复建模先说个背景。我前段时间接手一个智慧仓储可视化的原型需求不需要上线完整业务系统但要在一个三维场景里把仓库布局、货架、货物、AGV路径全部都做出来并且后续能接上真实的库存数据。听起来不算难但我一开始用传统方式做了两天就崩溃了——不是技术难而是大量工作消耗在重复劳动上。举个例子一张标准货架从立柱、横梁、层板到背板少说十几个零部件一个仓有上百排货架如果全靠手捏光这一项就能耗一周。而且手工建的模型往往是一次性的后面要改层数、换尺寸、统一材质全得返工。我当时的想法是能不能用 AI 来做这套重复性的三维搭建于是我就想到了 Antigravity Blender MCP 这条链路。先给不知道的朋友做个定位。Antigravity 是一个面向智能体编程的 AI 集成开发环境它最大的特点是能把主流的 MCPModel Context Protocol模型上下文协议工具直接接入到编程过程中让 AI 不只能写代码还能直接操作系统里的其他软件——比如 3D 建模软件 Blender。Blender MCP 则是一个开源插件加服务端的组合它把 Blender 包装成一个可以通过 MCP 协议接受指令的工具服务AI 通过它就能创建物体、改坐标、设材质、控制相机、导出自定义 JSON。这套组合解决的问题很简单也很关键把三维建模从手动操作变成对话式操作。你不需要每个细节都亲自动手AI 按指令批量生成、批量修改而你只在关键节点上做确认和微调。我在完成这个仓库原型之后可以说这套组合在批量搭建规范建模快速迭代三类场景下比纯手工快出至少五到十倍。1.2 Antigravity 的角色它不只是帮你写代码的 IDE很多读者可能对 Antigravity 还不熟我先说下它在我工作流里的位置。它不是简单的代码补全工具而是能承担规划—调工具—看结果—继续行动整个循环的智能体开发环境。我配置好 MCP 之后可以在自然对话里下达很长的任务指令比如把当前场景里的所有货架统一改成灰色金属材质并且以每个货架的中心点为原点输出一份包含货位坐标的 JSON 清单。Antigravity 会先把这条指令拆解成多个动作调用 Blender MCP 的列表工具查看场内有哪些物体按名字筛选货架逐个修改材质最后通过 MCP 提供的数据导出接口生成 JSON。整个过程它会从 Blender 里读取当前状态来调整下一步动作而不是只靠猜。再加上 Antigravity 支持多文件项目级的上下文理解我在里面放一个仓库的需求文档、一份物体命名规范和一段历史代码它就能保持风格一致地往下建模。这套体验和以前那种复制粘贴代码片段到 Blender Python 控制台的效率完全不在一个量级。1.3 Blender MCP 的价值让建模 API 之间终于有了一座桥Blender 本来就有非常强大的 Python APIbpy可以直接加立方体、改顶点、控制渲染。但 API 强大归强大绝大多数 AI 工具都很难直接用对它因为 bpy 的调用范式、场景状态管理、物体选择逻辑和通用代码生成模型的训练语料差异很大。AI 经常写出一个看着没问题、一执行就报错的脚本。Blender MCP 等于是把 bpy 的那套复杂接口封装成 AI 更习惯的工具式接口例如创建物体是一个工具修改位置是一个工具获取当前场景信息是一个工具。AI 不需要记住 bpy 里几十个模块的细节它只需要学会如何调用工具、如何传递参数。这样就大大降低了 AI 在三维软件里的犯错率。我在实际项目里最常用到的封装工具就是场景列表列出目前场景里的所有物体、创建对象生成箱子、圆柱、平面等基本体、修改对象属性位置、旋转、缩放、材质设置、摄像机控制还有自定义的 JSON 导出工具。掌握这几个已经可以覆盖我前面提到的仓储模型 80% 的搭建工作。1.4 这条链路适合谁如果你已经在做数字孪生、智慧园区、仓储可视化或者任何需要大量三维场景组装的工作这条链路很值得花一个周末搭起来。它适合三类人数字孪生/前端可视化工程师需要快速搭建一个看起来能上会的三维场景原型。三维美术师被大量重复的放箱子、摆货架搞得麻木想让 AI 干重复活。非三维背景的产品经理/项目负责人不一定要精通 Blender但需要自己动手出演示场景。当然它也有自己的边界。精细的曲面建模、高质量的贴图绘制、复杂动画绑定MCP 现在还做不了。它适合的是规则明确、批量可复用、状态可枚举的建模场景。智慧仓储恰好就属于这一类。2. 环境搭建与 Blender MCP 配置全流程2.1 安装清单与版本选择先说结论我建议的环境组合如下装最新稳定版 Blender4.0 以上Python 插件脚本直接放到 Blender 的 scripts/addons 目录里Antigravity 方面最新稳定版即可建议至少是支持自定义 MCP 配置的版本另外在 Antigravity 所在机器上装好 Python3 环境因为 MCP server 是用 Python 写的。关于版本有个坑MCP 这个生态更新很快Blender 插件和 MCP server 的版本经常谁先谁后地互相影响。我的建议是先去对应开源项目的 README 看一下当前推荐的 Blender 版本不要盲目装 alpha 或 beta。之前我就试过在 Blender 4.1 里开了新的实验性 API导致插件消息接收总是超时来回排查了一下午。稳定版本优先。2.2 Blender 侧插件安装与端口服务启动Blender MCP 插件安装过程不复杂。把下载的插件文件解压放到 Blender 的插件目录然后在 Blender 偏好设置 - 插件 里搜索 MCP开启即可。开启之后侧边栏会多出一个 MCP 面板里面有一个启动服务器按钮点击后它会在本地开一个常驻服务默认监听本地端口。需要注意在测试、建模过程中这个端口服务要一直保持开启状态关掉 Blender 或者关掉服务AI 那边就连不上了。我个人的习惯是把 Blender 窗口放在第二个显示器上服务一开就让它一直挂在那方便观察 AI 每次改动带来的实时视觉效果。启动面板的右侧会显示一些日志信息第一次启动看到类似server is running的提示就说明接入这半边已经 OK 了。此时先用浏览器手动访问一下本地端口地址如果能看一个欢迎字段就证明启动成功这一步很关键很多环境问题都能在这里提前暴露。2.3 Antigravity 侧MCP 客户端配置Antigravity 里的 MCP 配置入口一般在项目设置或者 Agent 配置区我这边是以 JSON 格式手动添加的。在配置文件的 mcpServers 字段里加上类似的写法{ mcpServers: { blender-mcp: { command: python, args: [C:/path/to/blender-mcp/server.py], env: {} } } }这里的核心是把 server.py 的路径写到 args 里。完成后保存配置、重启 Antigravity 的 Agent 会话再打开 MCP 工具列表如果能看得到 blender-mcp 暴露出的工具清单就算是通了。这一步踩坑最多的其实是command 指向的 python 和安装依赖的 python 是不是同一个。我之前用系统自带 Python 装依赖后来在 Antigravity 里却指定了另一个虚拟环境的 Python结果 MCP server 一直起不来日志里错误丢了一堆。后来统一到同一个 Python 环境之后才恢复正常。2.4 验证连通性第一次对话式建模配置好之后不要急着搞复杂的先做一次极简连通性测试。在 Antigravity 对话窗口里输入请用 Blender MCP 在当前场景里创建一个 2x2x2 的立方体命名为 TestCube。如果一切正常你会看到 AI 调用了创建工具、返回成功Blender 视口里立刻出现一个立方体。这里有一个很容易被忽略的重点AI 会真实地把操作发到 Blender 并等待返回结果如果 Blender 那边服务没有开AI 会明确汇报工具执行失败而不是自己假装成功。这一步测试通过后你再尝试让 AI 列出场景里所有物体看能否读回 TestCube 的信息。2.5 常见环境坑一览现象常见原因解决办法MCP server 无法启动Python 路径和依赖环境不一致统一用同一个 Python 安装依赖并指定该路径工具调用超时Blender 主进程卡顿或插件服务未开重启 Blender 服务简化当前场景环境场景回传信息不完整物体没有规范命名让 AI 先输出场景整理脚本批量重命名后继续材质/灯光改动没有生效操作对象选错或未指定材质槽在指令中强调对指定物体新建材质并指定 BSDF 节点3. MCP 工作原理AI 是怎样看懂Blender 场景的3.1 MCP 协议里的三个角色MCP 这个协议很多人第一次听觉得玄乎说透了其实就三个角色客户端Client、服务端Server和工具Tools。AI 所在的 Antigravity 是客户端Blender MCP 是服务端服务端里注册的各类操作就是工具。在这个过程中AI 不需要写一整套 Python 脚本来控制 Blender。它只需要请求服务端执行某个工具的方法把参数填好服务端处理完以后把结果返回给客户端客户端再把结果反馈给 AI。这样 AI 的知识负担少了很多它只需要知道有哪些工具能用每个工具的参数是什么意思就可以完成操作了。我在测试的时候故意试过一种情况不告诉 AI 任何 Blender 操作细节只让它把场景里的所有物体沿 Z 轴抬高 0.5 米。它通过场景列表工具自己找到所有物体对象然后逐个调用修改属性工具完成操作。整个过程的变化是可视的逻辑也是合理的。3.2 为什么比生成一段 bpy 脚本更靠谱有人会问直接用生成式 AI 写一段 bpy 脚本粘贴到 Blender 里执行不是更简单吗为什么要多一个 MCP因为脚本执行是一次性的、盲操作AI 写脚本时并不知道 Blender 当前场景里到底有什么物体、选中了什么、有没有重名的对象。脚本一出错你还要去读一堆报错信息再写补丁。而 MCP 方案是交互式的、有状态感知的AI 先通过工具拿到当前场景的真实数据再决定下一步动作这就像它拥有了眼睛。举个例子我要做一个把所有层板厚度改成 2cm的操作。脚本方式AI 盲写一个 for 循环去遍历某个集合MCP 方式AI 先调用列出所有物体发现有一部分物体其实是 AGV 模型于是它在指令里过滤掉名字包含 AGV 的物体只修改货架的子物体。这种灵活度让它在实际项目中极少做全量误改。3.3 场景状态回传数字孪生的基础能力数字孪生强调可交互、可联动。Blender MCP 的场景状态回传正好为这一点做了基础铺垫。通过 MCP 的读取工具AI 可以随时拿到当前场景里所有物体的位置、尺寸、名称、变换矩阵。这些数据经过整理就可以作为后续对接 Web 可视化前端的数据源。我在原型阶段经常做的一件事是让 AI 在建模完成后把整个场景的物体清单输出成结构化的 JSON 文件里面包含每个物体货架、库位、托盘的名称、区域编码、空间坐标和长宽高。这几乎是免费地得到了数字孪生前端需要的第一版场景数据省掉了我手动去 Blender 里逐个读位置信息的功夫。3.4 MCP 一样有边界别把 MCP 想得太万能。它传递的是指令数据不是语义理解。如果一个仓库布局本身逻辑就有问题AI 不会替你发现材质要精确到 PBR 物理材质效果MCP 也只能做基础的节点设置。所以我在团队里会给这条链路一个定位它是最好的建模执行器但不是方案决策器。方案靠人脑执行靠 AI。4. 智慧仓储场景规划从业务需求到三维拆解4.1 仓库数字孪生需要展示什么在我做的这个项目里关键需求有三块第一呈现仓库的整体空间布局能让客户一眼看出功能分区第二展示货架和库位的密集程度表现仓储容量第三表达周转路径让动线逻辑可视化。这三块对应到三维场景里分别是区块平面布局、货架立体结构、路径与设备模型。面对这类需求最忌讳的就是一上来就捏高精度模型。合理策略是先确定空间比例和分区再搭建基础体量模型最后才增加材质和细节。我在 Blender 里先把平面场地划分成收货区、存储区、拣货区、发货区用不同颜色的地面平面来标识这样后面每一步建模都带着空间逻辑干。4.2 对象清单与建模层级智慧仓储场景的物体清单可以分成三层空间层地面、墙体、大门、区域分界线存储层货架、托盘、周转箱、货物箱设备层AGV、叉车、传送带、扫码门。在给 AI 下指令之前我先在文档里把这个层级写清楚并约定物体命名的前缀规则。比如货架统一叫Rack_AreaA_01托盘叫Pallet_RackA_01_01。这个规则看着很啰嗦但对 MCP 工作流特别重要——因为 AI 靠名字来筛物体、批量修改、导数据名字乱了全乱。4.3 把动线逻辑变成可视化元素一个仓库模型如果没有动线看起来就是一堆箱子的堆叠谈不上智慧。我做动线可视化用的是最直接的方式在 Blender 里创建一条曲线作为路径然后使用一个圆柱体沿路径挤出表示 AGV 的主干行驶路线在拣货区用一组断开的小段线条来代表循环路线。这些路径元素同样纳入 MCP 的建模范围。因为曲线对象的创建和编辑在 Blender Python 接口里属于高频但繁琐的操作手写 API 极易出问题。通过 MCP 工具我只用描述创建一条经过点 A、B、C 的圆弧路径管径 0.1 米AI 就能完成操作。这块省下来的时间至少够我多调三版方案。4.4 我常用的建模提示词模板在和 AI 配合时我发现一个高复用率的指令模板分享出来供参考请在 Blender 场景中完成以下任务 1. 先列出当前场景所有物体确认命名和坐标范围 2. 创建一个平面大小 X 米 x Y 米命名为 XX 3. 循环生成 N 个立方体尺寸为 a x b x c按规律间距排布命名前缀为 XXX 4. 为其中 XX 类物体添加统一材质颜色/金属度/粗糙度 5. 完成后输出一个 JSON 清单包含物体名、坐标、尺寸。这个模板的核心逻辑是先感知、再行动、最后汇总。AI 通过第一步避免盲目执行通过最后一步让我直接拿到有效数据全程可追踪。在实际项目里所有复杂任务我都会拆成这个套路来推进。5. 实操案例用 Antigravity 驱动 Blender 搭建标准仓储区5.1 第一步清场、单位与坐标系准备新场景拿到手第一件事不是建模而是统一环境。我让 AI 做了三件事删除场景默认的立方体和灯光把单位设为米制把视角切换到顶视图把 3D 游标归零到世界原点。这一步通过 MCP 工具很快就完成了。这里有个容易被忽视的点所有后续生成的物体如果位置不在原点附近坐标数据会出现大偏移。数字孪生项目最后要接前端地图坐标系原点不统一后面所有对接全是脏数据。所以我会特意在指令里强调所有物体生成在世界原点附近范围内。5.2 第二步场地与功能分区场地是一个 40 米 x 60 米的仓库平面。我先创建了一个大的矩形平面作为地坪然后在平面上用不同颜色绘制功能分区存储区占中部大面积收货区和发货区分别位于左右两端办公区在角落单独划分出来。我在指令里给了 AI 每个区域四个角的大致坐标并要求它用不同颜色材质一次性生成所有分区平面。整个过程大概持续两分钟如果在 Blender 里手动摆这些平面、改材质、调透明度起码要二十分钟而且非常无聊。5.3 第三步批量货架生成这是最能体现智能体建模效率的一步。需求是这样的存储区里有 10 排货架每排 8 组每组 4 层双面储物。如果手工建模即便用阵列修改器也要花很长时间去调整间距和数量。而通过 MCP我给 AI 描述了一次规则让它用嵌套循环生成。这批货架生成了之后我又通过一次对话让 AI 把所有货架钢结构和层板分离到两个集合中方便后续单独改材质。需要注意的一点是批量生成时AI 偶尔会把某个坐标轴的方向搞反货架排列不够整齐。我的办法是让 AI 生成完先不要做任何后续操作我切换到 Blender 顶视图快速浏览发现哪一排偏移了就直接点出编号让它修正。这比让它一次做完再排查要省事得多。5.4 第四步托盘、货物箱与库位标签有了货架接下来就是往货架上放东西。我让 AI 按照每个货架层板上放置 2 个托盘每个托盘上放 4 箱货物的规则去生成。这一步的难点是 AI 要正确计算每个托盘的世界坐标不能只是堆放而是要和货架层板高度对齐。为了确保对齐我先通过场景列表工具获取了货架全部层板的高度数值然后在指令中直接引用这些数值作为托盘目标高度。因为数字是读回来的不是 AI 猜的所以对齐效果非常可靠。对于库位标签我用了更取巧的方式在每组货架上方创建一个很小的文字对象填入类似A-01-01的编号这样整个仓储场景从视觉上和逻辑上都具备了库位管理的感觉。5.5 第五步材质分层与基础灯光模型全部搭完我开始做整体观感的收敛。仓储场景不需要复杂的材质但需要分区清晰、层次分明。我让 AI 把地面、墙体、货架、托盘、货物分别赋予不同的材质颜色地面偏灰白、货架深灰色、货物用低饱和度颜色区分。灯光方面在顶棚位置增加大面积面光确保没有明显的暗角。这一步之后的渲染预览图已经足够当作方案汇报素材。如果不强调效果基础材质和灯光通过 MCP 操作只需要几分钟如果手动去拉节点、摆灯光怎么也要一小时以上。5.6 上篇复盘这条链路省时间省在哪儿复盘整个搭建过程如果手工建模工作量的分布大概是场地 20%、货架 40%、托盘货物 30%、材质灯光 10%而用 MCP 工作流时间是场地 5 分钟、货架 10 分钟、托盘货物 10 分钟、材质灯光 10 分钟加起来 35 分钟左右。这个数据不足以代表所有场景但足够说明问题批量生成类的劳动AI 的效率和准确性远高于人工。我也遇到了不少坑。比如批量生成时如果场景物体过多Blender 偶尔会出现卡顿MCP 指令执行超时又比如 AI 有时会把托盘识别成板子导致名称混乱。遇到这类问题我的习惯是第一时间让 AI 输出当前场景物体清单定位出问题的对象再单独处理而不是推倒重来。6. 下篇预告从静态模型到可交互的孪生体6.1 数据绑定是数字孪生的分水岭当前这套模型准确说还称不上数字孪生只能算一个静态三维场景。真正的数字孪生需要让场景里的货架、托盘、库位和业务数据联动起来比如库存余量变化时对应货位上的货物箱数量跟着增减AGV 行驶时路径上的指示点高亮移动。这些都需要在模型的基础上做数据通道。我已经在规划下篇的内容重点不放在 Blender 的建模本身而是讲清楚如何把 MCP 生成的场景数据导出成标准 JSON再结合前端三维容器比如 three.js 或者类似的 WebGL 方案实现数据驱动的展示。到这一步模型才算用得起来。6.2 给准备复刻这套流程的读者几点个人体会第一别贪多先把一个货架一个托盘一条路径跑通再扩展全仓第二命名规范从第一秒做起MCP 工作流里名字就是ID第三多利用列出物体这个基础工具让 AI 永远在真实状态下工作第四场景复杂度提升后留意 Blender 的实时响应时间必要时把视口显示切到线框或实体档减轻负载。最后分享一个我最常踩的坑AI 在批量修改后可能会有几个物体遗漏排查这些遗漏最直接的办法就是在 Blender 里点击选择模式中的随机抽选手动检查几个异常坐标的物体。经验多了以后看到异常数字就能立刻定位是哪一组数据。这条链路对我来说最有价值的地方不是省了多少时间而是让我把原本花在重复劳动上的精力真正放回到业务逻辑和交互设计上。下篇继续聊模型数据如何流转到前端到时候见。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进