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.
git clone https://github.com/affaan-m/ECC.git--- 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. metadata: 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.
1. **Prepare the Blender File**: Open the Blender file containing the character rig and animation. Ensure the rig has a descriptive name (e.g., `metarig`) and the animation action is named (e.g., `walk_cycle`). If available, include a reference image or pose for comparison. 2. **Run the Inspection**: Use the prompt template above, replacing placeholders like [FILE_PATH], [RIG_NAME], and [ACTION_NAME] with your specific values. If you have a reference image or pose, upload it or describe it in the prompt. 3. **Review the Output**: The AI will provide a detailed breakdown of motion state issues, including bone names, frames, and suggested fixes. Pay attention to ground contact, facing direction, pose accuracy, retargeting issues, and model-vs-motion alignment. 4. **Implement Fixes**: Apply the suggested fixes in Blender. For ground contact issues, adjust the floor plane or IK constraints. For facing direction mismatches, use drivers or manual keyframes. For pose accuracy, compare the current pose to the reference and adjust bone rotations. For retargeting issues, reapply retargeting with uniform scaling. For model-vs-motion misalignment, re-weight paint the mesh. 5. **Iterate and Validate**: After applying fixes, re-run the inspection to validate the changes. Compare the updated motion state to the reference to ensure alignment.
No install command available. Check the GitHub repository for manual installation instructions.
git clone https://github.com/affaan-m/ECC/tree/main/skills/blender-motion-state-inspectionCopy the install command above and run it in your terminal.
Launch Claude Code, Cursor, or your preferred AI coding agent.
Use the prompt template or examples below to test the skill.
Adapt the skill to your specific use case and workflow.
Inspect the Blender file [FILE_PATH] and analyze the motion state of the character rig [RIG_NAME]. Focus on: 1) Ground contact points (are feet/limbs penetrating the floor or floating?), 2) Facing direction (is the character aligned with the intended path or target?), 3) Pose accuracy (does the current pose match the reference [REFERENCE_IMAGE/POSE_NAME]?), 4) Retargeting issues (are bone rotations or translations deviating from the source animation?), and 5) Model-vs-motion alignment (does the character's mesh deform correctly with the rig?). Provide a breakdown of issues with specific bone names, frames, and suggested fixes. If available, reference the animation layer [ANIMATION_LAYER] or action [ACTION_NAME].
After analyzing the Blender file `character_01.blend` with rig `metarig` and action `walk_cycle`, I identified the following motion state issues: 1. **Ground Contact Problems**: At frame 42, the left foot's heel bone (L_Heel) penetrates the floor plane by 0.3 units (Z=-0.3). The right foot (R_Toe) is floating 0.15 units above the ground. This suggests the floor plane may be misaligned or the IK constraints need adjustment. The issue persists until frame 58, where the left foot corrects itself. 2. **Facing Direction Mismatch**: The character is intended to face 30 degrees to the right of the global Y-axis (based on the reference pose `walk_cycle_facing.png`). However, at frames 1-20, the character's facing direction deviates by +15 degrees (facing too far right). This causes the walk cycle to appear off-axis. The deviation reduces to +5 degrees by frame 30, suggesting a gradual correction is needed. 3. **Pose Accuracy Issues**: Comparing the current pose at frame 15 to the reference pose `walk_cycle_01.png`, the left arm's IK target (L_Hand_IK) is rotated 22 degrees inward (X-axis) from the reference. This causes the elbow to bend unnaturally. Additionally, the spine bone (Spine3) is rotated 10 degrees forward, leading to a hunched posture. 4. **Retargeting Artifacts**: The animation was retargeted from a humanoid model with a 1.8m height to this character (1.6m). The bone scales are not uniformly adjusted, causing the legs to appear too short at frames 25-40. The knee bones (L_Knee, R_Knee) also show a 3-degree rotation offset, which affects the natural bend of the legs. 5. **Model-vs-Motion Misalignment**: The character's mesh (body mesh) does not deform correctly with the rig at frames 50-60. Specifically, the chest area (Spine3 influence) shows unnatural stretching when the arms are raised. This is likely due to incorrect weight painting on the mesh. **Suggested Fixes**: - Adjust the floor plane Z-position to -0.3 to resolve ground contact issues. - Add a driver to gradually correct the facing direction from +15 to +5 degrees between frames 1-30. - Rotate the L_Hand_IK target to match the reference pose and adjust the spine rotation to 0 degrees. - Scale the leg bones uniformly to 0.89 (1.6m/1.8m) and reapply retargeting. - Re-weight paint the chest area to ensure smooth deformation when the arms are raised.
skills-collection
Take a free 3-minute scan and get personalized AI skill recommendations.
Take free scan