
最近和几个做仓储可视化的朋友聊项目发现大家还在走老路子先在Blender里手动建模再写代码导给前端最后靠人工保证模型和现场数据对得上。这套流程费时间不说改一次货架布局就得重来一遍。我最近一直在用 Antigravity Blender MCP 的组合做3D智慧仓储数字孪生效果完全不一样——你直接告诉AI“把仓库货架从8排改成10排巷道加宽0.5米”AI会亲自操作Blender去改改完还能顺手把场景结构导成JSON给前端用。这篇先把这套组合的原理、环境搭建和第一批实操场景讲透属于整个系列的上篇目标是让你在半小时内跑通“对话建仓”的最小闭环。1. 在开始搭建之前先把Antigravity和Blender MCP的工作方式讲明白1.1 MCP到底是什么为什么它能让AI直接“操作”BlenderMCP全称是Model Context Protocol模型上下文协议。你可以把它理解成一个给AI用的标准USB-C接口以前AI只能和自己聊天窗口里的内容打交道但通过MCP协议AI可以外接文件系统、数据库、浏览器、设计软件等各种工具并且双方遵循同一个通信规范。只要工具方实现了MCP服务端AI客户端就能通过统一协议调用它内部的能力。Blender MCP就是在Blender这一侧实现一个MCP服务端它监听本地端口把AI的文本指令翻译成Blender的Python API调用。链路大概是这样AntigravityAI IDE/客户端里配置了MCP服务器地址你在对话里向Agent发出建模需求Agent识别出需要操作Blender就调用blender_mcp这个工具MCP服务端收到调用后在Blender内部执行bpy命令生成或修改3D对象操作结果再返回给AgentAgent继续下一轮指令。我一开始以为这只是把“人工写Python脚本”变成“AI写Python脚本”而已实际用下来区别很大。过去的模式是你得自己想清楚每个bpy函数怎么写再复制到控制台运行现在的模式是AI自己决定调什么参数、叫哪个函数做错了还会根据Blender返回的错误信息自我修正。这个是质的变化。1.2 为什么选Antigravity而不是其他工具选Antigravity的原因很直接它对MCP的支持做得比较干净Agent会话里能直观看到每次工具调用的输入输出调试方便。你不需要额外同时开一堆终端Agent执行的每一步都有日志。Antigravity本身是Google推出的AI原生开发环境自带Agent能力可以在一个会话里同时访问代码、命令行和执行MCP工具。它的MCP配置入口藏在设置里有的版本叫“MCP连接”有的版本在扩展设置里谷歌浏览器扩展设置中启用「MCP连接」那个开关说的就是这个事。把这个开关打开后添加你本机的MCP服务地址就能用了。1.3 数字孪生场景为什么适合用Blender做底座智慧仓储的数字孪生对3D引擎的诉求其实很明确一方面要有足够的建模自由度能模拟货架、AGV路径、堆垛机轨道这类机械结构另一方面要有干净的数据接口方便把场景结构交给前端网页或Unity做二次开发。Blender刚好两头都占。它免费开源插件生态丰富Python API非常完整几乎所有手工能做的操作都能通过脚本完成。更关键的是它的场景层级设计Collection、Empty、命名规范天然适合数字孪生对“结构化管理”的要求——你建的每一个货架、每一条路径线都不是一串孤立的顶点而是带有名字和层级关系的数据节点。后期导出给three.js或其他引擎时可以按原有层级还原整个场景。这也是为什么我不建议用纯Three.js代码写仓储场景。代码写出来的几何体虽然也能渲染但维护成本极高改一个货架尺寸就得改代码逻辑。而Blender MCP模式下AI直接帮你维护Blender工程文件场景和数据永远都是可编辑的状态。2. 环境搭建从Antigravity启用MCP到Blender MCP握手成功2.1 Antigravity侧启用MCP连接第一步是在Antigravity里把MCP客户端打开。以我用的版本为例在设置Settings页面里找到MCP模型上下文协议相关选项启用MCP连接开关。如果你的Antigravity是通过浏览器扩展方式使用的则去对应的扩展设置中启用“MCP连接”。启用后需要添加一个MCP服务器。Blender MCP默认监听本地WebSocket地址格式通常是 ws://127.0.0.1:9876 。在Antigravity的MCP服务器设置里新增一项名称可以叫“blender”传输协议选WebSocket地址填上面的保存后如果状态显示已连接说明Antigravity这一侧已经就绪。这里有个小经验如果你同时配置了多个MCP服务器注意不要两个服务共用同一端口。Blender MCP如果占用9876那其他MCP工具就换端口不然握手会互相打架。2.2 安装Blender MCP插件并启动服务Blender这一侧需要安装“Blender MCP”这种类型的插件。你先去项目主页下载插件压缩包通常是一个zip文件然后在Blender里操作Edit编辑 → Preferences偏好设置 → Add-ons插件选择Install从磁盘安装找到刚才下载的zip包安装后在插件列表里搜MCP勾选启用。启用成功后Blender的3D视图侧边栏会多出一个MCP面板。这个面板通常有端口配置、启动按钮、日志显示区。保持默认端口9876点击Start Server启动服务。此时Blender会变成一个WebSocket服务器等待AI客户端连接。如果插件启动后立刻报错或者不显示端口监听状态先检查你的Blender版本是否在插件要求的范围内。很多MCP插件现在主要适配Blender 4.x分支Blender 3.6 LTS这种老版本运行起来容易出现Python API不兼容的问题。2.3 端到端验证让AI在Blender里建一个立方体环境装好之后最关键的验证不是看状态灯而是真的让AI动一次Blender。我在Antigravity里新建一个Agent会话输入在Blender中新建一个立方体边长设置为2米命名为Box01放在坐标原点。然后观察Antigravity的执行日志。正常情况下Agent会调用blender_mcp工具Blender视口里会立刻出现一个立方体左下角还能看到bpy操作日志。Antigravity这边会返回类似“已在场景中创建立方体Box01尺寸2m...”的结果。这一步只要跑通整条链路就没问题。后续你在Blender里创建一个“智慧仓储”的Collection或者说“在场景中创建一个名为Warehouse的Collection”AI都能准确执行。2.4 常见的手感问题Agent第一次操作时会乱建对象刚上手最容易遇到的问题不是插件装不上而是AI“太勤快”——你让它建一个地面它顺手给你建了一堆默认物体。这是因为Blender MCP操作时AI可能参考的是它训练数据中通用的Blender初始场景包含相机、灯光、立方体于是它习惯性地保留这些默认对象。我的建议是在Prompt里明确告诉AI“清空场景”或者“使用全新的空场景”推荐指令是在Blender中新建一个通用空场景删除所有默认对象然后创建...。这个习惯从一开始就养成后面做复杂场景时就不会出现文件夹里一堆莫名其妙Box001、Cube003的尴尬局面。3. 把智慧仓储场景拆成AI能执行的任务清单3.1 数字孪生里的仓储场景包含哪些模块在让AI动手之前你自己心里要先有一张“模型清单”。智慧仓储数字孪生落地的模型远不止“一个仓库盒子”这么简单至少包含模块说明建议建模方式地面与柱网仓储楼板、承重柱列提供空间参考平面 圆柱阵列高架货架双排货架、多列多层的货位立方体阵列或阵列修改器巷道与AGV路径通道宽度、地面标线、AGV行走路径平面线条 材质条纹堆垛机轨道立体仓库巷道内的水平/垂直轨道长条立方体 移动轨道托盘与货物标准托盘尺寸可重复放置的货物混合实例化集合标识系统消防区、安全出口、分区编号等文字 平面 材质着色这张表有一个明显作用你可以把每个模块对应的建模指令直接粘贴给AI。比如“用圆柱建立柱网间距5米×5米”AI就知道该用什么基础几何体、怎么设置尺寸。如果不拆模块你的Prompt会变成一句含糊的“帮我建一个仓库”AI只能自由发挥建出来的东西离真实场景十万八千里。3.2 一个可以直接照搬的Prompt模板我在项目里总结了一套给Agent下建模指令的格式核心是“场景结构 尺寸约束 命名规范 层级要求”四要素。举个例子请按以下要求在Blender中搭建一个智慧仓储基础场景新建Collection命名为Warehouse。创建长40米、宽20米的地面平面放在原点。在地面上方创建两排货架左右对称货架单排长30米宽1.2米高3米每排分为8列每列3层货位使用立方体占位。货架距离地面0.15米两排货架之间的巷道宽度设置为2.5米。所有对象命名遵循格式Rack_[排号][列号][层号]。将地面、货架整理到Warehouse_Navigation和Warehouse_Racks两个子Collection中。这套Prompt看起来像需求文档实际上它同时告诉AI“要做什么”以及“做完之后长什么样”。Blender MCP工具能把字符串指令转成bpy命令但它理解不了“好看一点”这种主观描述所以你的约束词越客观越好。3.3 先搭骨架再填细节AI在Blender里建模和人工有一个明显差异AI是一步一步执行的而且倾向于线性地完成你Prompt里的每个要求。如果你一上来就让它“建一个现代化智慧仓储园区”它很可能做了几秒后陷入死循环。正确节奏是第一轮只建地面、柱网、主建筑轮廓第二轮建货架阵列和巷道第三轮补设备、AGV路径、标识系统。这种分轮次的操作还有一个好处每一轮生成的对象都可以在Blender大纲里检查命名和层级发现问题立刻让AI修正而不是等到全部堆积起来后再返工。判断AI建得对不对也很简单在Antigravity会话里继续输入“列出当前Blender场景中所有的Collection和对象”AI就会通过MCP读取场景大纲返回一个结构化列表。这个列表可以直接用来下一轮指令的输入——比如你再指定“将Warehouse_Racks下的所有对象高度整体抬升0.2米”。3.4 用阵列和实例而不是让AI生成几百个独立方块我见过不少新手用Blender MCP时犯一个错误让AI建8列货架AI就真的循环创建64个独立立方体。这样不是不能做但后续做数字孪生时数据量会爆炸前端加载也吃力。正确做法是让AI使用阵列修改器Array Modifier或集合实例化。你可以这么跟AI说创建一个长度为1.2米的单个货位立方体命名为Rack_Cell然后使用阵列修改器按8列、3层的方式复制间距分别为1.5米和1米。这样做的好处是后期你调整货位尺寸只要改Rack_Cell一个对象整组货架跟着变。这个“参数化优先”的思想在数字孪生项目里非常重要。AI通过MCP调用Blender修改器参数能轻松帮你维护这种关联关系。4. 让场景变成“数据”Blender MCP导出JSON和前端对接4.1 数字孪生体不只是模型好看关键是结构化输出如果你只是想在Blender里渲染一张仓储效果图那用不上后面这些内容。但数字孪生项目的交付物通常是一个Web页面three.js、一个Unity程序或者自研可视化引擎它们需要的是“能读取的数据”不是.blend源文件。所以从建模型的第一天起就要考虑场景里每个对象怎么被外部程序识别。Blender里的命名、分组、父子关系最终会映射成前端JSON里的节点路径。你在给AI下指令时反复强调命名规范就是为了让这一步能直接用。最理想的状态是前端拿到一个GLB文件 一份场景结构JSONGLB负责几何渲染JSON负责业务逻辑关联哪个货架对应哪条数据链路。4.2 通过MCP让AI帮你导出场景数据导出操作也可以完全交给AI。在Antigravity会话里输入请将当前Blender场景导出为glTF 2.0格式保存到项目目录下的model/文件夹文件名为warehouse_facility.glb并生成一份scene_structure.json记录所有Collection、对象名称及世界坐标位置。AI收到指令后会通过Blender MCP调用导出逻辑。Blender 4.x原生支持glTF/GLB导出导出参数可以在插件面板里设置。AI一般会先检查场景里的对象是否有未应用的变换如果发现对象旋转或缩放过它会提示你先应用变换。这一点其实很贴心因为手工导出时最容易忘的就是Apply Transform。4.3 三种导出格式怎么选格式适用场景注意事项.blendBlender继续编辑、二次修改不适合直接给前端.glbWeb端three.js直接加载传输体积小二进制格式调试不方便.gltf .bin需要阅读文本资源、调试场景树文件较分散需要静态服务器.json自研引擎或轻量数据解析通常需要自己写导出脚本如果你用的前端框架是three.js我推荐导出GLB但一定要让AI把场景名称、对象名称固化到GLB的节点名里。three.js场景加载后通过scene.getObjectByName(Rack_01_03)就能直接找到对应货架并绑定交互逻辑。4.4 轻量化是智慧仓储场景的生死线一个真实的仓储数字孪生往往包含几千个货位单元格如果每个单元格都带独立网格前端会卡到怀疑人生。我在实际项目里的做法是单元格只做高度占位不导入精细节点相同模型放进一个集合实例导出GLB后自动复用地面/墙体等大面积平面用尽可能少的顶点配合贴图表现细节Agent建完场景后让它执行“统计当前场景顶点数和三角形数”做到心里有数。AI通过MCP完全可以完成这些检查只是你需要在Prompt里显式要求它。比如“请统计当前场景中的面数并告诉我可以作为实例化的对象列表”。这一步做完很多数据隐患都在导出前被消灭了。5. Antigravity Blender MCP 踩坑与排错403、执行中断、更新出错5.1 Antigravity 403和登录异常时的排查顺序刚开始用Antigravity时最大的坑发生在登录和会话建立环节。最常见的是403错误通常发生在以下场景长时间挂着IDE登录态过期切换账号或共享网络环境导致token校验失败系统时间不正确导致认证签名失效。我的排查顺序是先退出当前账号重新登录一次然后检查系统时间是否正确校准最后清理IDE的本地缓存和应用数据重启引擎。如果你是在浏览器扩展环境中启用MCP连接还需要检查扩展权限里是否勾选了允许访问本站域名这一项容易被忽略。注意不要一遇到403就去找各种非官方“旁路”方案那些方案既不安全还可能污染本地环境。官方登录通道卡住时耐心等一段时间再试频繁重试反而容易触发风控。5.2 “agent execution terminated due to error” 到底是谁的锅这个提示看起来像Agent炸了但实际大概率不是Antigravity本身崩溃而是Agent在调用某个MCP工具时出现了超时或异常。根据我踩过的坑按概率排序主要是这几类原因现象常见原因解决办法任务执行到一半就终止Blender MCP服务端连接断开或Blender弹窗阻塞了Python执行回Blender检查插件日志关掉弹窗重新Start Server反复重试某一步无法继续Agent生成的指令里包含了Blender MCP不支持的复杂操作把大任务拆成多轮小指令明确每个步骤工具调用返回空数据MCP端口被占用或协议类型不匹配检查9876端口确认使用的是WebSocket还是Streamable HTTPAgent上下文过长被截断场景对象太多工具返回值过大缩小指令范围增加过滤条件比如只返回选中对象我处理这类问题最管用的一招是先把Prompt拆小。比如“请创建整个仓库”这个任务太大拆成三步执行先“创建地面和柱网”再完成后“创建货架阵列”最后“创建标识和AGV路径”。每完成一步让Agent通过MCP读一次场景统计确认当前状态。这样即使中间断了也不会丢全部进度。5.3 Blender MCP插件不生效、端口被占用怎么办Blender MCP连接不上的时候别急着换插件按以下顺序定位检查Blender侧边栏的MCP面板确认服务是否处于“正在监听”状态如果面板显示端口错误或无法启动换一个端口比如9877并在Antigravity里同步修改MCP服务器地址检查是否有其他程序占用了9876端口在终端里可以用 netstat -ano | findstr 9876Windows或 lsof -i :9876 macOS/Linux确认确认Blender是在前台运行的有些环境里Blender窗口最小化但Python事件循环被挂起导致WebSocket响应缓慢。插件下载的时候也要注意版本匹配。Blender 4.2以上的Python API和3.x系列有不少差异很多Blender MCP插件是在Blender 4.0/4.1上调通的你拿老插件塞给新版Blender大概率报错。遇到版本问题时优先看插件项目的更新记录而不是改Blender配置硬凑。5.4 更新出错的处理策略Antigravity更新出错常见表现是更新后突然打不开、回退到旧版本或者插件失效。我的习惯是正式项目期间不追新版本稳定优先。如果已经出了更新失败的问题先下载完整的离线安装包覆盖安装不要直接点增量更新那个按钮。如果更新后MCP配置全没了那不是Bug是有些版本升级会重置设置。所以我在把MCP连接调通之后会顺手把服务器地址、端口号这些参数记在项目文档里。别嫌麻烦这个动作能帮你省下很多次“配置丢失后的重建时间”。最后说点个人体会这套组合真正让人上瘾的地方不是“AI能建模型”这个结果而是你终于拥有了一个可以通过对话修改场景的桥梁。今天这篇把环境、原理、基础建模、数据导出和常见问题都过了一遍你已经可以完成一个静态的仓储数字孪生底座。但真正的智慧仓储不只是“出了几张3D图”它需要堆垛机调度动画、AGV路径仿真和实时数据接入。这些动态化、数据驱动的内容对Blender MCP的使用深度要求更高我会在系列的下一篇继续拆解。如果你现在正卡在“AI建的场景不符合实际仓储尺寸”这种问题上我的经验是多花十分钟打磨Prompt里的尺寸约束这比事后一样一样改对象高效得多。