用自然语言控制 Blender:开源项目 Blender MCP 深度介绍

29 阅读7分钟

在 3D 创作领域,Blender 一直是免费且功能强大的工具。但传统使用方式仍高度依赖手动操作和 Python 脚本编写。近年来,随着大模型能力提升,以及 Model Context Protocol(MCP)这类标准化协议的出现,一种新的交互方式开始涌现:直接用自然语言驱动 Blender。

Blender MCP(GitHub 仓库:github.com/ahujasid/bl…)正是这一方向的代表性项目。它通过 MCP 协议,将 Blender 与支持该协议的各类 LLM 客户端(Claude Desktop、Cursor、VS Code、Codex 等)连接起来,实现实时、双向的场景操控。

截至目前,该仓库已获得超过 2.8 万 Star,Fork 数也超过 2600,社区活跃度较高,并且仍在持续迭代。

项目定位与核心价值

Blender MCP 的目标很明确:让用户通过自然语言完成 Prompt-assisted 的 3D 建模、场景创建与操作

它不是简单地把文本转成图片再导入,而是真正在运行中的 Blender 实例里执行操作——创建物体、调整材质、查询场景状态、执行任意 Python 代码,甚至拉取外部资产或调用 AI 生成模型。

这种能力对以下人群尤其有实际意义:

  • 需要快速验证想法的设计师或产品经理
  • 不擅长或不愿写大量脚本的创作者
  • 希望把 AI 能力融入现有 Blender 工作流的人
  • 学习 3D 的初学者,想用对话方式降低上手门槛

项目采用 MIT 协议,属于第三方社区开发(非 Blender 官方),这一点在 README 中也有明确声明。

技术架构简述

整个系统由两个核心组件构成:

  1. Blender 插件addon.py
    运行在 Blender 内部,创建一个基于 socket 的服务器。它负责接收指令、执行对应操作,并返回结果。插件会在 Blender 的 3D 视图侧边栏提供一个「MCP for Blender」面板,方便启动/停止服务。

  2. MCP Server(Python 实现,位于 src/blender_mcp
    作为中间层,对接各种 MCP 客户端。客户端通过标准输入输出与 MCP Server 通信,MCP Server 再通过 socket 与 Blender 插件交互。

这种设计带来几个好处:

  • 客户端可以是任意支持 MCP 的工具,不绑定特定模型
  • Blender 本身保持相对独立,插件只负责执行
  • 支持 Docker 方式运行 MCP Server(Blender 仍在本机运行)

通信是双向的:AI 不仅可以下指令,还可以查询当前场景信息,再根据反馈继续操作。这比单向“生成结果”的模式更接近真实协作。

主要功能一览

项目目前支持的能力可以归纳为以下几类:

基础操作

  • 创建、修改、删除 3D 物体
  • 调整位置、旋转、缩放等变换
  • 材质创建与颜色/属性修改
  • 场景信息查询(物体列表、位置、属性等)

高级能力

  • 在 Blender 中直接执行任意 Python 代码
  • 从 Poly Haven 获取资产与 HDRI
  • 从 Sketchfab、Poly Pizza 获取模型
  • 通过 Hyper3D Rodin、Hunyuan3D 等生成 AI 3D 模型
  • 场景导出相关功能(近期更新中持续完善)

其他特性

  • 支持安全模式(Safe Mode),限制部分高风险操作
  • 提供 host/port 配置,方便网络环境调整
  • 支持节点与 API 内省等更深入的调试能力(近期 PR 中可见)

这些功能覆盖了从简单原型到中等复杂度场景的常见需求。复杂动画、高级绑定或重度几何节点工作流目前仍更适合传统方式,但基础到中级的建模与场景搭建已经可以大量借助自然语言完成。

安装与配置详解

环境要求

  • Blender 3.0 或更高版本
  • Python 3.10+
  • uv 包管理器(强烈建议使用官方安装脚本,而不是 pip install uv

1. 安装 uv

# macOS
brew install uv

# Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

安装后请确保 uvx 命令在 PATH 中可用。如果客户端是从图形界面启动的(如 Claude Desktop、Cursor),有时会找不到 uvx,此时需要使用绝对路径,或在 Windows 上用 cmd /c uvx ... 的方式包装。

2. 配置 MCP 客户端

以 Claude Desktop 为例,在配置文件中加入:

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

为了避免 Python 版本冲突(尤其是 conda/pyenv 环境),可以显式指定:

{
  "mcpServers": {
    "blender": {
      "command": "uvx",
      "args": ["--python", "3.11", "blender-mcp"],
      "env": {
        "UV_PYTHON_PREFERENCE": "only-managed"
      }
    }
  }
}

其他客户端(Cursor、VS Code、Claude Code、Codex 等)的配置方式在项目 README 中有详细说明,基本模式类似。

3. 安装 Blender 插件

uvx blender-mcp install-addon

安装完成后,打开 Blender → Edit → Preferences → Add-ons,搜索并启用 Interface: MCP for Blender

4. 启动服务

在 3D 视图中按 N 打开侧边栏,切换到 MCP for Blender 标签页,点击 Start MCP Server。状态变为运行后,即可在对应的 MCP 客户端中开始对话。

注意事项

  • 同一时间建议只运行一个 MCP 客户端实例,避免冲突。
  • 如果使用 Docker 运行 MCP Server,需要正确配置网络,让容器能访问本机 Blender(macOS/Windows 可用 host.docker.internal,Linux 通常需要 --network=host)。

使用示例与工作流建议

连接成功后,可以直接用自然语言描述需求。以下是一些实际可尝试的指令方向:

基础场景搭建

  • “创建一个简单的室内场景:地板、四面墙、一扇窗户,并放一张桌子和两把椅子”
  • “在桌子上放一个茶杯和一本书,调整合理的比例”

材质与灯光

  • “给桌子添加木质材质,椅子用深灰色织物,并加一盏柔和的顶部灯光”
  • “把窗户位置的光线调亮一些,模拟白天效果”

查询与迭代

  • “先告诉我当前场景里有哪些物体,以及它们的位置”
  • “根据刚才的信息,把椅子往右移动 0.5 个单位,并旋转 15 度”

代码执行

  • “给选中的物体添加一个 Subdivision Surface 修改器,级别设为 2”
  • “用 Python 清空场景中所有非相机和灯光的物体”

资产与生成

  • “从 Poly Haven 下载一个室内 HDRI 并应用到世界环境”
  • “尝试用 AI 生成一个低多边形风格的科幻椅子模型”

实际使用中比较高效的工作流通常是:

  1. 先让 AI 查询当前场景状态
  2. 基于反馈下发精确指令
  3. 小步迭代,而不是一次性描述非常复杂的场景
  4. 对关键步骤保留手动调整空间

这种方式能显著减少反复试错的时间,尤其适合原型验证阶段。

当前限制与使用注意点

任何工具都有边界,Blender MCP 也不例外:

  • 复杂绑定、高级动画曲线、重度几何节点网络目前仍更适合手动或脚本方式
  • 执行任意 Python 代码的能力很强,但也意味着需要一定的安全意识(项目提供了 Safe Mode)
  • 网络环境、防火墙、客户端 PATH 问题是常见安装卡点
  • AI 对 3D 空间关系的理解仍可能出现偏差,需要人工确认结果

项目在持续完善这些方面,近期更新包括 host/port 配置、节点 introspect、场景导出等功能,说明开发仍在活跃推进。

社区与后续发展

仓库维护活跃,有 Discord 社区可供交流,也有赞助渠道。README 中提供了完整教程视频链接,遇到安装或使用问题可以先参考官方文档和社区讨论。

如果你已经在使用 Blender,并希望尝试把自然语言交互引入工作流,这个项目提供了一个相对成熟的入口。直接安装体验,比单纯看介绍更能感受到实际差异。

相关链接

希望这篇介绍能帮助你更全面地了解 Blender MCP 的能力与使用方式。如果实际使用中有有趣的发现或踩坑经验,欢迎在评论区分享。