☰
Antigravity + Blender MCP:自然语言驱动智慧仓储数字孪生实战
2026/9/30 13:45:45 网站建设 项目流程

前阵子我把 Antigravity 和 Blender MCP 串起来,做了一个 3D 智慧仓储数字孪生的初版场景。整套东西第一次跑通的时候,我差点没从椅子上跳起来:一句自然语言指令,Blender 里就铺出了地面、摆上了货架、留好了巷道,整个过程看起来就像有个远程实习生坐在电脑前帮我建模。

先说清楚这套组合是什么。Antigravity 是带 AI 智能体能力的浏览器桌面端,能理解你在页面里想做什么;Blender MCP 则是让 Blender 接入模型上下文协议(Model Context Protocol)的桥接服务。两者一接,AI 就不再只是“嘴皮子选手”,而是真的能调用 Blender 的建模命令,创建物体、修改参数、管理集合、加灯光相机。目标是让自然语言驱动 3D 场景搭建,尤其适合智慧仓储这种需要大量重复性建模和参数调整的数字孪生项目。

这篇是系列上篇,主要解决一个问题:链路怎么建起来。我会按项目设计、环境配置、需求拆解、实操过程、踩坑实录这几个板块展开,适合正在做仓储可视化、想用 AI Agent 替代手工建场的人,也适合对 Blender 了解一点但还没碰过 MCP 的小白。文字比较多,建议挑需要的章节看,但我个人建议至少把“排错实录”那节收藏,因为那些错误你迟早会遇到。

1. 项目定位:Antigravity 和 Blender MCP 在数字孪生里各自扮演什么角色

1.1 一条完整链路是怎么走的

这个项目本质上是一条“自然语言 → AI 理解 → MCP 调用 → Blender 执行 → 场景反馈”的链路,理解这条链路比记住某个按钮位置重要得多。

举个例子。传统的数字孪生建模,是人先在 CAD 或 Blender 里手工画线稿、拉伸成体、阵列复制;或者是人写 Python 脚本,调用 bpy API 批量生成。前者费时,后者对非程序员很不友好。而 Antigravity + Blender MCP 的玩法是,你把需求说成一句话,比如“在坐标(0, 0, 0)处放一个长 2 米、宽 0.8 米、高 1.8 米的货架,并在 x 轴方向阵列 6 个”,Antigravity 会把它拆解成可执行的 MCP 指令,Blender MCP 收到后转成 Blender 的 Python 命令,最终在场景里看到结果。

Antigravity 在这里的角色更像“项目经理”,它负责理解需求、规划步骤、决定调用什么工具。Blender MCP 则是“施工队队长”,它知道 Blender 有哪些命令、参数怎么传、对象怎么管理,把模糊的意图变成精确的建模动作。

整个链路跑通之后,后续换需求会方便得多。仓储布局改了?再补一句“把第 2 排货架整体向右移 0.3 米”就行。这在传统工作流里可能又得重新拖拽半天。

1.2 为什么数字孪生场景特别适合这种模式

智慧仓储数字孪生的核心特点是:大量规则化、参数化、重复性的空间结构。典型仓库里有多少排货架、每排多少个货位、几层高、巷道宽度多少,这些信息在业务数据库里早就定好了,只是需要一个手段快速转成三维。

这种“规则明确、参数密集、重复度高”的场景,正是 AI Agent 最擅长的领域。如果让 AI 自由发挥做艺术创作,效果往往不稳定;但让它按照“6 排 8 列双深货架、巷道宽 2.8 米、离地 0.15 米”这种约束来干活,每一条都是可以被严格校验的参数,AI 的幻觉空间会被压缩到很小。

对比其他建模方式,直接写 bpy 脚本是可行的,但每次改参数都要改代码、跑脚本、看结果,调试成本高。用 Three.js 写前端场景更是另一套技术栈,建模逻辑要和 Web 端打交道,牵扯更多。Antigravity + Blender MCP 把门槛压到了“说人话”就能改模型的层度,对仓储业务人员尤其友好。

当然它也不是万能的。特别细致的材质贴图、复杂的机械动画、物理仿真这类工作,AI 目前还替代不了,需要人工精修。这个判断在项目初期就要想清楚,才不会对工具产生不合理的预期。

1.3 上篇交付范围与下篇留白

这个项目既然是分上下篇,我先把上篇的边界划清楚。上篇要交付的是:

  • Antigravity 和 Blender MCP 的环境搭建、配置、连通。
  • 通过自然语言在 Blender 中生成一个可编辑、分层命名清晰的仓储数字孪生骨架(地面、货架、巷道、基本灯光相机)。
  • 一套可复用的提示词模板,让 AI 后续能按同样规范继续加东西。
  • 常见连接和运行错误的排查清单。

下篇我会继续做动态数据接入,比如用 CSV 或 API 实时刷新货位状态、把 AGV 路径动画做进去、以及导出场景供网页端或游戏引擎继续调用。上篇不做动态,是因为先把静态骨架的稳定性和可复用性打牢,再做动态才不会乱。

2. 环境准备:Antigravity 与 Blender MCP 安装配置全记录

2.1 Blender 版本选择与基础环境要求

Blender 的版本选择我建议直接用当前稳定版即可,我用的是 4.x 系列,3.6 LTS 也能跑通,但 4.x 对 MCP 插件的兼容性更好一些。系统方面 Windows、macOS、Linux 都可以,但 Windows 上要注意防火墙是否拦截本地端口通信,这个问题我在后面排错部分会详细讲。

安装过程里最容易忽视的是 Python 环境。Blender 自带了一个 Python 解释器,跟系统里安装的 Python 是隔离的。Blender MCP 的工作原理是启动一个独立的 MCP 服务器进程,通过 TCP 端口和 Blender 通信,Blender 这边再执行 Python 代码。因此服务器的运行环境需要能访问到 Blender 的 Python 库,如果直接用系统 Python 去启动,很可能会遇到 “ModuleNotFoundError: bpy” 这类问题。

最简单的做法是:先安装系统 Python 3.10+,用 pip 安装 blender-mcp 的依赖,然后启动服务器时指定使用 Blender 自带的 Python 解释器。我实测下来,在命令行启动时用 Blender 安装目录下的 python.exe 来运行 blender-mcp,能避免掉九成以上环境问题。

另外建议打开 Blender 偏好设置里的“插件自动加载”选项,这样每次启动 Blender 时 MCP 插件会自动注册,不用每次手动去启。

2.2 Blender MCP 插件安装与服务器启动

Blender MCP 的社区实现已经比较成熟,安装路径大致是三步。

第一步,安装 MCP 服务器端。在命令行里执行:

pip install blender-mcp

如果你用 uv 管理 Python 工具链,也可以这样:

uv tool run blender-mcp --port 9876

这里 9876 是默认端口,后续在 Antigravity 里配置 MCP Server 时要用同一个端口。端口不是固定不可改的,如果被占用,换一个高位端口即可。

第二步,安装 Blender 插件。打开 Blender,进入“编辑 → 偏好设置 → 插件”,选择“安装插件”,指向 blender-mcp 提供的插件压缩包。安装完成后在插件列表里搜 “Blender MCP”,勾选启用。启用后,插件会在 Blender 侧开一个 Socket Server,等 MCP 客户端从外部连接进来。

第三步,启动 MCP 服务器。在命令行运行:

blender-mcp --port 9876

启动成功后会看到类似 “MCP server running on 127.0.0.1:9876” 的日志。此时注意,这个命令行窗口不要关闭,它是整个链路的关键通道。

2.3 在 Antigravity 侧添加 MCP 服务

Antigravity 本身支持 MCP 客户端配置。打开 Antigravity 的设置界面,找到模型上下文协议或 MCP 相关的配置入口,新增一个服务器配置,选择 “stdio” 或 “http”(根据你的启停方式匹配),命令填:

{ "mcpServers": { "blender": { "command": "blender-mcp", "args": ["--port", "9876"] } } }

如果你的 blender-mcp 可执行文件不在系统 PATH 里,这里要把command改成完整路径,比如C:/Users/xxx/.local/bin/blender-mcp.exe。

配置完成后,在 Antigravity 的对话界面里应该能看到新增的工具列表,里面会出现类似 “create_mesh”“select_object”“modify_object”“list_scene” 这些 Blender 操作工具。看到工具列表,就说明连接成功了。

提示:如果你因为账号资格、产品灰度等原因暂时用不了 Antigravity,可以先换用其他 MCP 客户端(比如 Claude Desktop 或开源的 MCP 调试工具)完成同样的配置。MCP 服务端是通用的,端口一样就行。

2.4 更新出错与资格检查失败的应急处理

Antigravity 相关热词里出现了好几个典型错误,这里先挑两个最常见的集中说,完整排查表放在后面。

一个是启动或使用过程中提示更新出错。这种情况多半是安装包缓存了旧版本,导致校验失败。处理方法很简单:退出 Antigravity 后清理残留缓存,重新下载安装包覆盖安装。注意把本地的 MCP 配置和登录信息单独备份,因为覆盖安装有时会重置配置。

另一个是资格检查失败。Antigravity 的某些能力是按账号和产品阶段开放的,如果提示资格检查失败,说明当前账号还不具备使用某项功能的权限。这种情况不要折腾绕过,直接去官方渠道申请开通,或者换用已开放的客户端配置方式继续开发。从实际项目角度看,MCP 链路的本质是通用的,Android 还是 iOS 只是壳,核心能力不依赖特定外壳。

3. 需求拆解与提示词设计:把仓储布局翻译成三维指令

3.1 从一个实际仓储模型反推布局参数

我在项目里用的参考模型是一个标准中型电商仓库:长 20 米、宽 12 米、高 5 米。货架区布置在仓库中央和两侧,共 3 排货架区,每排有 8 个货位,每个货位 4 层。巷道宽度设定 2.8 米,预留 AGV 通行区 2 米。货架单元的尺寸为长 2 米、宽 0.8 米、层高 1.6 米,底层离地 0.15 米。

这些参数从哪里来?建议直接从仓储运营系统的平面布局图或者数据库表里拿,不要拍脑袋。数字孪生的价值在海量真实参数,如果建模阶段就用虚拟尺寸,后面接业务数据时会全部对不上,返工非常痛苦。

Blender 里的单位默认是米,1 个单位就等于 1 米。所以我们不需要做网格缩放,直接按仓库真实尺寸 1:1 建模,后面导入任何带真实坐标的系统都能对齐。这一点最初很容易忽略,很多人喜欢把仓库缩到很小来“省空间”,结果后续做路径规划、碰撞检测时全乱套。

3.2 提示词模板:给 Antigravity 讲故事而不是喂命令

Antigravity 理解自然语言的能力很强,但想让输出稳定,最好把需求拆成“背景 → 目标 → 步骤边界 → 验收标准”四段式。我用的通用模板如下:

背景:我正在用 Blender 搭建一个 3D 智慧仓储数字孪生场景。 目标:生成一个长 20 米、宽 12 米的地面和编号明确的货架阵列。 步骤边界:只建地面和货架,不要加材质和阴影;所有对象放到 Warehouse 集合下。 验收标准:货架按我给的坐标排列,每个货架独立命名,方便后续修改。

这套模板不是装饰。明确“不要加材质和阴影”能极大减少 AI 的自由发挥空间,缩短单次执行时间;“独立命名”是为后续动态刷新做准备,没有名字的对象在数据对接时就是灾难。

另外我强烈建议在对话一开始就让 Antigravity 读取整个仓库布局说明,而不是一个物体一个物体地下指令。一次性把完整的布局信息给进去,比如货架坐标表、巷道位置、设备摆放区域,AI 能自己规划执行顺序。逐条下指令虽然每一步都更可控,但整体效率低很多,而且容易让 AI 失去“整体感”,导致后期出现物体重叠等低级问题。

3.3 关键参数:尺寸、数量、命名规范

命名规范这块我要多说几句。数字孪生场景里,对象数量动辄几百上千个,如果命名混乱,后续根本没法维护。建议的命名规则是:

  • 地面:Ground_Zone_XX
  • 货架:Shelf_Row_XX_Col_YY_Level_ZZ
  • 巷道:不需要建实体,用空对象或透明平面表示,命名Aisle_XX
  • 设备区:Area_Equipment_XX

在第一次对话时就把命名规则告诉 Antigravity,并要求它严格遵守。后续所有操作都基于这些名字,就不会出现“找不到对象”“选错对象”的问题。

尺寸方面,货架层高 1.6 米这个数要注意,它指的是“层间距”,不是“层板厚度”。如果只给一句话让 AI 建模,AI 很可能把层高理解成层板的厚度,导致货架变成一个立方体堆叠。更稳妥的表述是:“每个货位是一个长 2 米、宽 0.8 米、高 1.6 米的立方体,底部距离地面 0.15 米,4 个立方体在垂直方向等间距排列。”这样描述虽然啰嗦,但能避免歧义。

4. 实操过程:从一句指令到孪生骨架成型

4.1 第一步:清理场景与新建集合

拿到一个默认的新 Blender 场景时,通常有默认立方体、相机和灯光各一个。在数字孪生场景里这些都不是我们想要的,而且默认立方体放在原点会影响后续布局。所以第一条指令是:

删除当前场景中的所有默认对象,包括 Cube、Camera 和 Light; 新建一个集合,命名为 Warehouse; 新建一个子集合,命名为 Structure。

我特意要求 AI 把新建集合作为根集合,后续所有物体都装在 Structure 下面。这么做的好处是之后想整体观察仓库结构,按 Shift 点集合就能快速隐藏或者隔离显示,很方便。

删除默认对象这个操作看起来简单,但执行时要注意 AI 可能把其他后来创建的物体也一起删了。所以我特别避免使用“删除全部对象”这种宽泛措辞,而是限定“删除当前场景中的默认对象”。

4.2 第二步:铺地面、建货架、留巷道

这一节是整个实操的核心,我直接展示我发过的提示词和效果反馈。

地面部分:

创建一个平面,命名为 Ground_Warehouse; 将尺寸设置为 20 米 x 12 米; 位置放在原点(0, 0, 0),确保平面顶面在 Y=0 以上的位置; 生成后看一眼全局坐标确认位置。

这里有个小技巧,Blender 默认创建的平面是在 XY 平面上,中心在原点,厚度为 0。如果仓储地面要表现厚度,可以标注在地面下加一个 0.1 米高的立方体作为地基,否则单平面从侧面看会消失,影响视角理解。

货架部分,我用的指令是:

在 Warehouse 集合下,创建 3 排货架,每排 8 个货位,货位尺寸 2m x 0.8m x 1.6m; 第一排货架从 (1, 1, 0.15) 开始,沿 X 轴正方向排列; 第二排货架从 (6.5, 1, 0.15) 开始; 第三排货架从 (12, 1, 0.15) 开始; 每排货架相邻货位之间留 0.1m 间隙; 每个货位创建时包含 4 层,层与层之间间隔 1.6m; 所有货位对象命名按 Shelf_RowXX_ColYY_LevelZZ 格式。

这段指令发给 Antigravity 后,它能在几十秒内完成 96 个货位的创建。如果手动用 Blender 阵列复制,也不是不行,但之后要独立改每个货位的名字、位置,操作量立马翻倍。

巷道部分我采用了透明占位平面的方式:

创建 3 个透明平面,尺寸 2m x 12m,分别放在货架排之间的空隙处; 命名为 Aisle_1、Aisle_2、Aisle_3; 材质设为透明、线框显示,方便肉眼识别。

透明平面既不影响渲染,又能让 Antigravity 在后续规划路径时“看到”巷道的存在。这在实现 AGV 路径规划时非常有用,AI 能基于这些占位平面理解哪里有路、哪里不能放东西。

4.3 第三步:灯光相机与渲染效果检查

模型建好之后,没有灯光和相机,查看效果会非常吃力。我要求 Antigravity 添加了一个三点光源系统外加一个透视相机。

添加一个区域光,位置在场景左上角,强度 500W,颜色为白色; 添加一个补光,位置在场景右上角,强度 200W; 添加一个相机,从仓库入口方向看向货架区,命名为 Camera_Overview; 设置渲染输出分辨率为 1920x1080。

这些数值需要测试才知道合不合适,不同版本 Blender 的光照强度单位不一样。第一次跑完你可以直接让 Antigravity 渲染一张静帧图,比起在视口里缩放,静帧能更直观地看出货架间距、比例是否正常。

如果你的需求是纯数字孪生数据展示,灯光相机甚至可以不做,直接在 Eevee 渲染引擎里开启环境遮蔽就好了。只是我习惯有一个可复现的观察视角,方便以后向业务方汇报进度。

4.4 引入真实数据动态刷新:上篇能做到什么程度

严格意义上的数字孪生,三维场景只是外壳,核心是让壳里的状态跟随真实系统变化。这个完整闭环我在下篇才会做,但上篇可以通过一个简单 CSV 文件先体验一把联动:

把货位状态表导出为 CSV,内容是货位编号、是否占用、最后更新时间,然后让 Antigravity 读取并修改对应货位物体的颜色属性:

import csv import bpy with open('/path/warehouse_status.csv') as f: reader = csv.DictReader(f) for row in reader: obj_name = row['shelf_id'] status = row['status'] obj = bpy.data.objects.get(obj_name) if obj is not None: obj.color = (0.8, 0.2, 0.2, 1) if status == 'full' else (0.2, 0.8, 0.2, 1)

这段代码可以先让 Antigravity 以 MCP 工具的形式去执行,也可以直接在 Blender 的脚本编辑器里跑。上篇阶段能用 CSV 驱动颜色变化就足够了,代表链路已经通了,真正对接 API 只是换数据源的问题。

5. 踩坑实录:Antigravity 与 Blender MCP 联动中的常见问题

5.1 Antigravity 侧问题速查表

错误现象可能原因处理方法
页面显示 403登录态失效或账号权限不足退出重新登录,确认账号状态;必要时重新安装客户端
资格检查失败当前账号未获得对应功能权限直接走官方申请渠道开通权限,尽量不用非官方方式
更新出错安装包缓存或版本冲突清理缓存后覆盖安装,操作前备份本地 MCP 配置
Agent 执行任务中断MCP 调用超时或 Blender 进程卡死将大任务拆成小步骤逐一执行,检查 Blender 侧是否存在循环卡死
对话中对 Blender 工具不可见MCP 服务未启动或配置错误启动命令行服务器,确认控制台输出正常,检查配置项路径

海豚这里注意一下,Antigravity 毕竟是新产品,版本更新频繁,错误提示的具体文案可能变化。判断问题时优先看日志,而不是死记错误名称,这个思路比任何速查表都重要。

5.2 Blender MCP 连接问题排查

Blender MCP 连接失败是我遇到最多的坑,大致分成三类。

第一类是端口被占用。启动服务器时提示端口占用,先把已有的 blender-mcp 进程结束,或者换一个新端口,比如 9877。换了端口之后,Antigravity 侧的配置也要同步改,否则两边不在同一个通道上。

第二类是 Blender 侧插件没真正挂上。启用了插件但 MCP 服务器连不上时,去 Blender 的控制台看有没有报错。有一个常见错误是 Blender 插件版本和服务器版本不匹配,所以插件和服务器最好用同一个包版本,避免一个来自旧发行渠道、一个来自 PyPI。

第三类是防火墙拦截。Windows 上首次运行 blender-mcp 可能会有弹窗询问是否允许网络访问,如果不小心点了取消,TCP 端口相当于直接被掐断。到“防火墙和网络保护”里把对应程序放行即可。这一点看起来弱智,但我栽过一次,排查了半个小时才发现是防火墙。

5.3 操作习惯层面的人工纠偏

工具链通了之后,真正影响项目体验的是 AI 的“操作习惯”问题。我总结了几条人工纠偏经验。

第一,AI 会过度命名。给它一个“创建货架”的任务,它会把每个面、每条边都建造成独立对象,导致场景对象数爆炸。解决方法是明确写上“合并成单一 Mesh 对象,不要为每个面单独生成对象”。

第二,AI 误用操作符。让它移动对象时,它可能用“变换”命令把整个场景原点的坐标系改了。遇到这种问题,第一时间撤销操作,重新检查 Transform 面板的数值,不要让错误状态污染后续步骤。

第三,重复执行时产生残余物体。第一次生成货架后,第二次再生成时 AI 很容易在原位置再堆一组,旧物体没删。我的习惯是每条指令都附带“先查询现有对象,如有同一个命名规则下的对象,先删除再重建”的边界条件。

第四,也是最重要的:保存版本。每完成一个阶段就让 Antigravity 保存一次 .blend 文件,或者你手动 Ctrl+S。我一般让 Blender 自动保存到备份目录,并让 AI 在关键节点把操作日志打印出来。AI Agent 建模再方便,也取代不了“凡事有备份”这个基本安全底线。

6. 跑通之后的反思:这套工作流的意义和下篇要做什么

把整个链路跑通之后,我最大的感受是:数字孪生的建模门槛被大幅拉低了,但 AI Agent 带来的新问题也值得警惕。

从好的方面说,Antigravity + Blender MCP 让“业务人员直接参与建模”变成了可能。仓储运营人员不需要学 Blender 快捷键,只要会描述仓库布局,AI 就能把平面数据转化为三维场景。这对智慧仓储这种需要快速响应业务变化的场景来说,价值是革命性的。以前改一个货架位置,要建模师手动挪、对齐、附带调整周围关联物体,现在一句话就能完成,而且因为是参数化驱动,后续改数据比手工快一个量级。

从需要警惕的方面说,AI 建模仍然需要强约束。没有明确尺寸边界和命名规范的提示词,会让 AI 自由发挥,生成一堆结构合理但完全不符合业务要求的东西。所以不要把 Antigravity 当傻子,也不要把它当神,把它当刚入职、有天赋但不了解你们仓库规则的实习生,才是正确的使用心态。

回看我这个项目,静态骨架从零到成型大约用了 8 到 10 轮对话,耗时不到半小时。换成手工方式,同样的仓库,从建地面、摆货架、命名、对齐,至少大半天,还容易出错。效率和可复用性是这套方案实实在在的优势。

下篇我计划做两件事:第一,把动态数据接进来,让货位颜色、设备状态跟着实时数据刷新;第二,把场景导出成 glTF 或其他中间格式,再接一个前端数字孪生网站做展示,这样仓储业务方可以在浏览器里看全局状态,而不必所有人都装上 Blender。

最后说一句,如果你今天就要动手,最建议先照着我这篇的方案搭一个最小场景:一个地面、两排货架、一个相机,先跑通再扩展。链路通了,后续所有高级功能才有土壤。不要一上来就追求几十排货架加动画加数据同步,那样只会让你在处理连接问题时毫无头绪。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询