818 lines
16 KiB
Markdown
818 lines
16 KiB
Markdown
# Workflow Guide
|
|
|
|
Detailed guide for animation retargeting workflows using Blender Toolkit.
|
|
|
|
## Table of Contents
|
|
|
|
- [Overview](#overview)
|
|
- [Prerequisites](#prerequisites)
|
|
- [Complete Retargeting Workflow](#complete-retargeting-workflow)
|
|
- [Mixamo Download Workflow](#mixamo-download-workflow)
|
|
- [Two-Phase Confirmation Workflow](#two-phase-confirmation-workflow)
|
|
- [Batch Processing Workflow](#batch-processing-workflow)
|
|
- [Multi-Project Workflow](#multi-project-workflow)
|
|
- [Advanced Workflows](#advanced-workflows)
|
|
- [Common Scenarios](#common-scenarios)
|
|
- [Troubleshooting](#troubleshooting)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
Blender Toolkit provides a complete workflow for retargeting Mixamo animations to custom character rigs in Blender.
|
|
|
|
**Core Workflow Steps:**
|
|
1. Prepare character rig in Blender
|
|
2. Download animation from Mixamo
|
|
3. Connect to Blender via WebSocket
|
|
4. Import and auto-map bones
|
|
5. Review mapping in Blender UI
|
|
6. Confirm and apply retargeting
|
|
7. Animation baked to NLA track
|
|
|
|
**Key Features:**
|
|
- WebSocket-based real-time control
|
|
- Two-phase confirmation workflow
|
|
- Automatic bone mapping with UI review
|
|
- Quality assessment
|
|
- Multi-project support
|
|
- Session hooks for auto-initialization
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
### 1. Blender Setup
|
|
|
|
**Install and Configure:**
|
|
```
|
|
1. Install Blender 4.0 or higher (2023+)
|
|
2. Install Python addon:
|
|
Method 1 (Recommended): Install from ZIP
|
|
- Edit → Preferences → Add-ons → Install
|
|
- Select: .blender-toolkit/blender-toolkit-addon-v*.zip
|
|
- Enable "Blender Toolkit WebSocket Server"
|
|
|
|
Method 2: Install from Source
|
|
- Edit → Preferences → Add-ons → Install
|
|
- Select: plugins/blender-toolkit/skills/addon/__init__.py
|
|
- Enable "Blender Toolkit WebSocket Server"
|
|
3. Start WebSocket server:
|
|
- View3D → Sidebar (N key) → "Blender Toolkit" tab
|
|
- Click "Start Server"
|
|
- Default port: 9400
|
|
```
|
|
|
|
### 2. Character Rig Requirements
|
|
|
|
**Your Character Must Have:**
|
|
- ✅ Armature with properly set up bones
|
|
- ✅ Standard or Rigify-compatible bone naming (recommended)
|
|
- ✅ Proper parent-child bone hierarchy
|
|
- ✅ Character loaded in current Blender scene
|
|
|
|
**Supported Rig Types:**
|
|
- Rigify control rigs ⭐ (best support)
|
|
- Custom rigs with standard naming
|
|
- Game engine rigs (UE4/UE5, Unity)
|
|
- Any armature with clear bone hierarchy
|
|
|
|
### 3. Local Scripts
|
|
|
|
**Auto-Initialized by SessionStart Hook:**
|
|
- TypeScript source copied to `.blender-toolkit/skills/scripts/`
|
|
- Dependencies installed (`npm install`)
|
|
- Scripts built (`npm run build`)
|
|
- CLI wrapper created (`.blender-toolkit/bt.js`)
|
|
|
|
**Manual Check (if needed):**
|
|
```bash
|
|
# Verify scripts are built
|
|
ls .blender-toolkit/skills/scripts/dist
|
|
|
|
# Rebuild if necessary
|
|
cd .blender-toolkit/skills/scripts
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
---
|
|
|
|
## Complete Retargeting Workflow
|
|
|
|
### Step 1: Prepare Character
|
|
|
|
**In Blender:**
|
|
```
|
|
1. Open your character model
|
|
2. Verify armature exists and is rigged
|
|
3. Note the exact armature name (case-sensitive)
|
|
4. Check bone structure (Edit Mode):
|
|
- Proper hierarchy (Hips → Spine → etc.)
|
|
- Standard naming (preferred)
|
|
5. Leave Blender open with character visible
|
|
```
|
|
|
|
**Tips:**
|
|
- Use descriptive armature name: "HeroRig", "PlayerModel"
|
|
- Avoid generic names: "Armature", "Armature.001"
|
|
- Ensure character is in rest pose
|
|
|
|
### Step 2: Download Mixamo Animation
|
|
|
|
**Option A: User Has FBX File**
|
|
- User provides path to downloaded FBX
|
|
- Skip to Step 3
|
|
|
|
**Option B: User Needs to Download**
|
|
```bash
|
|
# Show download instructions
|
|
blender-toolkit mixamo-help Walking
|
|
```
|
|
|
|
**Download Steps:**
|
|
1. Go to Mixamo.com
|
|
2. Search for animation (e.g., "Walking")
|
|
3. Configure settings:
|
|
- Format: FBX (.fbx)
|
|
- Skin: Without Skin
|
|
- FPS: 30
|
|
- Keyframe Reduction: None
|
|
4. Click "Download"
|
|
5. Note download path
|
|
|
|
**Recommended Settings:**
|
|
```
|
|
Format: FBX (.fbx)
|
|
Skin: Without Skin
|
|
Frame Rate: 30 fps
|
|
Keyframe Reduction: None
|
|
```
|
|
|
|
### Step 3: Verify Blender Connection
|
|
|
|
**Check WebSocket Server:**
|
|
```bash
|
|
blender-toolkit daemon-status
|
|
```
|
|
|
|
**If Not Running:**
|
|
```
|
|
1. Open Blender
|
|
2. Press N key in 3D View
|
|
3. Click "Blender Toolkit" tab
|
|
4. Click "Start Server"
|
|
```
|
|
|
|
**Expected Output:**
|
|
```
|
|
✅ Blender WebSocket server is running on port 9400
|
|
```
|
|
|
|
### Step 4: Execute Retargeting
|
|
|
|
**Basic Command:**
|
|
```bash
|
|
blender-toolkit retarget \
|
|
--target "HeroRig" \
|
|
--file "./downloads/Walking.fbx" \
|
|
--name "Walking"
|
|
```
|
|
|
|
**What Happens:**
|
|
```
|
|
🎬 Starting animation retargeting workflow...
|
|
|
|
[1/6] Connecting to Blender...
|
|
✅ Connected to Blender on port 9400
|
|
|
|
[2/6] Importing animation FBX...
|
|
✅ Animation imported: 30 frames
|
|
|
|
[3/6] Analyzing bone structure...
|
|
✅ Source bones: 65 (Mixamo)
|
|
✅ Target bones: 52 (HeroRig)
|
|
|
|
[4/6] Auto-generating bone mapping...
|
|
✅ Mapped 48 bones
|
|
✅ Quality: Excellent (8/9 critical bones)
|
|
|
|
[5/6] Displaying mapping in Blender UI...
|
|
✅ Mapping displayed in "Bone Mapping Review" panel
|
|
|
|
⏸ Workflow paused for user review
|
|
👉 Please review the bone mapping in Blender
|
|
👉 Edit any incorrect mappings
|
|
👉 Click "Apply Retargeting" when ready
|
|
```
|
|
|
|
### Step 5: Review Mapping in Blender
|
|
|
|
**Open Mapping Panel:**
|
|
```
|
|
1. Press N key in 3D View
|
|
2. Go to "Blender Toolkit" tab
|
|
3. Find "Bone Mapping Review" panel
|
|
```
|
|
|
|
**Review Checklist:**
|
|
- [ ] Hips mapped correctly (root motion)
|
|
- [ ] Spine chain mapped in order
|
|
- [ ] Left/Right arms not swapped
|
|
- [ ] Left/Right legs not swapped
|
|
- [ ] Hands and feet mapped
|
|
- [ ] Head and neck mapped
|
|
|
|
**Edit If Needed:**
|
|
- Click dropdown next to incorrect mapping
|
|
- Select correct bone from list
|
|
- Repeat for all issues
|
|
|
|
### Step 6: Apply Retargeting
|
|
|
|
**In Blender:**
|
|
```
|
|
1. After reviewing mappings
|
|
2. Click "Apply Retargeting" button
|
|
3. Wait for processing
|
|
```
|
|
|
|
**Processing Steps:**
|
|
```
|
|
[6/6] Applying retargeting...
|
|
- Creating constraint setup...
|
|
- Baking animation to keyframes...
|
|
- Adding to NLA track...
|
|
- Cleaning up temporary objects...
|
|
|
|
✅ Animation retargeting completed successfully!
|
|
```
|
|
|
|
**Result:**
|
|
- Animation applied to your character
|
|
- Stored in NLA track named "Walking"
|
|
- Original rig unchanged
|
|
- Ready for editing or export
|
|
|
|
---
|
|
|
|
## Mixamo Download Workflow
|
|
|
|
Step-by-step guide for downloading animations from Mixamo.
|
|
|
|
### Get Download Instructions
|
|
|
|
**Show Popular Animations:**
|
|
```bash
|
|
blender-toolkit mixamo-help
|
|
```
|
|
|
|
**Output:**
|
|
```
|
|
📚 Popular Mixamo Animations:
|
|
|
|
Locomotion:
|
|
• Walking
|
|
• Running
|
|
• Jogging
|
|
• Sprinting
|
|
• Crouching
|
|
|
|
Combat:
|
|
• Punching
|
|
• Kicking
|
|
• Sword Slash
|
|
• Rifle Aim
|
|
• Pistol Fire
|
|
|
|
Idle:
|
|
• Idle
|
|
• Breathing Idle
|
|
• Standing Idle
|
|
```
|
|
|
|
**Get Specific Instructions:**
|
|
```bash
|
|
blender-toolkit mixamo-help Walking
|
|
```
|
|
|
|
**Output:**
|
|
```
|
|
📥 Mixamo Download Instructions for "Walking"
|
|
|
|
1. Go to https://www.mixamo.com
|
|
2. Sign in or create account (free)
|
|
3. Search for "Walking" in the search bar
|
|
4. Select the animation you want
|
|
5. Click "Download" button
|
|
6. Configure download settings:
|
|
✅ Format: FBX (.fbx)
|
|
✅ Skin: Without Skin
|
|
✅ Frame Rate: 30 fps
|
|
✅ Keyframe Reduction: None
|
|
7. Click "Download"
|
|
8. Note the downloaded file path
|
|
|
|
⚙️ Recommended Settings:
|
|
|
|
Format: FBX (.fbx)
|
|
Skin: Without Skin
|
|
Frame Rate: 30 fps
|
|
Keyframe Reduction: None
|
|
```
|
|
|
|
### Why "Without Skin"
|
|
|
|
**Reasons:**
|
|
- We only need animation data, not mesh
|
|
- Reduces file size significantly
|
|
- Faster import into Blender
|
|
- Cleaner workflow (no extra objects to delete)
|
|
|
|
**What It Means:**
|
|
- FBX contains only skeleton and keyframes
|
|
- No mesh/geometry included
|
|
- Perfect for retargeting to existing characters
|
|
|
|
---
|
|
|
|
## Two-Phase Confirmation Workflow
|
|
|
|
The workflow pauses after mapping generation for user review.
|
|
|
|
### Phase 1: Generate and Display
|
|
|
|
**Automatic Steps:**
|
|
```
|
|
1. Import FBX [Auto]
|
|
2. Extract bone structure [Auto]
|
|
3. Generate mapping [Auto]
|
|
4. Display in UI [Auto]
|
|
5. Pause for review [Manual]
|
|
```
|
|
|
|
**User Actions:**
|
|
- Review mapping quality
|
|
- Check critical bones
|
|
- Edit incorrect mappings
|
|
- Confirm readiness
|
|
|
|
### Phase 2: Apply and Bake
|
|
|
|
**Triggered by User:**
|
|
- User clicks "Apply Retargeting" in Blender
|
|
|
|
**Automatic Steps:**
|
|
```
|
|
6. Create constraints [Auto]
|
|
7. Bake to keyframes [Auto]
|
|
8. Add to NLA track [Auto]
|
|
9. Cleanup [Auto]
|
|
10. Complete [Auto]
|
|
```
|
|
|
|
### Skipping Confirmation
|
|
|
|
**For Trusted Mappings:**
|
|
```bash
|
|
blender-toolkit retarget \
|
|
--target "HeroRig" \
|
|
--file "./Walking.fbx" \
|
|
--skip-confirmation
|
|
```
|
|
|
|
**When to Skip:**
|
|
- Excellent quality mapping (8-9 critical bones)
|
|
- Repeated animations on same character
|
|
- Using proven custom mapping
|
|
- Batch processing with known-good setup
|
|
|
|
**When NOT to Skip:**
|
|
- First animation on new character
|
|
- Unknown rig structure
|
|
- Fair or Poor quality mapping
|
|
- Complex or unusual animations
|
|
|
|
---
|
|
|
|
## Batch Processing Workflow
|
|
|
|
Process multiple animations efficiently.
|
|
|
|
### Step 1: Test Single Animation
|
|
|
|
**Verify Setup:**
|
|
```bash
|
|
# Test with one animation first
|
|
blender-toolkit retarget \
|
|
--target "HeroRig" \
|
|
--file "./Walking.fbx" \
|
|
--name "Walking"
|
|
```
|
|
|
|
**Check Results:**
|
|
- Animation looks correct
|
|
- No twisted limbs
|
|
- Left/Right not swapped
|
|
- Quality is excellent
|
|
|
|
### Step 2: Extract Mapping
|
|
|
|
**Save Successful Mapping:**
|
|
```typescript
|
|
// After successful test, save the mapping
|
|
// Check Blender console or logs for generated mapping
|
|
const heroRigMapping = {
|
|
"Hips": "root",
|
|
"Spine": "spine_01",
|
|
"Spine1": "spine_02",
|
|
// ... complete mapping
|
|
};
|
|
|
|
// Save to file for reuse
|
|
fs.writeFileSync('./hero-mapping.json', JSON.stringify(heroRigMapping));
|
|
```
|
|
|
|
### Step 3: Batch Process
|
|
|
|
**Shell Script Example:**
|
|
```bash
|
|
#!/bin/bash
|
|
# batch-retarget.sh
|
|
|
|
ANIMATIONS=(
|
|
"Walking"
|
|
"Running"
|
|
"Jumping"
|
|
"Idle"
|
|
"Punching"
|
|
)
|
|
|
|
for anim in "${ANIMATIONS[@]}"; do
|
|
echo "Processing ${anim}..."
|
|
blender-toolkit retarget \
|
|
--target "HeroRig" \
|
|
--file "./animations/${anim}.fbx" \
|
|
--name "${anim}" \
|
|
--skip-confirmation
|
|
echo "✅ ${anim} completed"
|
|
done
|
|
|
|
echo "🎉 All animations processed!"
|
|
```
|
|
|
|
**TypeScript Example:**
|
|
```typescript
|
|
// batch-retarget.ts
|
|
const animations = [
|
|
'Walking', 'Running', 'Jumping',
|
|
'Idle', 'Punching'
|
|
];
|
|
|
|
const workflow = new AnimationRetargetingWorkflow();
|
|
|
|
for (const anim of animations) {
|
|
await workflow.run({
|
|
targetCharacterArmature: 'HeroRig',
|
|
animationFilePath: `./animations/${anim}.fbx`,
|
|
animationName: anim,
|
|
boneMapping: heroRigMapping, // Reuse saved mapping
|
|
skipConfirmation: true
|
|
});
|
|
|
|
console.log(`✅ ${anim} completed`);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Multi-Project Workflow
|
|
|
|
Work with multiple Blender projects simultaneously.
|
|
|
|
### Port Management
|
|
|
|
**Default Behavior:**
|
|
- First project: Port 9400
|
|
- Second project: Port 9401
|
|
- Third project: Port 9402
|
|
- Auto-increments for each project
|
|
|
|
**Configuration:**
|
|
```json
|
|
// ~/.claude/plugins/.../blender-config.json
|
|
{
|
|
"projects": {
|
|
"/path/to/project-a": {
|
|
"port": 9400,
|
|
"lastUsed": "2024-01-15T10:30:00Z"
|
|
},
|
|
"/path/to/project-b": {
|
|
"port": 9401,
|
|
"lastUsed": "2024-01-15T11:00:00Z"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Workflow
|
|
|
|
**Project A:**
|
|
```bash
|
|
cd /path/to/project-a
|
|
|
|
# Start Blender with port 9400
|
|
# Run retargeting
|
|
blender-toolkit retarget \
|
|
--target "CharacterA" \
|
|
--file "./Walking.fbx" \
|
|
--port 9400
|
|
```
|
|
|
|
**Project B (Simultaneously):**
|
|
```bash
|
|
cd /path/to/project-b
|
|
|
|
# Start Blender with port 9401
|
|
# Run retargeting
|
|
blender-toolkit retarget \
|
|
--target "CharacterB" \
|
|
--file "./Running.fbx" \
|
|
--port 9401
|
|
```
|
|
|
|
**Benefits:**
|
|
- No port conflicts
|
|
- Simultaneous processing
|
|
- Independent configurations
|
|
- Separate log files
|
|
|
|
---
|
|
|
|
## Advanced Workflows
|
|
|
|
### Custom Bone Mapping Workflow
|
|
|
|
**For Non-Standard Rigs:**
|
|
|
|
**Step 1: Analyze Bones**
|
|
```bash
|
|
# List all bones in target rig
|
|
blender-toolkit list-objects --type ARMATURE
|
|
blender-toolkit get-bones --armature "MyRig"
|
|
```
|
|
|
|
**Step 2: Create Mapping**
|
|
```typescript
|
|
// custom-mapping.ts
|
|
export const myRigMapping = {
|
|
// Core
|
|
"Hips": "pelvis",
|
|
"Spine": "spine_01",
|
|
"Spine1": "spine_02",
|
|
"Spine2": "chest",
|
|
"Neck": "neck_01",
|
|
"Head": "head",
|
|
|
|
// Left Arm
|
|
"LeftShoulder": "clavicle_L",
|
|
"LeftArm": "upperarm_L",
|
|
"LeftForeArm": "forearm_L",
|
|
"LeftHand": "hand_L",
|
|
|
|
// Right Arm
|
|
"RightShoulder": "clavicle_R",
|
|
"RightArm": "upperarm_R",
|
|
"RightForeArm": "forearm_R",
|
|
"RightHand": "hand_R",
|
|
|
|
// Add remaining bones...
|
|
};
|
|
```
|
|
|
|
**Step 3: Use Custom Mapping**
|
|
```typescript
|
|
import { myRigMapping } from './custom-mapping';
|
|
|
|
await workflow.run({
|
|
targetCharacterArmature: 'MyRig',
|
|
animationFilePath: './Walking.fbx',
|
|
boneMapping: myRigMapping,
|
|
skipConfirmation: true
|
|
});
|
|
```
|
|
|
|
### Animation Library Workflow
|
|
|
|
**Organize Animation Library:**
|
|
|
|
**Directory Structure:**
|
|
```
|
|
animations/
|
|
├── locomotion/
|
|
│ ├── walking.fbx
|
|
│ ├── running.fbx
|
|
│ └── jumping.fbx
|
|
├── combat/
|
|
│ ├── punch.fbx
|
|
│ ├── kick.fbx
|
|
│ └── block.fbx
|
|
└── idle/
|
|
├── idle.fbx
|
|
└── breathing.fbx
|
|
```
|
|
|
|
**Batch Import Script:**
|
|
```typescript
|
|
// import-library.ts
|
|
const library = {
|
|
locomotion: ['walking', 'running', 'jumping'],
|
|
combat: ['punch', 'kick', 'block'],
|
|
idle: ['idle', 'breathing']
|
|
};
|
|
|
|
for (const [category, animations] of Object.entries(library)) {
|
|
for (const anim of animations) {
|
|
await workflow.run({
|
|
targetCharacterArmature: 'Hero',
|
|
animationFilePath: `./animations/${category}/${anim}.fbx`,
|
|
animationName: `${category}_${anim}`,
|
|
boneMapping: 'auto',
|
|
skipConfirmation: false // Review each category first
|
|
});
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Common Scenarios
|
|
|
|
### Scenario 1: First-Time User
|
|
|
|
**Goal:** Retarget first Mixamo animation to custom character
|
|
|
|
**Steps:**
|
|
1. Download animation from Mixamo
|
|
2. Start Blender with character
|
|
3. Enable and start WebSocket addon
|
|
4. Run retarget command
|
|
5. Review mapping in UI
|
|
6. Apply retargeting
|
|
|
|
**Commands:**
|
|
```bash
|
|
# Get download instructions
|
|
blender-toolkit mixamo-help Walking
|
|
|
|
# After downloading...
|
|
blender-toolkit retarget \
|
|
--target "MyCharacter" \
|
|
--file "./Walking.fbx"
|
|
```
|
|
|
|
### Scenario 2: Rigify User
|
|
|
|
**Goal:** Fast workflow for standard Rigify rig
|
|
|
|
**Steps:**
|
|
1. Download animation
|
|
2. Run with Rigify preset
|
|
3. Auto-apply (skip confirmation)
|
|
|
|
**Commands:**
|
|
```bash
|
|
blender-toolkit retarget \
|
|
--target "MyRigifyCharacter" \
|
|
--file "./Walking.fbx" \
|
|
--mapping mixamo_to_rigify \
|
|
--skip-confirmation
|
|
```
|
|
|
|
### Scenario 3: Game Developer
|
|
|
|
**Goal:** Import 50 animations for game character
|
|
|
|
**Steps:**
|
|
1. Test one animation
|
|
2. Save mapping configuration
|
|
3. Batch process all animations
|
|
4. Export to game engine
|
|
|
|
**Commands:**
|
|
```bash
|
|
# Test first
|
|
blender-toolkit retarget \
|
|
--target "GameCharacter" \
|
|
--file "./test.fbx"
|
|
|
|
# Batch process
|
|
./batch-import.sh
|
|
```
|
|
|
|
### Scenario 4: Studio Pipeline
|
|
|
|
**Goal:** Integrate into production pipeline
|
|
|
|
**Setup:**
|
|
- Custom wrapper scripts
|
|
- CI/CD integration
|
|
- Automated testing
|
|
- Quality validation
|
|
|
|
**Pipeline:**
|
|
```yaml
|
|
# .github/workflows/animation-pipeline.yml
|
|
jobs:
|
|
retarget:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Setup Blender
|
|
run: install-blender
|
|
|
|
- name: Start WebSocket
|
|
run: start-blender-daemon
|
|
|
|
- name: Retarget Animations
|
|
run: |
|
|
for fbx in animations/*.fbx; do
|
|
blender-toolkit retarget \
|
|
--target "$CHARACTER" \
|
|
--file "$fbx" \
|
|
--skip-confirmation
|
|
done
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Connection Issues
|
|
|
|
**Problem:** "Failed to connect to Blender"
|
|
|
|
**Solutions:**
|
|
```bash
|
|
# 1. Check if Blender is running
|
|
ps aux | grep -i blender
|
|
|
|
# 2. Verify addon is enabled
|
|
# In Blender: Edit → Preferences → Add-ons → Search "Blender Toolkit"
|
|
|
|
# 3. Check server status
|
|
blender-toolkit daemon-status
|
|
|
|
# 4. Restart server
|
|
# In Blender: Click "Stop Server", then "Start Server"
|
|
|
|
# 5. Try different port
|
|
blender-toolkit retarget --port 9401 ...
|
|
```
|
|
|
|
### Import Issues
|
|
|
|
**Problem:** "Failed to import FBX file"
|
|
|
|
**Solutions:**
|
|
- Verify file path is correct
|
|
- Check FBX format (should be Binary, not ASCII)
|
|
- Ensure file is not corrupted
|
|
- Try re-downloading from Mixamo
|
|
|
|
### Mapping Issues
|
|
|
|
**Problem:** "Poor quality mapping"
|
|
|
|
**Solutions:**
|
|
1. Lower threshold:
|
|
```typescript
|
|
// Custom workflow
|
|
threshold: 0.5 // Default is 0.6
|
|
```
|
|
|
|
2. Use custom mapping for critical bones
|
|
|
|
3. Review bone names in Blender:
|
|
- Edit Mode → Show bone names
|
|
- Check for typos or unusual names
|
|
|
|
### Animation Issues
|
|
|
|
**Problem:** "Animation looks wrong"
|
|
|
|
**Solutions:**
|
|
- Check bone roll in Edit Mode
|
|
- Verify constraint influence
|
|
- Review mapping (especially left/right)
|
|
- Test with simple animation first
|
|
|
|
### Performance Issues
|
|
|
|
**Problem:** "Retargeting is slow"
|
|
|
|
**Solutions:**
|
|
- Close other Blender instances
|
|
- Reduce FBX complexity (remove unnecessary bones)
|
|
- Use SSD for faster file I/O
|
|
- Process in batches during off-hours
|