图像与设计
用自然语言驱动 Blender 完成 3D…
当用户用自然语言提出任何 3D 创作、修改、打光、渲染、动画或导出需求时,通过 Blender MCP 把请求转成 Blender Python 代码并链式调用子技能执行。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用自然语言驱动 Blender 完成 3特定
解决思路
- 先检查前置条件:调用 mcp__blender__get_scene_info,若报错 'Could not connect to Blender',提示用户启动 Blender 并启用 BlenderMCP 插件(默认端口 9876),然后停止等待用户修复。
- 判断场景状态:空场景则从基础几何体新建;已有对象则在其上操作,除非用户要求否则不要删除;只有默认立方体时可安全执行 bpy.ops.object.delete()。
- 若用户请求含糊,只问一个问题澄清;否则用合理默认值继续。
- 识别意图:判断需要哪些能力(建模、材质、灯光、渲染、导出等)。
- 在生成 Python 之前,先查阅 references/common-object-dimensions.md 获取真实世界尺寸(如单手剑约 95-100cm、椅子座面约 45cm×45cm×4cm、瓶子 25-30cm 高),不要凭猜测建模。
- 每次构建场景前先重置 world 到中性基线,防止上次残留的损坏 HDRI / Environment Texture 节点(image=None)导致渲染泛紫:清空 world 节点树,新建 ShaderNodeOutputWorld 与 ShaderNodeBackground,设置 color=(0.04,0.04,0.05,1.0)、strength=0.4 并连接。若用户要 HDRI 光照,在此之后加载实际 .hdr 文件并确认 env.image is not None。
- 按意图路由表通过 Read 加载对应子技能 SKILL.md 并遵循其模式:建模→blender-modeling;线框转 3D→wireframe-to-3d;材质→blender-materials;灯光→blender-lighting;相机/景深→blender-cameras;渲染→blender-rendering;动画→blender-animation;导出 glTF/FBX/OBJ→blender-export;生产级场景→blender-pro-workflow;用户是新手→blender-pro-workflow;输出不达标/反复出错→quality-refinement-autoloop 再 blender-skill-harmonizer;需严格匹配模板/线框/贴图→blender-skill-harmonizer 再对应适配技能。多意图时按顺序链式加载多个子技能。
- 复杂任务(尤其涉及参考/模板/品牌)在决定执行顺序前先加载 blender-skill-harmonizer,由它负责优先级、交接产物与冲突策略。
- 若用户否定输出、说同一问题反复出现、或要求先改进技能栈再重试,先加载 quality-refinement-autoloop,把证据转成可复用的净化经验,在明确要求时修补通用技能/文档/版本,然后再恢复 Blender 修复循环。
- 按专业装配顺序执行:1) 参考+规划;2) Block-out(基础几何体+相机+构图,最易迭代);3) 锁定相机(选焦距、构图);4) 灯光 v1(三点布光 key/fill/rim,先于材质);5) 精修几何体;6) 材质 v1(先平色,校准明度);7) 灯光 v2(颜色+比例);8) 细节阶段;9) 最终渲染(生产采样+降噪);10) 合成(调色、眩光、暗角);11) 导出。
- 通过 mcp__blender__execute_blender_code 执行生成的 Python,遵守代码执行规则:每次调用是全新命名空间,只有 bpy 预导入,需重新 import math/bmesh/numpy 等;用稳定名称(如 bpy.data.objects['GEO-sword'])而非 Python 变量标识对象;每段代码末尾用 print 输出结构化结果(对象名、顶点数、文件路径);分块执行(每次约 5-20 行,单次超时 180 秒)。
- 使用 Blender Studio 命名约定:GEO-(几何体)、MAT-(材质)、LGT-(灯光)、CAM-(相机)、ARM-(骨架)、COL-(集合)、WGT-(骨骼形状),左右用 .L/.R 后缀,如 GEO-sword_blade、MAT-steel_brushed、LGT-key,绝不留下 Cube.027 这类默认名。
- 每次操作使用标准骨架:import bpy → 按名称获取或创建对象 → 执行工作 → print 报告结果。
- 用 mcp__blender__get_scene_info、get_object_info 和 get_viewport_screenshot 做验证;仅数值验证不够,API 可能报告成功但几何体严重错误。
- 渲染后必须做视觉验证:调用 get_viewport_screenshot 或用 Read 读取渲染文件,检查主体可见可辨识(非细条、非泛紫、非全黑)、比例符合真实尺寸参考、构图合理(主体在画面内、未被裁切、非角落微小)、材质有可见变化(非完全平坦的塑料感,生产级场景需加程序化纹理节点)。若明显错误,不要报告成功,定位具体问题、修复、重渲染、再检查。
- 报告成功前用 Bash 执行 ls -la /path/to/output 确认渲染/导出文件确实存在。
- 场景装配完成后、报告前,把视口切换到 Material Preview 模式,让用户看到材质:遍历 bpy.context.screen.areas,对 VIEW_3D 区域设置 space.shading.type='MATERIAL'(或 'RENDERED' 全质量)、use_scene_lights=True、use_scene_world=True。仅当用户明确要求不要动视口时跳过。
- 按失败模式表处理常见问题:MCP 超时→拆分更小块;代码执行错误→读错误修那一行重试;下个调用找不到对象→用了 Python 变量而非 bpy.data.objects['name'];渲染太久→降采样、开自适应采样、降分辨率;文件不在预期路径→用绝对路径并 Bash ls 验证;导出后材质异常→用了非 Principled BSDF 节点,用纯 Principled 重建;'Action' object has no attribute 'fcurves'→Blender 5.x 分层 Action,遍历 action.layers[].strips[].channelbags[].fcurves;BLENDER_EEVEE_NEXT 被拒→Blender 5.x 改回 BLENDER_EEVEE,用 try/except 回退;KeyError: 'Subsurface IOR' 等→Blender 5.x 部分 BSDF 输入 enabled=False,用迭代而非字符串键访问;'Cannot render, no camera'→scene.camera is None,渲染前运行 ensure_camera() 守卫;用户说视口灰/看不到材质→视口默认 Solid 模式,渲染正确,切换 Material Preview;材质平坦无纹理→加程序化纹理(Noise/Voronoi→ColorRamp→Roughness 或 Bump);比例错误→跳过了尺寸查询,建模前必读 references/common-object-dimensions.md;用户要人/角色/脸→纯基础几何体只能出轮廓,建议用 download_polyhaven_asset/download_sketchfab_model/generate_hyper3d_model_via_text 获取人体基础网格,或委托角色艺术家,不要假装球体加特征像人;细长物体渲染成细杆→相机对着细轴,旋转物体让宽轴朝向相机;刀尖呈凿平状→顶部顶点缩放未合并,需塌陷到中线并 remove_doubles;彩色玻璃渲染成平坦/金属感→只在 Base Color 上色,需用 Volume Absorption 做深度着色,Roughness 用 0.02-0.05 而非 0.0;玻璃内部发黑→transmission_bounces 太低,设为 24。
- 按需加载更深参考:references/assembly-order.md(多步流水线规划或用户问正确顺序时)、references/intent-routing.md(请求含糊需消歧时)、references/code-execution-rules.md(排查执行错误时)。
- 向用户具体报告:创建的对象+面数、灯光+角色、渲染文件路径+大小+尺寸+渲染时间、警告(自动减面、命名冲突、回退材质等)。
适用边界 · 注意事项
- 需要重型自定义 GPU 工作或自己写渲染引擎(应使用 Blender 现有引擎)
- 实时游戏逻辑(应直接用 Unity/Unreal)
- 用自然语言做雕刻笔触(雕刻是手势性的,需交互式用笔刷)
- 超出 Blender 能力范围的任务:CAD 精密建模(用 FreeCAD)、CFD 仿真(Blender 的 Mantaflow 仅适合 VFX 质量,不适合工程)