SuperAPI AI 工具集

blender-core

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

Blender Core 是面向 Blender 5.2 LTS 及以上版本的基础技能,用于让智能体驱动 Blender 完成各类任务。它既可以经由 MCP 实时执行 bpy,也可以在无界面(headless)模式下通过 CLI 运行。

用途与定位 该技能并不直接覆盖所有具体建模、材质、动画等细分任务,而是作为基础层:当任务涉及某个专门领域时,会路由到对应的专项技能。资料中给出的路由表包括:场景单位、集合、命名、链接与资产库 → blender-scene-setup;硬表面建模、倒角、布尔、法线 → blender-hardsurface-modeling;雕刻、多分辨率、重网格 → blender-sculpting;重拓扑、UV 展开、纹素密度 → blender-retopology-uv;PBR 材质、色彩空间、纹理集 → blender-pbr-materials;高模到低模的贴图烘焙(法线、AO、曲率等)→ blender-texture-baking;几何节点与程序化建模 → blender-geometry-nodes;身体绑定、Rigify、权重绘制 → blender-character-rigging;面部绑定、形态键、ARKit、口型 → blender-facial-shapekeys;关键帧、动作、NLA、烘焙、根运动 → blender-animation;面数预算、LOD、绘制调用、清理 → blender-game-optimization;导出 glTF/FBX/USD 到 Roblox、Unity、Unreal、Godot、Web → blender-export-pipelines;Cycles/EEVEE 设置、合成器、批量渲染 → blender-rendering;灯光、HDRI、相机、转台 → blender-lighting-lookdev;布料、刚体、流体、毛发、几何节点物理 → blender-simulation;编写插件/扩展 → blender-addon-development;批量或无界面流程、文件转换 → blender-pipeline-automation;交付前检查网格/资产(始终执行)→ blender-asset-qa;端到端操作手册(道具、角色、Roblox、产品图)→ blender-workflow-recipes。

执行方式 实时模式(blender-mcp execute_blender_code):建议小步执行,只打印需要的信息。调用技能脚本时通过 import 引入,例如将技能脚本目录加入 sys.path 后导入并 reload,再调用其 run。每次 MCP 调用都在全新命名空间中运行,因此每次都要重新 import;由于模块缓存在 sys.modules 中,这样做成本很低,仅在编辑脚本后才需要 reload。 无界面模式(任何具备 shell 的智能体):使用 run_in_blender.py 脚本执行,只输出脚本产生的 JSON(@@JSON@@ 行)。例如传入 --blend、脚本路径以及 -- 之后的参数,或用 --expr 直接执行表达式。其底层形式为 blender -b in.blend --factory-startup --python-exit-code 1 -P x.py -- args。每个脚本都暴露 run(**kw) -> dict,并支持 -- 之后的同样参数。会话中的首次调用建议运行 scripts/env_report.py,它会返回版本、引擎、GPU、插件、单位、色彩管理以及场景计数等信息。

使用规则要点 优先使用数据 API 而非操作符:使用 bpy.data、bmesh、mesh.attributes,以及配合 numpy 的 foreach_get/set。操作符依赖上下文与选择,许多需要 3D 视图,而后台模式并不具备。若操作符不可避免,需用 bpy.context.temp_override 提供必要上下文,并检查结果是否为 {'FINISHED'}。编辑模式下 ob.data 不会更新,应使用 bmesh.from_edit_mesh 与 bmesh.update_edit_mesh,或先切回 OBJECT 模式再读取。节点应按类型查找(如 n.type == "BSDF_PRINCIPLED"),绝不按名称查找,因为名称会被本地化;插槽可用英文名或标识符。枚举取值可通过 T.bl_rna.properties[p].enum_items 读取标识符;动态枚举(render.engine、view_transform、look)上报不全,应在 try/except TypeError 中赋值,异常信息会列出有效值。引擎为 BLENDER_EEVEE、CYCLES、BLENDER_WORKBENCH;Cycles 设备需设置 scene.cycles.device = "GPU" 与偏好中的 compute_device_type。求值数据用 ob.evaluated_get(depsgraph),再 .to_mesh(),之后务必 .to_mesh_clear();修改后读取 matrix_world 前需调用 view_layer.update()。应用或移除修改器、移除对象或 ID 会释放数据,应先收集名称列表,之后绝不再触碰旧的 Python 引用。不要信任默认名称(如 "Cube.001"),应保留对象引用、显式重命名,并通过 bpy.data.objects[name] 查找。比例上 1 单位 = 1 米;倒角、带距离的修改器、绑定、物理、烘焙与导出前应先应用旋转/缩放(transform_apply)。路径方面,bpy.path.abspath("//textures/x.png") 相对于 .blend 解析;应显式保存,备份可用 save_as_mainfile(filepath=..., copy=True)。实时会话属于用户的工作:绝不 read_factory_settings,绝不删除非自己创建的数据,破坏性批量编辑前先保存备份副本。后台使用 GPU 模块需先调用 gpu.init()(5.2+),bgl 已不存在。大体量网格不要逐顶点调用 bpy.ops,应使用 numpy foreach_get。

5.x 的 API 变更 资料列出若干会破坏旧教程或 LLM 记忆的变更:action.fcurves → channelbags;scene.node_tree → scene.compositing_node_group;material.use_nodes 已弃用(新材质已自带节点);mod["Socket_2"] → mod.properties.inputs.Socket_2.value(5.2);BLENDER_EEVEE_NEXT → BLENDER_EEVEE;Boolean FAST → FLOAT;骨骼层 → 骨骼集合;bl_info 插件 → 扩展(blender_manifest.toml);bpy.props 值不再支持字典式访问(scene["cycles"])。完整对照表见 references/api-changes-5x.md。

验证要求 在声称“完成”之前必须验证:报告数字而非形容词,说明三角面数、对象数、材质数、尺寸(ob.dimensions)以及写出的输出文件。几何发生变化时,运行 blender-asset-qa 的 qa_check.py 检查 z-fighting、脱离部件、非流形、翻转法线与缩放。要实际查看:MCP 的 look(mode="angles",着色 material/wireframe);无界面则用 blender-asset-qa/scripts/review_shots.py 渲染联系表。重新读取自己的输出,确认导出文件存在且大小非零。

参考资料 references/api-changes-5x.md 提供 4.x→5.2 迁移表,当代码因 AttributeError/KeyError 失败时加载;references/bpy-patterns.md 提供经过验证的代码片段,涵盖 bmesh、attributes、numpy、temp_override、depsgraph、驱动、append/link、handler 与定时器。