mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-18 23:03:06 +08:00
Add Blender motion state inspection skill
Adds the Blender motion state inspection skill with maintainer refinements for tools metadata, usage guidance, meter-scale threshold assumptions, and Blender interpreter notes.
This commit is contained in:
@@ -11,7 +11,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ecc",
|
"name": "ecc",
|
||||||
"source": "./",
|
"source": "./",
|
||||||
"description": "The most comprehensive Claude Code plugin — 60 agents, 231 skills, 75 legacy command shims, selective install profiles, and production-ready hooks for TDD, security scanning, code review, and continuous learning",
|
"description": "The most comprehensive Claude Code plugin — 60 agents, 232 skills, 75 legacy command shims, selective install profiles, and production-ready hooks for TDD, security scanning, code review, and continuous learning",
|
||||||
"version": "2.0.0-rc.1",
|
"version": "2.0.0-rc.1",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Affaan Mustafa",
|
"name": "Affaan Mustafa",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ecc",
|
"name": "ecc",
|
||||||
"version": "2.0.0-rc.1",
|
"version": "2.0.0-rc.1",
|
||||||
"description": "Battle-tested Claude Code plugin for engineering teams — 60 agents, 231 skills, 75 legacy command shims, production-ready hooks, and selective install workflows evolved through continuous real-world use",
|
"description": "Battle-tested Claude Code plugin for engineering teams — 60 agents, 232 skills, 75 legacy command shims, production-ready hooks, and selective install workflows evolved through continuous real-world use",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Affaan Mustafa",
|
"name": "Affaan Mustafa",
|
||||||
"url": "https://x.com/affaanmustafa"
|
"url": "https://x.com/affaanmustafa"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Everything Claude Code (ECC) — Agent Instructions
|
# Everything Claude Code (ECC) — Agent Instructions
|
||||||
|
|
||||||
This is a **production-ready AI coding plugin** providing 60 specialized agents, 231 skills, 75 commands, and automated hook workflows for software development.
|
This is a **production-ready AI coding plugin** providing 60 specialized agents, 232 skills, 75 commands, and automated hook workflows for software development.
|
||||||
|
|
||||||
**Version:** 2.0.0-rc.1
|
**Version:** 2.0.0-rc.1
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat
|
|||||||
|
|
||||||
```
|
```
|
||||||
agents/ — 60 specialized subagents
|
agents/ — 60 specialized subagents
|
||||||
skills/ — 231 workflow skills and domain knowledge
|
skills/ — 232 workflow skills and domain knowledge
|
||||||
commands/ — 75 slash commands
|
commands/ — 75 slash commands
|
||||||
hooks/ — Trigger-based automations
|
hooks/ — Trigger-based automations
|
||||||
rules/ — Always-follow guidelines (common + per-language)
|
rules/ — Always-follow guidelines (common + per-language)
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ This repo is the raw code only. The guides explain everything.
|
|||||||
### v2.0.0-rc.1 — Surface Refresh, Operator Workflows, and ECC 2.0 Alpha (Apr 2026)
|
### v2.0.0-rc.1 — Surface Refresh, Operator Workflows, and ECC 2.0 Alpha (Apr 2026)
|
||||||
|
|
||||||
- **Dashboard GUI** — New Tkinter-based desktop application (`ecc_dashboard.py` or `npm run dashboard`) with dark/light theme toggle, font customization, and project logo in header and taskbar.
|
- **Dashboard GUI** — New Tkinter-based desktop application (`ecc_dashboard.py` or `npm run dashboard`) with dark/light theme toggle, font customization, and project logo in header and taskbar.
|
||||||
- **Public surface synced to the live repo** — metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface: 60 agents, 231 skills, and 75 legacy command shims.
|
- **Public surface synced to the live repo** — metadata, catalog counts, plugin manifests, and install-facing docs now match the actual OSS surface: 60 agents, 232 skills, and 75 legacy command shims.
|
||||||
- **Operator and outbound workflow expansion** — `brand-voice`, `social-graph-ranker`, `connections-optimizer`, `customer-billing-ops`, `ecc-tools-cost-audit`, `google-workspace-ops`, `project-flow-ops`, and `workspace-surface-audit` round out the operator lane.
|
- **Operator and outbound workflow expansion** — `brand-voice`, `social-graph-ranker`, `connections-optimizer`, `customer-billing-ops`, `ecc-tools-cost-audit`, `google-workspace-ops`, `project-flow-ops`, and `workspace-surface-audit` round out the operator lane.
|
||||||
- **Media and launch tooling** — `manim-video`, `remotion-video-creation`, and upgraded social publishing surfaces make technical explainers and launch content part of the same system.
|
- **Media and launch tooling** — `manim-video`, `remotion-video-creation`, and upgraded social publishing surfaces make technical explainers and launch content part of the same system.
|
||||||
- **Framework and product surface growth** — `nestjs-patterns`, richer Codex/OpenCode install surfaces, and expanded cross-harness packaging keep the repo usable beyond Claude Code alone.
|
- **Framework and product surface growth** — `nestjs-patterns`, richer Codex/OpenCode install surfaces, and expanded cross-harness packaging keep the repo usable beyond Claude Code alone.
|
||||||
@@ -392,7 +392,7 @@ If you stacked methods, clean up in this order:
|
|||||||
/plugin list ecc@ecc
|
/plugin list ecc@ecc
|
||||||
```
|
```
|
||||||
|
|
||||||
**That's it!** You now have access to 60 agents, 231 skills, and 75 legacy command shims.
|
**That's it!** You now have access to 60 agents, 232 skills, and 75 legacy command shims.
|
||||||
|
|
||||||
### Dashboard GUI
|
### Dashboard GUI
|
||||||
|
|
||||||
@@ -1423,7 +1423,7 @@ The configuration is automatically detected from `.opencode/opencode.json`.
|
|||||||
|---------|-------------|----------|--------|
|
|---------|-------------|----------|--------|
|
||||||
| Agents | PASS: 60 agents | PASS: 12 agents | **Claude Code leads** |
|
| Agents | PASS: 60 agents | PASS: 12 agents | **Claude Code leads** |
|
||||||
| Commands | PASS: 75 commands | PASS: 35 commands | **Claude Code leads** |
|
| Commands | PASS: 75 commands | PASS: 35 commands | **Claude Code leads** |
|
||||||
| Skills | PASS: 231 skills | PASS: 37 skills | **Claude Code leads** |
|
| Skills | PASS: 232 skills | PASS: 37 skills | **Claude Code leads** |
|
||||||
| Hooks | PASS: 8 event types | PASS: 11 events | **OpenCode has more!** |
|
| Hooks | PASS: 8 event types | PASS: 11 events | **OpenCode has more!** |
|
||||||
| Rules | PASS: 29 rules | PASS: 13 instructions | **Claude Code leads** |
|
| Rules | PASS: 29 rules | PASS: 13 instructions | **Claude Code leads** |
|
||||||
| MCP Servers | PASS: 14 servers | PASS: Full | **Full parity** |
|
| MCP Servers | PASS: 14 servers | PASS: Full | **Full parity** |
|
||||||
@@ -1585,7 +1585,7 @@ ECC is the **first plugin to maximize every major AI coding tool**. Here's how e
|
|||||||
|---------|------------|------------|-----------|----------|----------------|
|
|---------|------------|------------|-----------|----------|----------------|
|
||||||
| **Agents** | 60 | Shared (AGENTS.md) | Shared (AGENTS.md) | 12 | N/A |
|
| **Agents** | 60 | Shared (AGENTS.md) | Shared (AGENTS.md) | 12 | N/A |
|
||||||
| **Commands** | 75 | Shared | Instruction-based | 35 | 6 prompts |
|
| **Commands** | 75 | Shared | Instruction-based | 35 | 6 prompts |
|
||||||
| **Skills** | 231 | Shared | 10 (native format) | 37 | Via instructions |
|
| **Skills** | 232 | Shared | 10 (native format) | 37 | Via instructions |
|
||||||
| **Hook Events** | 8 types | 15 types | None yet | 11 types | None |
|
| **Hook Events** | 8 types | 15 types | None yet | 11 types | None |
|
||||||
| **Hook Scripts** | 20+ scripts | 16 scripts (DRY adapter) | N/A | Plugin hooks | N/A |
|
| **Hook Scripts** | 20+ scripts | 16 scripts (DRY adapter) | N/A | Plugin hooks | N/A |
|
||||||
| **Rules** | 34 (common + lang) | 34 (YAML frontmatter) | Instruction-based | 13 instructions | 1 always-on file |
|
| **Rules** | 34 (common + lang) | 34 (YAML frontmatter) | Instruction-based | 13 instructions | 1 always-on file |
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/"
|
|||||||
/plugin list ecc@ecc
|
/plugin list ecc@ecc
|
||||||
```
|
```
|
||||||
|
|
||||||
**完成!** 你现在可以使用 60 个代理、231 个技能和 75 个命令。
|
**完成!** 你现在可以使用 60 个代理、232 个技能和 75 个命令。
|
||||||
|
|
||||||
### multi-* 命令需要额外配置
|
### multi-* 命令需要额外配置
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Everything Claude Code (ECC) — 智能体指令
|
# Everything Claude Code (ECC) — 智能体指令
|
||||||
|
|
||||||
这是一个**生产就绪的 AI 编码插件**,提供 60 个专业代理、231 项技能、75 条命令以及自动化钩子工作流,用于软件开发。
|
这是一个**生产就绪的 AI 编码插件**,提供 60 个专业代理、232 项技能、75 条命令以及自动化钩子工作流,用于软件开发。
|
||||||
|
|
||||||
**版本:** 2.0.0-rc.1
|
**版本:** 2.0.0-rc.1
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
|
|
||||||
```
|
```
|
||||||
agents/ — 60 个专业子代理
|
agents/ — 60 个专业子代理
|
||||||
skills/ — 231 个工作流技能和领域知识
|
skills/ — 232 个工作流技能和领域知识
|
||||||
commands/ — 75 个斜杠命令
|
commands/ — 75 个斜杠命令
|
||||||
hooks/ — 基于触发的自动化
|
hooks/ — 基于触发的自动化
|
||||||
rules/ — 始终遵循的指导方针(通用 + 每种语言)
|
rules/ — 始终遵循的指导方针(通用 + 每种语言)
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ Copy-Item -Recurse rules/typescript "$HOME/.claude/rules/"
|
|||||||
/plugin list ecc@ecc
|
/plugin list ecc@ecc
|
||||||
```
|
```
|
||||||
|
|
||||||
**搞定!** 你现在可以使用 60 个智能体、231 项技能和 75 个命令了。
|
**搞定!** 你现在可以使用 60 个智能体、232 项技能和 75 个命令了。
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
@@ -1138,7 +1138,7 @@ opencode
|
|||||||
|---------|-------------|----------|--------|
|
|---------|-------------|----------|--------|
|
||||||
| 智能体 | PASS: 60 个 | PASS: 12 个 | **Claude Code 领先** |
|
| 智能体 | PASS: 60 个 | PASS: 12 个 | **Claude Code 领先** |
|
||||||
| 命令 | PASS: 75 个 | PASS: 35 个 | **Claude Code 领先** |
|
| 命令 | PASS: 75 个 | PASS: 35 个 | **Claude Code 领先** |
|
||||||
| 技能 | PASS: 231 项 | PASS: 37 项 | **Claude Code 领先** |
|
| 技能 | PASS: 232 项 | PASS: 37 项 | **Claude Code 领先** |
|
||||||
| 钩子 | PASS: 8 种事件类型 | PASS: 11 种事件 | **OpenCode 更多!** |
|
| 钩子 | PASS: 8 种事件类型 | PASS: 11 种事件 | **OpenCode 更多!** |
|
||||||
| 规则 | PASS: 29 条 | PASS: 13 条指令 | **Claude Code 领先** |
|
| 规则 | PASS: 29 条 | PASS: 13 条指令 | **Claude Code 领先** |
|
||||||
| MCP 服务器 | PASS: 14 个 | PASS: 完整 | **完全对等** |
|
| MCP 服务器 | PASS: 14 个 | PASS: 完整 | **完全对等** |
|
||||||
@@ -1246,7 +1246,7 @@ ECC 是**第一个最大化利用每个主要 AI 编码工具的插件**。以
|
|||||||
|---------|------------|------------|-----------|----------|
|
|---------|------------|------------|-----------|----------|
|
||||||
| **智能体** | 60 | 共享 (AGENTS.md) | 共享 (AGENTS.md) | 12 |
|
| **智能体** | 60 | 共享 (AGENTS.md) | 共享 (AGENTS.md) | 12 |
|
||||||
| **命令** | 75 | 共享 | 基于指令 | 35 |
|
| **命令** | 75 | 共享 | 基于指令 | 35 |
|
||||||
| **技能** | 231 | 共享 | 10 (原生格式) | 37 |
|
| **技能** | 232 | 共享 | 10 (原生格式) | 37 |
|
||||||
| **钩子事件** | 8 种类型 | 15 种类型 | 暂无 | 11 种类型 |
|
| **钩子事件** | 8 种类型 | 15 种类型 | 暂无 | 11 种类型 |
|
||||||
| **钩子脚本** | 20+ 个脚本 | 16 个脚本 (DRY 适配器) | N/A | 插件钩子 |
|
| **钩子脚本** | 20+ 个脚本 | 16 个脚本 (DRY 适配器) | N/A | 插件钩子 |
|
||||||
| **规则** | 34 (通用 + 语言) | 34 (YAML 前页) | 基于指令 | 13 条指令 |
|
| **规则** | 34 (通用 + 语言) | 34 (YAML 前页) | 基于指令 | 13 条指令 |
|
||||||
|
|||||||
@@ -122,6 +122,7 @@
|
|||||||
"skills/automation-audit-ops/",
|
"skills/automation-audit-ops/",
|
||||||
"skills/autonomous-loops/",
|
"skills/autonomous-loops/",
|
||||||
"skills/backend-patterns/",
|
"skills/backend-patterns/",
|
||||||
|
"skills/blender-motion-state-inspection/",
|
||||||
"skills/blueprint/",
|
"skills/blueprint/",
|
||||||
"skills/brand-voice/",
|
"skills/brand-voice/",
|
||||||
"skills/carrier-relationship-management/",
|
"skills/carrier-relationship-management/",
|
||||||
|
|||||||
164
skills/blender-motion-state-inspection/SKILL.md
Normal file
164
skills/blender-motion-state-inspection/SKILL.md
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
---
|
||||||
|
name: blender-motion-state-inspection
|
||||||
|
description: Use this skill when inspecting Blender characters, rigs, poses, animation retargeting, ground contact, facing direction, or model-vs-motion alignment where screenshots alone are not enough.
|
||||||
|
origin: ECC
|
||||||
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
||||||
|
---
|
||||||
|
|
||||||
|
# Blender Motion State Inspection
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- A Blender character looks twisted, mirrored, flattened, offset, or foot-sliding in an animation.
|
||||||
|
- A user asks whether an imported avatar, armature, or retargeted motion matches an expected pose.
|
||||||
|
- You need to compare rendered evidence with structured facts such as bones, bounding boxes, contacts, and facing vectors.
|
||||||
|
- A workflow depends on deciding whether a model is a character, prop, proxy mesh, control rig, or broken import.
|
||||||
|
|
||||||
|
## Core Principle
|
||||||
|
|
||||||
|
Do not judge animated 3D assets only from screenshots. Screenshots are review evidence, but they hide axis conventions, bone names, object scale, local transforms, parented meshes, material slots, and frame-by-frame contact state.
|
||||||
|
|
||||||
|
First extract structured Blender state, then use viewport screenshots or renders to confirm what the facts imply.
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
1. Establish the clean scene and asset baseline before judging motion.
|
||||||
|
2. Extract structured facts from Blender using an exporter or Blender Python run inside Blender's own interpreter.
|
||||||
|
3. Sample the frames most likely to expose contact, orientation, scale, and retargeting errors.
|
||||||
|
4. Compare the measured facts against the user's expected pose, direction, ground plane, and render goal.
|
||||||
|
5. Return a concise report that separates confirmed facts, likely causes, and required fixes.
|
||||||
|
|
||||||
|
## Inspection Workflow
|
||||||
|
|
||||||
|
1. Inventory the scene.
|
||||||
|
- List meshes, armatures, empties, cameras, lights, modifiers, parent relationships, and hidden objects.
|
||||||
|
- Separate character meshes from helper/proxy geometry before judging the avatar.
|
||||||
|
- Record object-space and world-space bounding boxes.
|
||||||
|
|
||||||
|
2. Identify the skeleton.
|
||||||
|
- Capture armature names, pose bones, bone heads/tails, roll, parent chains, constraints, and rest-pose axes.
|
||||||
|
- Map semantic bones such as hips, spine, neck, head, shoulders, elbows, hands, thighs, knees, ankles, and feet.
|
||||||
|
- Flag missing left/right pairs and unusual naming schemes.
|
||||||
|
|
||||||
|
3. Determine forward, up, and side axes.
|
||||||
|
- Use the pelvis, spine, shoulders, hips, head, and feet together; do not rely on a single mesh normal.
|
||||||
|
- Compare local armature axes with world axes and imported file conventions such as glTF Y-up vs Blender Z-up.
|
||||||
|
- Mark likely mirrored or backwards imports when face/head/feet direction conflicts with root motion.
|
||||||
|
|
||||||
|
4. Sample animation frames.
|
||||||
|
- Inspect first, middle, contact, airborne, and extreme frames.
|
||||||
|
- Record root location, root heading, pelvis height, torso lean, limb directions, foot clearance, and mesh bounds.
|
||||||
|
- For long or fast motion, sample more densely around flips, landings, turns, collisions, and floor contacts.
|
||||||
|
|
||||||
|
5. Check model integrity before retargeting blame.
|
||||||
|
- Confirm the clean baseline shape before applying animation.
|
||||||
|
- Preserve original mesh, materials, armature, and skinning unless the user explicitly asks for repair.
|
||||||
|
- Treat unexplained sphere-like blobs, giant proxy meshes, or crushed bodies as import/selection issues until proven otherwise.
|
||||||
|
|
||||||
|
6. Diagnose contact and motion issues.
|
||||||
|
- Ground penetration: compare lowest foot or shoe vertices with floor height per frame.
|
||||||
|
- Foot sliding: compare foot world positions across planted frames.
|
||||||
|
- Leg crossover: compare left/right thigh, knee, ankle, and foot side ordering.
|
||||||
|
- Twist damage: compare bone swing direction separately from roll/twist around the limb axis.
|
||||||
|
- Scale drift: compare animated mesh bounds against the clean baseline bounds.
|
||||||
|
|
||||||
|
7. Report facts before opinions.
|
||||||
|
- Include frame numbers, object names, bone names, world coordinates, and thresholds.
|
||||||
|
- Separate confirmed failures from visual suspicions.
|
||||||
|
- Attach screenshots only after the structured state explains what to look for.
|
||||||
|
|
||||||
|
## Recommended Report Shape
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Blender Motion Inspection
|
||||||
|
|
||||||
|
### Scene Inventory
|
||||||
|
- Character candidates:
|
||||||
|
- Armatures:
|
||||||
|
- Helper/proxy objects:
|
||||||
|
- Cameras/lights:
|
||||||
|
|
||||||
|
### Orientation
|
||||||
|
- World up:
|
||||||
|
- Character forward:
|
||||||
|
- Root heading:
|
||||||
|
- Mirrored/backwards risk:
|
||||||
|
|
||||||
|
### Baseline Integrity
|
||||||
|
- Clean mesh bounds:
|
||||||
|
- Animated mesh bounds:
|
||||||
|
- Materials/skin preserved:
|
||||||
|
- Suspicious non-character meshes:
|
||||||
|
|
||||||
|
### Frame Findings
|
||||||
|
| Frame | Finding | Evidence |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 1 | Clean baseline pose | hips/spine/feet aligned |
|
||||||
|
| 96 | Foot penetrates floor | left_foot min_z = -0.04 |
|
||||||
|
|
||||||
|
### Verdict
|
||||||
|
- Pass/fail:
|
||||||
|
- Required fix:
|
||||||
|
- Render readiness:
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Walk Cycle With Foot Sliding
|
||||||
|
|
||||||
|
Scenario: a retargeted character appears to skate during a walk cycle, but the front camera angle makes the foot contact hard to judge.
|
||||||
|
|
||||||
|
Apply the workflow:
|
||||||
|
- Inventory the scene: character mesh `HeroBody`, armature `HeroRig`, ground plane `Floor`, no hidden proxy meshes.
|
||||||
|
- Identify the skeleton: semantic feet are `foot.L` and `foot.R`; hips are `pelvis`; root bone is `root`.
|
||||||
|
- Sample animation frames: inspect frames 1, 18, 24, 30, 42, and 48 around planted-foot moments.
|
||||||
|
- Diagnose contact and motion issues: compare world-space foot locations during planted frames.
|
||||||
|
|
||||||
|
Extracted facts:
|
||||||
|
|
||||||
|
| Frame | Fact | Evidence |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 18 | Left foot is planted | `foot.L min_z = 0.004`, toe and heel both near floor |
|
||||||
|
| 24 | Left foot slides while planted | `foot.L x = 0.21 -> 0.28` over six frames |
|
||||||
|
| 30 | Pelvis keeps moving forward | `pelvis y = 1.14 -> 1.31` |
|
||||||
|
|
||||||
|
Verdict: fail for render readiness. The motion needs foot-lock cleanup or retargeting constraint review; the body mesh does not need proportion changes.
|
||||||
|
|
||||||
|
### Backwards Imported Character
|
||||||
|
|
||||||
|
Scenario: a character looks correct in a still frame, but the animation moves opposite the expected travel direction.
|
||||||
|
|
||||||
|
Apply the workflow:
|
||||||
|
- Determine forward, up, and side axes: compare head, chest, feet, and root motion.
|
||||||
|
- Sample animation frames: inspect frame 1 and the midpoint of the travel path.
|
||||||
|
- Report facts before opinions: include the root heading and model-facing direction separately.
|
||||||
|
|
||||||
|
Extracted facts:
|
||||||
|
|
||||||
|
| Frame | Fact | Evidence |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 1 | Character face points toward world `-Y` | head/chest vector from `neck` to `head` resolves to `-Y` |
|
||||||
|
| 72 | Root motion travels toward world `+Y` | `root y = 0.0 -> 2.8` |
|
||||||
|
| 72 | Feet remain visually forward-facing opposite travel | toe bones point `-Y` while displacement is `+Y` |
|
||||||
|
|
||||||
|
Verdict: likely backwards import or retargeting forward-axis mismatch. Fix the import/retarget axis mapping before editing animation curves.
|
||||||
|
|
||||||
|
## Practical Thresholds
|
||||||
|
|
||||||
|
- Assume Blender's default meter-scale units unless the scene unit scale says otherwise.
|
||||||
|
- Treat ground penetration above 1-2 cm as visible unless the floor is soft or intentionally stylized.
|
||||||
|
- Treat a sudden scale change above 5% as a likely rig, constraint, or transform inheritance problem.
|
||||||
|
- Treat left/right ankle side-order flips during airborne inverted motion as leg crossover risk even if it recovers later.
|
||||||
|
- Treat root heading jumps above 30 degrees per frame as suspicious unless the source motion includes a snap turn.
|
||||||
|
|
||||||
|
## Anti-Patterns
|
||||||
|
|
||||||
|
- Do not modify body proportions to force pose matching unless the task is explicitly mesh repair.
|
||||||
|
- Do not bake away the clean baseline before recording it.
|
||||||
|
- Do not use one rendered camera angle as proof that a pose is correct.
|
||||||
|
- Do not delete helper objects until you have recorded why they are not part of the character.
|
||||||
|
- Do not assume an avatar faces +Y, -Y, +X, or -X without checking head, feet, torso, and root motion together.
|
||||||
|
|
||||||
|
## Tooling Notes
|
||||||
|
|
||||||
|
If a Blender state exporter is available, prefer JSON that includes meshes, armatures, pose bones, materials, contacts, bounding boxes, and sampled animation frames. If no exporter exists, run a small Blender Python script through Blender itself, for example `blender --background scene.blend --python collect_motion_state.py`, because `bpy` is not available in a normal system Python interpreter.
|
||||||
Reference in New Issue
Block a user