让AI替你摆场景:BlenderMCP 3D建模从接入到实操
【免费下载链接】blender-mcpCommunity plugin to control Blender 3D with any LLM of your choice项目地址: https://gitcode.com/GitHub_Trending/bl/blender-mcp
凌晨两点,客户突然要求把整个场景的素材换成"做旧金属",顺手再调一下相机。传统流程是打开Blender,逐个节点改参数,渲染一张小图确认效果,再回来改下一批。用BlenderMCP,这一步变成了AI对话框里的一句话:它通过模型上下文协议(Model Context Protocol,MCP)把Blender接进任意大语言模型(LLM)客户端,模型能根据你的文字描述直接在3D视口里创建物体、应用纹理、执行Python脚本,还会把视口截图传回给自己"看一眼"再继续调整。
架构透视:MCP服务器如何经TCP 9876连进Blender
整套系统是一条三跳链路:你的LLM客户端(Claude Desktop、Cursor等)通过标准MCP协议与MCP服务器对话,服务器则是一个普通Python进程,用TCP socket连进Blender内部预先跑着的服务端。
LLM Client <-- MCP --> MCP Server (src/blender_mcp/server.py) <-- JSON over TCP:9876 --> Blender Addon (addon.py)一次请求长这样:{"type": "create_object", "params": {"type": "SPHERE", "name": "Ball"}},Blender执行完回{"status": "success", ...}。在 server.py 里,每条命令经互斥锁串行化,避免两条命令在同一条socket上交错读到对方的响应;接收端设了180秒超时。插件端的 addon.py 则是一个socket服务器,收到JSON后分派给bpy操作再把结果写回。
实操演示:uvx启动MCP服务器的第一次跑通
第一次跑通只需要三件事:装uv、配客户端、在Blender里点一下Connect。
安装uv并配置客户端
先装uv:macOS执行brew install uv,Windows用PowerShell一行脚本,Linux是curl单行。注意不要用pip install uv,它不会创建uvx命令。然后在Claude客户端的配置文件里加一条服务器项,客户端启动时会自己拉起进程,无需手动执行uvx:
{ "mcpServers": { "blender": { "command": "uvx", "args": ["blender-mcp"] } } }在Blender里加载addon.py插件
配完客户端,Blender这边还缺一个"接收端"。把仓库里的addon.py装进Blender:Edit → Preferences → Add-ons → Install… 选择该文件,然后启用"Interface: Blender MCP"。插件要求Blender 3.0以上(4.x/5.x更稳),且必须用正常GUI会话,blender -b后台模式不行,因为socket和视口工具都依赖界面。
点击Connect,让AI看见视口
插件加载完成后,下一步要解决的是建连:在3D视图按N键呼出侧边栏,找到BlenderMCP标签页,可选勾上Poly Haven(启用资产库),点击"Connect to Claude"。连接成功后客户端会出现表示Blender工具已激活的图标,这时就可以输入第一条提示词了。
模块深挖:资源库管线与set_texture的版本分支
所有工具里最值得拆的是Poly Haven这条"搜索→下载→贴图"管线:AI先调search_polyhaven_assets按关键词拿到asset_id,再调download_polyhaven_asset按分辨率下载,最后用set_texture把纹理贴到物体上。参数面很小:
| 参数 | 含义 |
|---|---|
| object_name | Blender中目标物体的名字 |
| texture_id | 搜索返回的资产ID |
| asset_type | 资产类型:hdris / textures / models |
| resolution | 下载分辨率,默认"1k" |
源码里藏着一个细节:addon.py 的set_texture构建着色器节点时会按bpy.app.version >= (4, 0)走分支,因为Blender 4.0删除了ShaderNodeSeparateRGB、改名为ShaderNodeSeparateColor,通道端口名也从'R'/'G'/'B'变成'Red'/'Green'/'Blue'。仓库为此专门配了test_set_texture_version_guard.py做静态校验。Hyper3D Rodin、Hunyuan3D的文生3D和Sketchfab模型检索都是同一套模式:先查status,再调搜索/生成工具,API密钥存在插件偏好里(对应BLENDERMCP_HYPER3D_API_KEY等环境变量)。
避坑指南:连接失败与uvx报错对照表
第一次搭环境的坑大多出在路径和版本上,出现频率高的是这四种:
| 现象 | 原因 | 解法 |
|---|---|---|
客户端报spawn uvx ENOENT | GUI客户端不继承终端PATH | 用which uvx(或where uvx)拿到全路径,写进配置的"command" |
| 第一条命令总是失败 | 连接刚建立时服务端未就绪 | 直接再发一次,通常第二次就通 |
| Apple Silicon报cryptography构建错误 | uvx选到了x86_64的Python | args里加--python 3.11-aarch64强制arm64 |
| 复杂操作超时 | 撞上180秒socket超时 | 把大请求拆成几条小步骤依次下发 |
行动号召:五分钟接完,从第一个提示词开始
BlenderMCP 3D建模把"调参数"的活儿转移到了"写描述"上,换来的是能直接操作场景、能看截图自检的模型。现在要做的只有一件事:装好插件点一次Connect,然后在客户端里输入"Make this car red and metallic",看它怎么改。
【免费下载链接】blender-mcpCommunity plugin to control Blender 3D with any LLM of your choice项目地址: https://gitcode.com/GitHub_Trending/bl/blender-mcp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考