用途
该技能用于在 Blender 5.2+ 中制作“可直接进游戏”的动画:角色或道具需要行走、奔跑、待机等循环动作,或战斗动作、机械/道具动作、相机动画、带约束的物体动画时使用。
主要能力与流程
- 工作流:参考 → 布局(Blocking)→ 拆解(Breakdown)→ 加入样条插值(Splining)→ 精修(Polish)→ 循环验证 → NLA 片段 → 导出。
- 位移动画(Locomotion):行走关键姿态为 Contact、Down、Pass、Up 各两遍,24–32 帧;奔跑为 Contact、Drive、Flight、Recovery,16–24 帧;待机为呼吸、重心转移、眨眼,60–120 帧循环;默认 30fps,需按项目规范确认。动作命名:AN_[Char][Action][Variant]。
- 动画原则:通过间距表现重量、自然肢体弧线、次级动作错位(overlap)、动作前预备(anticipation),夸张程度依风格技能而定。
- 机械动画:优先使用约束,不要依赖骨骼形变;铰链使用 Limit Rotation;活塞使用 Stretch-to 或 Copy Location;齿轮使用驱动器同步旋转;门使用 Empty 枢轴加旋转关键帧。
- 图编辑器:先用 Constant 插值做阶梯关键帧,再改为 Bezier 自动手柄,用加权手柄做加速缓动,复制首尾帧验证循环接缝,最后清理冗余关键帧。
- NLA 与导出:按命名规范创建动作,下推到 NLA 片段,循环动作设为 Repeat,导出时仅激活一个片段,缩放 1.0,非有意不做时间重映射。
- 相机动画:始终使用平滑贝塞尔,避免突变方向,焦距匹配主体尺度,位置噪波修饰器做细微抖动。
- MCP 集成:可通过 MCP 插入关键帧、查询动作名和帧范围、导出前校验骨骼/物体动画数据、设置帧范围,并随骨骼按 export-pipeline 导出。
游戏就绪要求
需要记录根运动方案(原地或根运动);行走/待机/奔跑循环接缝不可见;骨骼不得有缩放关键帧;动画长度匹配引擎状态机;面部动画可放独立动作层;帧率默认 30fps 并与项目确认。
脚本
提供 scripts/turntable.py,创建 360 度循环转台:枢轴 Empty 做线性 Z 旋转,相机父级到枢轴并对准目标,非破坏性(仅加入 COL_Turntable),并设置帧范围。调用方式:
import runpy result = runpy.run_path("<skill_dir>/scripts/turntable.py", init_globals={"ARGS": {...}})["result"]
ARGS:target、frames、lens_mm、elevation_deg、set_active。脚本经官方 Blender MCP 在 Blender 5.2 LTS 测试,使用 execute_blender_code 运行(或参考 blender-mcp-workflow 技能无头运行),参数见脚本头部;用户自行粘贴时应给出带绝对路径与 ARGS 的短 runpy 调用,不要内联或重写脚本。
参考文档
references/walk-cycle.md 用于行走循环拆解,references/combat-animation.md 用于动作游戏战斗节奏。
限制与约束
必须做:为位移动画准备参考视频;先阶梯模式布局再样条;动作使用 AN_ 前缀;导出前测试循环;风格匹配美术方向。不得做:为 Blender 5.2 之前版本写代码或版本回退;有机运动使用线性插值;骨骼缩放关键帧;待机过度动画;未分配动作到 NLA 就导出;跳过根运动记录。