Qoder + Blender MCP:对话建模到网页渲染

6 阅读5分钟

Area9.gif

摘要

在 Qoder 对话里通过 mcp-for-blender 驱动 Blender,用自然语言完成建模、改材质、渲染校验和 GLB 导出,再用 three.js + GSAP 做成可滚动旋转的网页。流程本身不复杂,前提是把 Blender 插件、uvx 和 Qoder MCP 三项配置打通,之后每步脚本都经确认再执行。

流程图

image.png

循环部分对应“改脚本—再执行—再验证”,确认和报错都不会被自动跳过;渲染校验通过后才进入导出和网页环节。

前期配置步骤

1. 安装 Blender

安装官方稳定版 Blender 5.2.1,确认版本一致后再装插件。

2. 安装 uv / uvx

brew install uv
uvx --version

没有 Homebrew 时可用官方脚本:curl -LsSf https://astral.sh/uv/install.sh | sh。记下 which uvx 的输出路径,后面 MCP 配置要用绝对路径(本机为 /opt/homebrew/bin/uvx)。

3. 安装 Blender 插件

从 mcp-for-blender.com 或 GitHub(ahujasid/blender-mcp)获取插件文件 blender_mcp.py,然后在 Blender 中:

  1. 打开 编辑 > 偏好设置 > 插件
  2. 点右上角下拉菜单,选择“从磁盘安装”
  3. 选中 blender_mcp.py,勾选启用 “MCP for Blender”
  4. 插件与服务端都带遥测开关,保持关闭即可(服务端在 mcp.json 里设置)

4. 启动 Blender 侧服务

image.png

在 3D 视图按 N 打开侧栏,切到 “MCP for Blender” 标签页,确认端口为 9876,点击 “Connect to MCP server”。面板显示 Connected on localhost:9876 即表示 Blender 侧已就绪。

5. 配置 Qoder MCP

编辑 ~/.qoder-cn/mcp.json(Windows 路径不同):

{
  "mcpServers": {
    "blender": {
      "command": "/opt/homebrew/bin/uvx",
      "args": ["mcp-for-blender==2.2.7"],
      "env": {
        "BLENDER_MCP_SAFE_MODE": "1",
        "DISABLE_TELEMETRY": "true"
      }
    }
  }
}
  • command 必须是 uvx 的绝对路径,GUI 启动的 Qoder 通常读不到 shell 的 PATH
  • BLENDER_MCP_SAFE_MODE=1 保持开启,脚本执行会受额外限制
  • 版本与插件协议匹配,升级时两边一起看

6. 重载并验证链路

在 Qoder 设置里刷新 MCP 或重启应用,新开一个对话,确认能看到 Blender 相关工具。第一次验证可以让助手读取场景信息或截一张视口图,成功再开始建模。若工具未出现,先检查 9876 端口和 mcp.json 路径,再重载 MCP。

7. 建立项目目录与规则

~/BlenderProjects/
├── AGENTS.md      # 执行审批、安全、备份、命名规则
├── scripts/       # 可复用的 bpy 脚本
├── saves/         # 各阶段 .blend 副本
├── renders/       # 校验渲染图
├── exports/       # 导出的 GLB
└── web/           # 网页与本地预览

AGENTS.md 里至少写清:执行前说明影响、完整脚本等待“确认执行”、报错原样返回、删除按精确名称、破坏性操作先备份、QODER_ 前缀。

8. 准备网页侧

  • GLB 托管:对象存储桶设为公开读,并允许网页域名跨域
  • 页面依赖:three.js 0.169.0、GSAP 3.12.5 走 jsDelivr,锁定版本
  • 本地预览:cd ~/BlenderProjects/web && python3 -m http.server 8123
检查项期望结果
uvx --version正常输出版本号
lsof -i :9876Blender 正在监听
Qoder 工具列表出现 Blender 相关工具
读取场景返回对象列表而不是报错
http://localhost:8123页面能正常打开

操作流程

1. 对话生成模型

image.png

  • 先说清尺寸、颜色、参考图和“只需外观模型”,减少来回改
  • 按机身 → 部件 → 材质 → 灯光相机 → 渲染分阶段推进,每段单独确认
  • 修改直接用自然语言描述,例如“去掉地面”“换成银色”,由助手改脚本
  • 每阶段结束看视口或渲染图,确认无误再继续

2. 脚本审批与执行

  • 执行前先说明目标、影响物体和风险
  • 助手输出完整脚本,用户回复“确认执行”后才通过 MCP 运行一次
  • 报错原样返回,不自动重试、不擅自改代码;修正后再执行
  • 删除对象按精确名称,破坏性操作前先保存副本

3. 验证与导出

image.png

  • 用多个角度渲染检查外形、比例和关键结构
  • 删除只用于渲染的地面、道具等临时物体
  • 只选中模型物体导出 GLB,使用 Y-up,不导出灯光和相机
  • 留意面数和文件大小,控制网页加载成本

4. 网页渲染

image.png

  • three.js 加载 GLB,用环境贴图提供 IBL,金属材质才不会发黑
  • 使用 ACES 色调映射和适度曝光,避免高光死白
  • 预览页加轨道控制器;展示页用 GSAP 滚动驱动旋转与文字动效
  • 最终在浏览器里实际打开检查,不能只看代码

5. 部署与引用

  • GLB 上传对象存储,确保公开读和 CORS;也可内嵌 base64,但页面会明显变大
  • 渲染库走 CDN,避免本地路径在外部站点失效
  • 本地用 HTTP 服务预览;上线后检查模型、脚本和字体等资源的可达性

注意事项

情况注意点
safe mode 拦截脚本os、datetime、nonlocal 等会被拒绝,脚本尽量只用 bpy 和字符串路径
中文界面节点找不到按 bl_idname 查找节点,不要按显示名称
网页里金属发黑或过曝必须补环境光(IBL),并用色调映射压住高光
模型到网页效果变差glTF 只保留 PBR 材质,环境光和灯光要在网页端重建
屏幕、自发光异常程序化材质导出会降级,加载后需要修正材质参数
双击 HTML 打不开ES module 需要 HTTP 服务,不能直接 file:// 打开
外部站点加载失败检查存储桶权限、CORS、CDN 是否可达
Qoder 里看不到 Blender 工具检查 mcp.json 绝对路径和 9876 端口,重载 MCP 后新开对话
误删或覆盖场景执行前备份,按精确对象名删除,不碰非任务物体

相关链接