| name | blender-motion-state-inspection |
| description | 在检查 Blender 角色、装备、姿势、动画重定向、地面接触、朝向或模型与运动对齐时使用此技能,其中仅屏幕截图是不够的。 |
| origin | ECC |
| tools | Read, Write, Edit, Bash, Grep, Glob |
Blender 运动状态检查
何时使用
- Blender 角色在动画中看起来扭曲、镜像、扁平、偏移或脚滑动。
- 用户询问导入的化身、装备或重定向运动是否匹配预期的姿势。
- 您需要将渲染证据与结构化事实(如骨骼、边界框、接触和朝向向量)进行比较。
- 工作流程取决于确定模型是角色、道具、代理网格、控制装备还是损坏的导入。
核心原则
不要仅从屏幕截图判断动画 3D 资产。屏幕截图是审查证据,但它们隐藏轴约定、骨骼名称、对象比例、局部变换、父网格、材质槽和逐帧接触状态。
首先提取结构化 Blender 状态,然后使用视口屏幕截图或渲染来确认事实所暗示的内容。
工作原理
- 在判断运动之前建立干净的场景和资产基线。
- 使用导出器或 Blender Python 在 Blender 自己的解释器中运行,从 Blender 提取结构化事实。
- 采样最可能暴露接触、方向、比例和重定向错误的帧。
- 将测量的事实与用户预期的姿势、方向、地平面和渲染目标进行比较。
- 返回简明报告,分离已确认的事实、可能的原因和所需的修复。
检查工作流程
-
清单场景。
- 列出网格、装备、空对象、相机、灯光、修饰器、父子关系和隐藏对象。
- 在判断化身之前将角色网格与辅助/代理几何分开。
- 记录对象空间和世界空间边界框。
-
识别骨架。
- 捕获装备名称、姿势骨骼、骨骼头/尾、滚动、父链、约束和休息姿势轴。
- 映射语义骨骼,如臀部、脊柱、颈部、头部、肩部、肘部、手、大腿、膝盖、踝部和脚。
- 标记缺失的左/右对和不寻常的命名方案。
-
确定前向、向上和侧轴。
- 一起使用骨盆、脊柱、肩部、臀部、头部和脚;不要依赖单个网格法线。
- 比较局部装备轴与世界轴和导入文件约定,如 glTF Y-up 与 Blender Z-up。
- 当面部/头部/脚方向与根运动冲突时,标记可能的镜像或向后导入。
-
采样动画帧。
- 检查第一、中间、接触、悬空和极端帧。
- 记录根位置、根航向、骨盆高度、躯干倾斜、肢体方向、脚间隙和网格边界。
- 对于长或快的运动,在翻转、着陆、转身、碰撞和地板接触周围更密集地采样。
-
在重定向归咎之前检查模型完整性。
- 在应用动画之前确认干净的基线形状。
- 保留原始网格、材质、装备和蒙皮,除非用户明确要求修复。
- 将无法解释的球状斑点、巨大的代理网格或压碎的尸体视为导入/选择问题,直到证明相反。
-
诊断接触和运动问题。
- 地面穿透:每帧比较最低脚或鞋顶点与地板高度。
- 脚滑动:在种植帧之间比较脚世界位置。
- 腿交叉:比较左/右大腿、膝盖、踝部和脚的侧排序。
- 扭转损坏:分别将骨骼摆动方向与肢体轴周围的滚动/扭转进行比较。
- 比例漂移:将动画网格边界与干净的基线边界进行比较。
-
在观点之前报告事实。
- 包括帧号、对象名称、骨骼名称、世界坐标和阈值。
- 将已确认的失败与视觉怀疑分开。
- 仅在结构化状态解释要查找的内容之后附加屏幕截图。
推荐的报告形状
## Blender 运动检查
### 场景清单
- 角色候选者:
- 装备:
- 辅助/代理对象:
- 相机/灯光:
### 方向
- 世界向上:
- 角色前向:
- 根航向:
- 镜像/向后风险:
### 基线完整性
- 干净网格边界:
- 动画网格边界:
- 材质/蒙皮保留:
- 可疑的非角色网格:
### 帧发现
| 帧 | 发现 | 证据 |
| --- | --- | --- |
| 1 | 干净的基线姿势 | 臀部/脊柱/脚对齐 |
| 96 | 脚穿透地板 | left_foot min_z = -0.04 |
### 判定
- 通过/失败:
- 所需修复:
- 渲染就绪:
示例
带脚滑动的步行循环
场景:重定向的角色在步行循环期间似乎在滑动,但前相机角度使脚接触难以判断。
应用工作流程:
- 清单场景:角色网格
HeroBody、装备 HeroRig、地平面 Floor、无隐藏的代理网格。
- 识别骨架:语义脚是
foot.L 和 foot.R;臀部是 pelvis;根骨骼是 root。
- 采样动画帧:检查种植脚时刻周围的帧 1、18、24、30、42 和 48。
- 诊断接触和运动问题:在种植帧期间比较世界空间脚位置。
提取的事实:
| 帧 | 事实 | 证据 |
|---|
| 18 | 左脚已种植 | foot.L min_z = 0.004,脚趾和脚跟都靠近地板 |
| 24 | 左脚在种植时滑动 | foot.L x = 0.21 -> 0.28 超过六帧 |
| 30 | 骨盆继续向前移动 | pelvis y = 1.14 -> 1.31 |
判定:渲染就绪失败。运动需要脚锁定清理或重定向约束审查;身体网格不需要比例更改。
向后导入的角色
场景:角色在静止帧中看起来正确,但动画向预期旅行方向的相反方向移动。
应用工作流程:
- 确定前向、向上和侧轴:比较头部、胸部、脚和根运动。
- 采样动画帧:检查帧 1 和路径的中点。
- 在观点之前报告事实:分别包括根航向和模型朝向。
提取的事实:
| 帧 | 事实 | 证据 |
|---|
| 1 | 角色面部指向世界 -Y | 从 neck 到 head 的头部/胸部向量解析为 -Y |
| 72 | 根运动向世界 +Y 移动 | root y = 0.0 -> 2.8 |
| 72 | 脚保持视觉前向,与旅行相反 | 脚趾骨头指向 -Y 而位移是 +Y |
判定:可能是向后导入或重定向前向轴不匹配。在编辑动画曲线之前修复导入/重定向轴映射。
实用阈值
- 假设 Blender 的默认米比例单位,除非场景单位比例另有说明。
- 将超过 1-2 厘米的地面穿透视为可见,除非地板柔软或有意风格化。
- 将超过 5% 的突然比例变化视为可能的装备、约束或变换继承问题。
- 将悬空倒置运动期间的左/右踝侧序翻转视为腿交叉风险,即使它稍后恢复。
- 将每帧超过 30 度的根航向跳跃视为可疑,除非源运动包括快照转身。
反模式
- 不要修改身体比例以强制姿势匹配,除非任务明确是网格修复。
- 不要在记录之前烘焙掉干净的基线。
- 不要使用一个渲染相机角度作为姿势正确的证明。
- 在记录它们不是角色一部分的原因之前,不要删除辅助对象。
- 不要在不一起检查头部、脚、躯干和根运动的情况下假设化身朝向 +Y、-Y、+X 或 -X。
工具说明
如果 Blender 状态导出器可用,优先选择包含网格、装备、姿势骨骼、材质、接触、边界框和采样动画帧的 JSON。如果不存在导出器,通过 Blender 本身运行小型 Blender Python 脚本,例如 blender --background scene.blend --python collect_motion_state.py,因为 bpy 在正常的系统 Python 解释器中不可用。