三个多月前写了一篇《Antigravity + Blender MCP(上):从零开始用AI控制Blender建模》,当时主要解决了"让AI能连上Blender""能听懂基本建模指令"这两件事。之后很多朋友陆续过来问同一个问题:这些能力除了捏点小模型,到底能干点啥正经事?这期就用一个我最近实际跑通的完整项目来回答——用 Antigravity + Blender MCP 搭建一个 3D 智慧仓储数字孪生场景。
这期是进阶实战,重点讲三件事:怎么把仓储场景里的货架、库位、AGV路径这些元素拆成AI能理解的任务;怎么用自然语言驱动 Antigravity 批量完成建模;以及遇到报错时怎么定位是 Antigravity 的问题还是 Blender MCP 的问题。如果你有基础建模经验,但还没试过"AI协作式"的3D场景搭建,这篇可以直接当操作手册用。
1. 整体思路拆解:为什么数字孪生仓储需要AI协作
1.1 数字孪生仓储到底在"孪生"什么
很多人一听"数字孪生"就下意识想到高精度的三维扫描、逼真的渲染效果,其实仓储场景里最核心的不是"像不像",而是"对不对得上"。一个合格的智慧仓储数字孪生,至少要满足三个层次:
第一层是静态结构还原。仓库长宽高、立柱位置、货架行列、库位编号、装卸口方向,这些物理布局必须在三维场景里一一对应。第二层是动态数据映射。库存数量、AGV当前位置、设备状态、温湿度传感器读数,这些实时数据要能同步到三维模型上,体现在物体颜色、位置、文字标签里。第三层是业务逻辑推演。比如AGV走哪条路径不撞货架、库位分配是否合理、高峰期装卸口会不会拥堵,这些可以通过在孪生场景里做仿真来验证。
传统做法是建模师手工搭场景,再接IoT平台做数据绑定。手工搭一个2000平米的库房,光货架就要摆几百组,体型差异小、重复劳动多、改一版布局等于重来一遍。用 Antigravity + Blender MCP 这套组合,核心变化在于把"手摆"变成了"说"——你只需要把布局规则说清楚,AI 在 Blender 里批量生成立方体、实例化网格、设置层级关系,几分钟就能把重复劳动干完。
1.2 为什么选 Antigravity + Blender MCP 这个组合
市面上的AI建模方案不少,有的走文本生成3D模型的路线,有的走text-to-texture路线,但做智慧仓储数字孪生,真正卡脖子的不是"生成模型的质感",而是"对已有场景的精确控制"。你需要的是:让AI能读现在的Blender场景里有什么、能精确生成指定尺寸和位置的物体、能批量改属性、能执行脚本而不仅仅是聊天。这三个需求恰好是 Antigravity + Blender MCP 的强项。
Antigravity 是亚马逊出的AI编程环境,它不只是一个"能用自然语言写代码"的工具,关键特性是它内置了终端执行能力和 MCP 客户端能力。也就是说,它不只是帮你生成代码,还能把代码真正跑起来,并且通过 MCP 协议跟外部工具通信。Blender MCP 则是社区开源的 MCP 服务端,它把 Blender 的 Python API 封装成了可供AI调用的工具集,包括查询场景、读取物体属性、创建和修改物体、执行Python代码等。两者一接,Antigravity 就相当于长了一双"能操作Blender的手"。
我实际比较过用 Claude Desktop、Cline 接 Blender MCP,结论是 Antigravity 在"多步操作 + 运行结果反馈"这个循环上体验更顺。因为仓储场景的搭建过程不是一个prompt搞定,而是要反复"先查一下现在的布局,再补一排货架,调整间距,重命名物体"这样的多轮修正,Antigravity 的会话上下文和执行反馈衔接得很好。
1.3 标准工作流设计:从需求到三维场景的四步链路
这期项目的完整链路我整理成四步,后面所有实操都是围绕这条链路展开的:
- 拆解需求:把物理仓库的布局信息(尺寸、货架排布、通道宽度、设备点位)整理成结构化的描述,先画一张简单的二维草图,标出原点、朝向、关键坐标。
- AI搭建基础场景:通过 Blender MCP 让 AI 创建地面、墙体、货架、库位标签、AGV路径等基础要素,所有物体按规范命名。
- 数据绑定:给关键物体添加自定义属性(asset_id、location_code等),这是以后对接库存系统、让模型"活起来"的接口。
- 动态验证:用 Antigravity 生成一段模拟数据,驱动 Blender 里的物体发生位移或变色,验证场景的双向映射能力。
这套工作流的好处是每一层都可以单独替换。今天用 Blender 导出给 Three.js 前端,明天换成 Unity 或者 Unreal,只需要改导出环节;今天用 CSV 模拟数据,明天接真实的 WMS 接口,只需要改数据绑定环节。AI工具在这里不是替代建模师,而是把"重复劳动"和"编排逻辑"分离开,让人的精力集中在规则设计和数据验证上。
2. 环境搭建与配置:Antigravity 连接 Blender 的全过程
2.1 Antigravity 端准备和 MCP 配置入口
这一步假设你已经有 Antigravity 的账号并能够正常登录。如果你是新用户,头几次打开会遇到资格检查、账号验证这些环节,多数情况下等它走完流程就行,偶尔会有服务端波动导致的暂时不可用,后面常见问题部分我会专门说。
Antigravity 里配置 MCP 的方式和很多主流 IDE 类似,是在项目根目录维护 MCP 配置文件。我用的版本是在设置面板里找到 MCP 配置项,或者在项目下新建一个.mcp.json文件。文件内容核心是指定 MCP server 的名字、启动命令和参数,我这里配置 Blender MCP 的示例:
{ "mcpServers": { "blender": { "command": "uvx", "args": [ "blender-mcp", "--port=9876", "--blender-executable=C:/Program Files/Blender Foundation/Blender 4.2/blender.exe" ] } } }不同操作系统上 command 可能不一样,Windows 上如果没装 uv/uvx,也可以用 python 直接跑模块:
{ "mcpServers": { "blender": { "command": "python", "args": [ "-m", "blender_mcp", "--port=9876", "--blender-executable=D:/blender/blender.exe" ] } } }配置完后在 Antigravity 的 MCP 面板里能看到 blender 这个 server 处于未连接状态。注意,MCP 服务端显示"未连接"不一定是配置错了,Blender MCP 的逻辑是等 Blender 插件端主动发起连接,所以顺序一定是"先开 Blender 并启动插件,再让 Antigravity 尝试连接"。
2.2 Blender 插件安装与端口连通
Blender 端需要装对应的 MCP 插件。在 Blender 的编辑模式(偏好设置)里,选择"安装插件",指向下载到的 blender_mcp addon 文件,然后启用它。启用之后,插件一般会出现在 3D 视图的右侧工具栏(N 面板),里面有一个"连接到 MCP 服务器"的按钮以及端口设置,默认端口 9876。
点击连接按钮后,Blender 会作为 MCP 客户端向 Antigravity 发起的服务端握手。这一步常见的问题是端口冲突、Blender 版本太旧(推荐 3.6 以上,我测试用的是 4.2 LTS)、还有插件版本和 MCP server 版本不一致。我的建议是到 GitHub 仓库把 addon 和 server 一起更新到最新版本,不要一个用一个旧。
连接成功的标志是:Antigravity 的 MCP 面板里 blender 变成绿色可用,同时 Blender 底部状态栏或控制台会打印出一条类似 "MCP Server connected" 的信息。到这一步,你可以在 Antigravity 对话框里直接问"当前 Blender 场景里有哪些物体",如果它能回答出来,说明整条链路通了。
2.3 连通性验证的两种方法
我每次重装环境后会做两个最小验证,因为直接搭复杂场景一旦出错,很难判断是环境挂了还是指令写错了。
第一个验证是读取场景结构。直接在 Antigravity 里输入:"请列出 Blender 当前场景中的所有物体,按类型分组,并告诉我物体总数。"如果AI能准确给出列表,说明 MCP 的 tool call 链路是通的。
第二个验证是创建一个标记物体并修改位置。输入:"在原点创建一个半径0.5米的圆柱体,命名为 TEST_PROBE,并移动到 X=2,Y=3,Z=1 的位置。"然后去 Blender 里检查,如果没有出现或者位置不对,就要排查 MCP 连接和脚本执行权限。
这两个验证覆盖了 MCP 最底层的三个动作:读场景、建物体、改属性。这三个通了,后面的批量建货架本质上就是这三件事的循环。
3. 核心实操:用自然语言搭建智慧仓储3D场景
3.1 先定坐标系和单位:所有建模的地基
在让 AI 动手之前,有一件事不能省:先和 AI 对齐坐标规范。数字孪生场景最怕各说各话,你脑子里的"右"是X正方向,AI 建的模型放在了你以为的"左",后面全部数据对接都会错位。
我建议的做法是,在 Antigravity 里先给 AI 一段"场景规范"prompt,让它记住这个项目约定。比如:
本项目的坐标规范: - 原点定位:仓库西南角,即最左下角的柱子位置。 - Y轴方向:仓库长度方向,从南到北,总共60米。 - X轴方向:仓库宽度方向,从西到东,总共40米。 - Z轴方向:高度方向,地面为Z=0。 - 单位使用米(Blender默认单位)。 - 物体命名前缀:货架 SHELF_,库位 LOC_,AGV路径 AGV_PATH_,设备 DEV_。这段规范越早给越好,最好放在项目开始时作为第一条消息。Antigravity 的上下文窗口足够长,它会记住这个约定,后续所有生成操作都会遵守。这样做还有个好处:你会得到一个命名规范统一的场景,后面做数据绑定、导出、写查询脚本都轻松得多。
3.2 建立地面和基础建筑结构
第一步先把仓库的"壳"搭出来。我给 AI 的指令就一段话:
请创建智慧仓储数字孪生场景的底面结构: 1. 用平面(Plane)创建仓库地面,尺寸 60x40 米,中心点在 (20, 30, 0),确保物体的位置和尺寸在 Blender 属性面板中精确可查。 2. 用立方体创建四面墙体,墙高 8 米,厚度 0.3 米,分布在仓库四边。 3. 在仓库大门位置(宽 6 米,高 4.5 米,位于南墙中间)留出缺口——这里可以用两个短墙段代替完整的南墙。 4. 地面颜色设为灰色,墙体颜色设为浅灰色,材质命名为 BASE_FLOOR 和 BASE_WALL。AI 会拆解这段需求,然后调用 Blender MCP 的创建物体工具,逐个在 Blender 里生成。这里你能观察到 Blender MCP 一个很棒的设计:它不只是机械执行代码,还会先检查场景里是否已有同名物体,避免重复创建。如果提示"已有同名物体",你可以在指令里加上"先删除现有名为 BASE_* 的物体再重建"。
3.3 批量生成货架和库位:循环逻辑交给AI
仓储场景里工作量最大的就是货架和库位。手工搭 200 个货架至少半天,AI 做这件事的思路是用 Python 循环。我给的指令长这样:
请批量生成仓库货架系统: - 货架区布局:从西到东共 8 排货架,排间距 3 米(通道宽 2.5 米,货架自身宽 0.5 米)。 - 每排纵深方向(从南到北)共 20 组货架,组间距 0.1 米。 - 每组货架尺寸:长 2.4 米,宽 0.5 米,高 2.8 米,分为 4 层(每层高 0.6 米,底部离地 0.2 米)。 - 货架主体用立方体生成,每组货架的 4 根立柱用细长立方体表示,层板用薄立方体表示。 - 每个货架组物体命名为 SHELF_R{排号}_C{列号},例如 SHELF_R01_C12。 - 先删除现有的 SHELF_* 物体,再批量创建。这里有一个值得注意的分工:AI负责写循环和调用Blender API,你负责告诉它"规律是什么"。比如"第几排、第几列怎么编号""间距多少""如何分图层",这些规则属于业务逻辑,AI 不会自己脑补,你必须表述清楚。如果你只说"建一些货架",它大概率给你建一个随便摆的散装货架,完全没法用。
执行完之后,让 AI 汇报结果:"请统计一下当前场景中 SHELF_* 物体的数量,并告诉我最后创建的一个物体坐标。"这既是验收,也是教AI养成"执行完要汇报"的习惯。实际跑下来,8x20 共 160 组货架,AI 大概产生了 160 个组物体,加上每组里若干立柱层板,场景总物体数接近 1000 个,Antigravity 在生成时会自动调小 Blender 的显示精细度,整个过程没有卡死。
3.4 库位标签和库位状态可视化
库位是仓储的"最小管理单元"。每个货架层格都可以理解为一个库位,用物体来表示。这一步我建议用到 Blender 的空物体(Empty) + 文本(Text)组合:空物体定位在库位中心,文本内容显示库位编码。
指令示例:
请为 SHELF_R01_C01 货架的每一层创建库位标记: - 在第1到第4层,每一层的中心位置放置一个空物体(Empty),类型选择 Plain Axes,命名规则 LOC_R01_C01_L1 到 LOC_R01_C01_L4。 - 同时在每个库位中心上方0.3米处,创建一个Text文本对象,内容为该库位编码,字号0.3,字体对齐方式为居中。 - 将空物体和文本对象都放入名为 LOC_LABELS 的集合。这一步做下来,你会看到整个仓库场景里出现了成片带编码的库位标记,视觉上已经有了数字孪生的样子。之所以用空物体而不是立方体,是因为库位本身不占据物理空间,只是一个逻辑位置标记。后面接 WMS 数据时,用空物体的自定义属性存"当前存放SKU""库存数量""状态(满/空/预约)",逻辑非常清晰。
3.5 AGV路径与设备点位:让场景具备"动线逻辑"
仓储数字孪生如果没有动线,就只是模型沙盘。AGV的行走路径需要在三维场景里表达出来,我用的是 Blender 的曲线对象(Curve)。一条从收货区到货架区的 AGV 路径,指令这样写:
请创建AGV主干路径: - 创建一条贝塞尔曲线(Bezier Curve),命名为 AGV_PATH_MAIN_1。 - 路径点按以下坐标依次经过: P1 (3, 5, 0) P2 (3, 25, 0) P3 (18, 25, 0) - 将曲线的细分值设为 12,路径高度保持 Z=0.02(略微离地以防与地面重叠闪烁)。 - 路径颜色设为高亮橙色,材质命名为 AGV_MAIN。曲线建好之后,AI 还可以帮你做一件事:沿路径生成"路径点标记"——每隔一定距离放一个小立方体,代表AGV的导航节点。这些节点将来可以对接路径规划算法的输出,实现AGV位置同步。
设备点位(充电桩、装卸口、分拣台)也可以用同样的逻辑创建。我建议用不同颜色的立方体或圆柱表示不同设备,圆柱高度代表设备高度,并在每个设备上加一个文本标签说明设备类型。到这一步,一个仓储场景的"物理骨架"就算完整了。
3.6 给物体挂"数据属性":数字孪生的接线口
这是整个进阶实战里我认为最有价值的一步。三维建模本身不难,难的是让模型"能对话"。Blender 的物体支持自定义属性(Custom Properties),我们可以把资产编号、库位编码、当前库存数直接挂在物体上。Antigravity 能通过 MCP 给物体加属性,指令如下:
请给所有 LOC_ 开头的空物体添加自定义属性: - 属性名 asset_id:值为物体名称(包含 LOC_ 前缀) - 属性名 location_code:值为物体名称去掉 LOC_ 前缀后的部分 - 属性名 status:初始值 "empty" - 属性名 stock_qty:初始值 0 批量检查当前场景中所有 LOC_* 物体是否都已经有这些属性,如果没有则补齐。这个操作相当于给每个库位安装了一个"数据插座"。之后外部系统更新库存,只需要更新 Blender 物体上的属性值即可。Antigravity 也可以反过来读这些属性——你再问它"R03 排的库位里哪些是满的",它可以通过 MCP 查询得到答案,这就让孪生场景变成了一个"看得见的数据库"。
4. 提示词工程:让 AI 准确执行建模意图
4.1 建模指令的"三明治法则"
我在使用过程中总结了一套给 AI 下发建模任务的指令结构,我叫它"三明治法则":开头明确目标和范围,中间给出精确参数和规则,结尾要求验收和汇报。三段缺一不可。
开头如果含糊,AI 就会自由发挥;中间如果缺少规则,AI 就会默认使用它的常识——但它的常识可能是建一个 2x2 的普通货架,而不是你要的 2.4x0.5 的仓库货架;结尾如果不要求汇报,出了问题你只能自己进 Blender 逐个找。
举一个反例和正例的对比:
反例:"帮我建一些货架。" 正例:"在坐标为 (2, 2) 到 (38, 58) 的矩形区域内,按排间距 3 米、列间距 2.5 米创建 8x20 组货架,每组尺寸长 2.4 米、宽 0.5 米、高 2.8 米,分 4 层,命名规范 SHELF_R排号_C列号,创建完成后统计总数并汇报。"
很明显,正例几乎不需要 AI 做任何"猜测",它只需要忠实执行。所有建模任务,请把参数喂到这种颗粒度。
4.2 几个可直接套用的 Prompt 模板
下面这组模板是我在项目里反复用的,你可以直接替换括号里的内容:
批量修改物体:
请选择所有名称以 [前缀] 开头的物体,将它们的位置整体沿 [X/Y/Z] 轴平移 [数值] 米,并在操作后汇报一共修改了多少个物体。对齐与排列:
请将 [物体列表或筛选条件] 按照 [X/Y/Z] 轴,以 [基准值] 为对齐线进行位置对齐,保持原有间距不变。属性批量同步:
请对所有 [前缀] 物体设置自定义属性 [属性名]=[属性值],然后抽样三个物体,读取它们属性并汇报,以确认设置生效。场景体检:
请扫描当前场景,列出所有命名不规范(不含项目规定前缀)的物体,并按物体类型分类汇总,给出建议的规范命名。4.3 关于"AI自作主张"的纠偏方法
AI 在建模时最常见的自作主张是把尺寸四舍五入。你跟它说间距 2.4 米,它可能给你建一个 2 米的货架,理由是"看起来更协调"。这类问题解决靠两招:第一,在规范里写明"所有尺寸必须精确使用给定数值,不得缩放或取整";第二,如果出错了,在后续指令里明确纠正"将 SHELF_* 物体的 X 方向缩放改为 [计算后的数值],并应用变换(Apply Transform)"。
还有一类问题是 AI 频繁创建新物体而不是复用已有物体。比如你想调整某个货架位置,AI 却新建了一个。这类问题的根治方法是你的指令里带上具体的物体名称:"请移动 SHELF_R01_C01,而不是创建新物体。"一旦你养成"操作必点名"的习惯,AI 的误操作概率会下降很多。
5. 常见问题与排查技巧实录
5.1 Antigravity 侧的报错处理
这里把最近网友问得最多的几个 Antigravity 报错集中说一下。
问题一:Antigravity 更新出错。这个情况我遇到过两三次,多数发生在自动更新下载不完整之后。处理路径是:先重新启动应用让更新流程重跑一遍,如果还不行,去设置里检查更新源状态,或者等待官方同步服务恢复。更新失败一般不影响已安装版本的本地使用,但是如果提示需要重启完成更新,那就先重启,不要一直点"检查更新"。
问题二:提示资格检查失败(eligibility check failed)。这个通常不是你的操作问题,而是账号目前不在服务开放范围内,或服务端尚未将当前账号列入可用名单。处理办法是:确认登录的账号正确,过一段时间再试。这不是本地配置能跳过的,我也没什么绕过的技巧,建议按官方流程等待即可。
问题三:访问界面出现 403。我理解 403 多数情况是服务端对当前账号、当前网络出口的限制性响应,也可能是多设备登录触发了风控。排查顺序是:先确认账号状态正常且只在一个设备登录,然后看官方状态页有没有大面积故障,最后可以换个网络环境再试一次(例如从办公网络切到手机热点,或者反过来)。如果都不行,就等一段时间再回来看。
问题四:agent execution terminated due to error。这个报错意味着 Agent 在执行任务期间被中断了,后面的脚本没有跑完。最常见的诱因是 Python 脚本本身抛了异常(比如引用了不存在的物体名),也可能是执行时间过长被强制中断。解决办法是:回看 Antigravity 会话里的错误日志,把出错的代码段复制出来单独让 AI 修复,而不是直接重跑整个任务。
5.2 Blender MCP 侧的连接与执行问题
问题一:MCP 客户端显示"未连接"。90% 的情况是因为没在 Blender 里点击"连接"按钮,或者端口不一致。正确顺序是:先安装并启用插件,打开 Blender 文件,点连接,然后才去 Antigravity 里刷新 MCP 连接状态。
问题二:AI 能执行指令但看不到场景更新。可能是 Blender 窗口在后台,视图没有及时刷新。MCP 执行脚本和 3D 视图刷新是两个线程,建议给 Blender 装一个自动刷新视图的设置,或者每次执行后让 AI 顺便调用一次视图全部重绘的 Python 命令。
问题三:AI 报错 "bpy.ops.object.add() 无法执行"。这是 Blender 里一个比较经典的坑:在特定上下文里,operator 模式下的操作不被允许。解决办法是让 AI 改为使用 bpy.data 直接创建物体,而不是 bpy.ops。我们建货架批量生成时,bpy.ops.mesh.primitive_cube_add 在循环里可能很慢甚至报错,更稳的写法是用 mesh primitive 参数生成 + bpy.data.objects.new,下面给一段可用的批量创建立方体脚本:
import bpy import bmesh for i in range(10): mesh = bpy.data.meshes.new(f"Box_{i}") bm = bmesh.new() bmesh.ops.create_cube(bm, size=1) bm.to_mesh(mesh) bm.free() obj = bpy.data.objects.new(f"Box_{i}", mesh) obj.location = (i * 2, 0, 0) bpy.context.collection.objects.link(obj)这段脚本用 bmesh 直接构建几何数据,不依赖 operator 执行上下文,在批量场景里速度和稳定性都明显更好。如果你发了需求之后 AI 连续用 operator 实现导致卡顿,直接把这段代码发给 AI 跟它说"用这种模式重建",它马上能理解。
5.3 场景里的"隐形杀手":变换未应用
这是 3D 数字孪生场景里最让人头大的问题之一。AI 创建的物体如果带了非等比缩放(scale 不是 1),后面做位置计算、导出 glTF 到前端渲染时,会出现"模型对不上"的情况。比如前端读取位置坐标发现货架在正确位置,但实际渲染时尺寸大了两倍。
所以在我这个项目的规范里明确加了一条:所有物体的 Scale 必须为 1:1:1,必要时在建模完成后批量 Apply Transform。我在实操中会让 AI 在项目收尾阶段执行一次全局检查:
请检查场景中所有网格物体的 Scale 值,如果某个轴不等于 1,则对该物体执行"应用缩放变换",并列出所有被修正的物体名称。这条指令每次都能揪出一批问题物体。数字孪生项目对接外部系统的核心是数据和空间坐标的精确性,这一步做好了,后面导出和同步基本不会再出幺蛾子。
6. 进阶扩展:从静态场景到动态仿真与数据联动
6.1 让 AGV 动起来:用 Blender 动画系统做轨迹仿真
场景搭建完成后,下一步自然是验证"AGV按路径行走不碰撞"。Blender 自带动画系统,Antigravity 通过 MCP 可以给物体加关键帧。我试过让 AI 给 AGV 模型沿既定曲线路径添加位置关键帧,效果如下:
请为名为 AGV_01 的物体创建移动动画: - 使用空物体 AGV_PATH_MAIN_1 作为运动路径参考。 - 在 0 帧将 AGV_01 放在路径起点 (3, 5, 0),设置关键帧。 - 从第 30 帧开始,每 5 帧沿路径推进 1 个节点,一直到最后节点。 - 设置循环播放,并开启路径动画所需的“跟踪路径”约束。执行之后,你会在 Blender 时间轴里看到 AGV 从收货口移动到货架区的动画。这个动画的意义不只是好看,它本质上是一个"逻辑验证"——你可以肉眼观察 AGV 是否穿过货架、转弯半径是否足够、和对面 AGV 会不会抢道。未来接上真实调度算法输出的坐标序列,这套机制可以直接用来做回放和复盘。
6.2 用模拟数据驱动场景状态变化
我的项目里做了一个小实验:准备一份 CSV 库存模拟数据,字段包括 location_code、sku、qty、status,然后让 Antigravity 写一个 Python 脚本,读取 CSV 并更新 Blender 物体属性,同时根据 status 改变库位空物体的颜色——空库位绿色、满库位红色、预约库位黄色。
这一步跑通之后,场景才真正"孪生"起来了。外部数据库只要产出一份同样的 JSON/CSV,本地 Blender 就是实时状态的可视化终端。如果你做的是给客户看的演示系统,这个效果已经非常接近商业数字孪生平台了。很多正式项目里看到的"大屏可视化",原理跟我这里做的没有本质区别,只是数据源换成真实WMS、前端换成Three.js/Unity、展示终端换成大屏而已。
6.3 场景轻量化与导出规范
Blender 场景物体数量一多(几千个),Ai 操作时视图会变卡,导出给前端时也可能爆显存。我建议按这几条做优化:
- 尽量用实例(Collection Instance):同样的货架组别复制,用 Alt+D 关联复制或者集合实例,而不是每个组都独立生成网格数据。这样文件体积和内存占用会成倍下降。
- LOD 分级:远景货架用简化长方体替代,近景才显示完整层板细节。数字孪生场景通常不需要所有物体都是高模。
- 导出的物体勾选"仅选中项":Antigravity 可以通过 MCP 控制导出选项。导出 glTF/GLB 时,只导出业务需要的物体,一些辅助性 Empty 和曲线可以不导出。
按照这三条,我那个 160 组货架的场景导出 GLB 文件控制在 8MB 左右,前端 Three.js 加载后帧率还能保持在 60fps 附近。
6.4 与前端对接的最后一个建议
如果你准备把 Blender 场景导出给 Three.js 这类 Web 前端,我在不断试错后的参数建议是:导出格式选 glTF 2.0,勾选"应用修改器"和"完美顶点";Y轴向上这个坐标系问题必须在导出时就调整好,Blender 默认 Z 轴向上、Three.js 默认 Y 轴向上,导出器一般会自动转换,但你要在导入前端后抽查一个物体的坐标来确认。
另外,Blender 里 Text 文本对象导出到前端之后往往会变成不可读的几何网格,如果需要前端显示标签,我的做法是在 Blender 里用自定义属性存好文字内容,前端用 CSS2DRenderer 渲染标签,而不是依赖模型自带的半立体文本。
写在最后的几句体会
这个项目从头到尾给我的一个核心感受是:用 Antigravity + Blender MCP 做数字孪生场景,真正花时间的不是操作软件的时间,而是梳理规则的时间。传统建模是"手在忙"——摆货架、调位置、改尺寸;AI协作建模是"嘴在忙、脑在忙"——你得把规则想清楚、说准确,AI 负责执行。规则表达得越清晰,效率提升越恐怖。反过来,如果你心里只有"大概建个仓库"这种模糊想法,AI 给不了你太多帮助。
我自己实际跑下来的体会还有一条:AI 建模工具适合做"确定性强的重复劳动",不适合做"探索性设计"。让 AI 生成八百个风格千奇百怪的艺术装置,它做不到;但让 AI 按 2.4x0.5x2.8 的规格建八百个货架,它只需要半分钟。这个边界想清楚,你就找到了 AI 在 3D 行业里最舒适的位置。
数字孪生这个方向,未来的门槛不在地形地物建模,而在"模型怎么和数据对话"。这也是我在项目里坚持用自定义属性、坚持命名规范、坚持多做一步数据绑定实验的原因。表面看是多花了十分钟,但等到数据真正接进来那一天,你就会庆幸当初没有偷懒。希望这篇实战记录能帮你少走几条弯路。