Blender MCP 桥接工具

Blender MCP 桥接工具是一款通过模型上下文协议(MCP)实现AI控制的Blender远程控制工具,支持图像生成3D模型、执行Python脚本和实时场景查询。

  • by MITHRAN-BALACHANDER
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 MITHRAN-BALACHANDER/Blender-MCP-antigravity

使用说明

🎨 搅拌机MCP桥

通过模型上下文协议(MCP)实现AI驱动的搅拌机控制

发送图像以创建具有匹配颜色的3D模型,执行Python脚本,并通过Antigravity或任何兼容MCP的AI客户端远程控制Blender。


✨ 特性

特性 描述
🖼️ 图像到3D 从图像中提取主色,并使用匹配的材料创建3D模型
🐍 脚本执行 通过MCP远程运行任何Blender Python代码
📊 场景查询 获取有关对象、材质和集合的详细信息
⚡ 实时更新 在脚本执行期间接收实时进度状态
🔒 线程安全 具有保证响应和无死锁的稳健架构

🏗️ 建筑

┌─────────────────────┐       MCP/stdio       ┌─────────────────────────┐
│     Antigravity     │◄─────────────────────►│  antigravity_blender_   │
│   (or any MCP AI)   │                       │  server.py              │
└─────────────────────┘                       └───────────┬─────────────┘
                                                          │
                                                          │ TCP Socket
                                                          │ (port 8081)
                                                          ▼
                                              ┌─────────────────────────┐
                                              │   blender_server.py     │
                                              │  (runs inside Blender)  │
                                              └─────────────────────────┘

📦 安装

先决条件

  • Python 3.10+
  • 搅拌机4.2+ (可访问完整路径)
  • 点 (Python包管理器)

快速安装

# Clone the repository
git clone https://github.com/MITHRAN-BALACHANDER/Blender-MCP-antigravity.git
cd Blender-MCP-antigravity

# Create virtual environment (recommended)
python -m venv venv
.\venv\Scripts\activate      # Windows
source venv/bin/activate     # Linux/Mac

# Install dependencies
pip install -r requirements.txt

按包安装(可选)

pip install -e .

🔌 反重力整合

将以下内容添加到您的Antigravity MCP服务器配置中:

选项A:直接路径

{
  "mcpServers": {
    "blender": {
      "command": "python",
      "args": ["C:/path/to/Blender-MCP-antigravity/antigravity_blender_server.py"],
      "env": {}
    }
  }
}

选项B:使用虚拟环境

{
  "mcpServers": {
    "blender": {
      "command": "C:/path/to/Blender-MCP-antigravity/venv/Scripts/python.exe",
      "args": ["C:/path/to/Blender-MCP-antigravity/antigravity_blender_server.py"],
      "env": {}
    }
  }
}

注: 替换 C:/path/to/ 使用您的实际安装路径。


🚀 快速开始

步骤1:启动Blender服务器

# Navigate to project directory
cd Blender-MCP-antigravity

# Start Blender with the socket server
# Windows (use full path if 'blender' is not in PATH)
"C:\Program Files\Blender Foundation\Blender 4.2\blender.exe" --background --python blender_server.py

# Linux/Mac
blender --background --python blender_server.py

预期产量:

==================================================
[BlenderMCP] Server running on 127.0.0.1:8081
[BlenderMCP] Waiting for connections...
==================================================

第二步:连接反重力

Blender运行后,Antigravity将通过MCP配置自动连接。

步骤3:创建3D内容

让Antigravity创建3D内容:

“在Blender中创建低多边形岛屿场景”

“根据此图像创建3D模型”(附图像)


🛠️ MCP工具参考

image_to_3d_model

使用从图像中提取的颜色创建3D模型。

参数 类型 必填 默认 说明
image_data string ✅ - Base64编码图像
model_type string ❌ "cube" 形状: cube, sphere, cylinder
model_name string ❌ "ImageModel" 对象的名称

答复:

{
  "status": "ok",
  "colors": ["#3A7D8C", "#D4C4A0", "#4A6E4A"],
  "object_name": "ImageModel"
}

blender_exec

在Blender中执行Python代码。

参数 类型 必填 说明
script string ✅ 要执行的Python代码

脚本要求:

  • ✅ 定义并调用 main() 功能
  • ✅ 使用 send_status("message") 获取进度更新
  • ✅ 使用 bpy.data.* API(不是 bpy.ops.*)
  • ❌ 无无限循环或阻塞操作

例子:

import bpy

def main():
    send_status("Creating cube...")
    mesh = bpy.data.meshes.new("Cube")
    obj = bpy.data.objects.new("Cube", mesh)
    bpy.context.collection.objects.link(obj)
    
    import bmesh
    bm = bmesh.new()
    bmesh.ops.create_cube(bm, size=2.0)
    bm.to_mesh(mesh)
    bm.free()
    
    send_status("Done!")

main()

get_blender_scene

查询当前Blender场景。

答复:

{
  "objects": [
    {"name": "Cube", "type": "MESH"},
    {"name": "Camera", "type": "CAMERA"}
  ],
  "meshes": ["Cube"],
  "materials": ["Material"],
  "collections": ["Collection"]
}

📁 项目结构

Blender-MCP-antigravity/
├── antigravity_blender_server.py   # MCP server (AI client interface)
├── blender_server.py               # TCP server (runs in Blender)
├── antigravity_blender_addon.py    # Blender UI addon (optional)
├── run_via_bridge.py               # Standalone script runner
├── generate_island.py              # Example: procedural island
├── create_island_from_image.py     # Example: island from reference
├── requirements.txt                # Dependencies
├── pyproject.toml                  # Package config
└── README.md

🔧 故障排除

连接被拒绝

# Ensure Blender is running with the server
"C:\Program Files\Blender Foundation\Blender 4.2\blender.exe" --background --python blender_server.py

# Check if port 8081 is in use
netstat -an | findstr 8081   # Windows
lsof -i :8081                # Linux/Mac

超时错误

  1. 检查Blender的控制台是否存在Python错误
  2. 确保 main() 在脚本末尾调用
  3. 添加 send_status() 需要长期操作
  4. 避免阻塞呼叫或无限循环

端口已在使用中

# Kill existing Blender processes
taskkill /F /IM blender.exe     # Windows
pkill blender                    # Linux/Mac

🎯 例子

运行岛屿发电机

# Activate venv first
.\venv\Scripts\activate

# Run example script
python run_via_bridge.py generate_island.py

交互模式(查看输出)

# Start Blender with GUI
"C:\Program Files\Blender Foundation\Blender 4.2\blender.exe" --python blender_server.py

# Then run scripts via bridge
python run_via_bridge.py your_script.py

🤝 贡献

欢迎投稿!

  1. 克隆该仓库
  2. 创建要素分支: git checkout -b feature/amazing-feature
  3. 提交更改: git commit -m 'Add amazing feature'
  4. 推: git push origin feature/amazing-feature
  5. 打开拉取请求

📄 许可证

MIT许可证-请参阅 许可证 了解详情。


🔗 链接


Made with Mithran Balachander