Files
gh-dev-gom-claude-code-mark…/skills/SKILL.md
2025-11-29 18:18:51 +08:00

18 KiB

name, description, allowed-tools
name description allowed-tools
blender-toolkit Blender automation with geometry creation, materials, modifiers, and Mixamo animation retargeting. Core Features: WebSocket-based real-time control, automatic bone mapping with UI review, two-phase confirmation workflow, quality assessment, multi-project support, comprehensive CLI commands. Use Cases: Create 3D primitives (cube, sphere, cylinder, etc.), manipulate objects (transform, duplicate, delete), manage materials and modifiers, retarget Mixamo animations to custom rigs with fuzzy bone matching. Bash, Read, Write, Glob

⚠️ Installation Check (READ THIS FIRST)

IMPORTANT: Before using this skill, check Blender addon installation status.

Config location: Check the shared config file for your installation status:

~/.claude/plugins/marketplaces/dev-gom-plugins/blender-config.json

Always run scripts with --help first to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window.

Required actions based on config:

1. If Blender Not Detected (blenderExecutable: null)

Blender was not found during initialization. Please:

  1. Install Blender 4.0+ from https://www.blender.org
  2. Restart Claude Code session to trigger auto-detection
  3. Check logs: .blender-toolkit/init-log.txt

2. If Multiple Versions Detected (detectedBlenderVersions array)

The system detected multiple Blender installations. If you want to use a different version:

  1. Open config file (path shown above)
  2. Edit blenderExecutable field to your preferred version path
  3. Restart Claude Code session

Example:

{
  "detectedBlenderVersions": [
    {"version": "4.2.0", "path": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe"},
    {"version": "4.1.0", "path": "C:\\Program Files\\Blender Foundation\\Blender 4.1\\blender.exe"}
  ],
  "blenderExecutable": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe"
}

3. If Addon Not Installed (addonInstalled: false)

The addon needs to be installed manually. Follow these steps:

Manual Installation Steps:

Method 1: Install from ZIP (Recommended)

# 1. Open Blender 4.0+
# 2. Edit > Preferences > Add-ons > Install
# 3. Select: .blender-toolkit/blender-toolkit-addon-v*.zip
# 4. Enable "Blender Toolkit WebSocket Server"

Method 2: Install from Source

# 1. Open Blender 4.0+
# 2. Edit > Preferences > Add-ons > Install
# 3. Select: plugins/blender-toolkit/skills/addon/__init__.py
# 4. Enable "Blender Toolkit WebSocket Server"

Start WebSocket Server:

  1. Open 3D View → Sidebar (press N key)
  2. Find "Blender Toolkit" tab
  3. Click "Start Server" button
  4. Default port: 9400 (auto-assigned per project)

Update Config:

  • Open config file (path shown above)
  • Set "addonInstalled": true
  • Save file

Verify Connection:

  • Try a simple command: node .blender-toolkit/bt.js list-objects
  • If successful, you'll see a list of objects in your scene

Troubleshooting:

  • If Blender path is incorrect: Update blenderExecutable in config
  • If port is in use: System will auto-assign next available port (9401-9500)
  • Check logs: .blender-toolkit/init-log.txt
  • Check Blender console for error messages

4. If Everything is Ready (addonInstalled: true)

You're all set! You can use all Blender Toolkit commands.


blender-toolkit

Automate Blender workflows with WebSocket-based real-time control. Create geometry, manage materials and modifiers, and retarget Mixamo animations to custom rigs with intelligent bone mapping.

Purpose

Provide comprehensive Blender automation through:

  • 🎨 Geometry Creation - Primitives (cube, sphere, cylinder, plane, cone, torus)
  • 🎭 Material Management - Create, assign, and configure materials
  • 🔧 Modifier Control - Add, apply, and manage modifiers
  • 🎬 Animation Retargeting - Mixamo to custom rigs with automatic bone mapping

When to Use

Use this skill when:

  • Creating 3D Geometry: User wants to create primitives or manipulate meshes
  • Managing Materials: User needs to create or assign materials with PBR properties
  • Adding Modifiers: User wants subdivision, mirror, array, or other modifiers
  • Retargeting Animations: User needs to apply Mixamo animations to custom characters
  • Batch Operations: User wants to process multiple objects or animations

Note: Mixamo does not provide an official API. Users must manually download FBX files from Mixamo.com.

Quick Start

Prerequisites Checklist

Before starting, ensure:

  • Blender 4.0+ installed
  • Blender Toolkit addon installed and enabled
  • WebSocket server started in Blender (default port: 9400)
  • Character rig loaded (for animation retargeting)

Install Addon:

1. Open Blender → Edit → Preferences → Add-ons
2. Click "Install" → Select plugins/blender-toolkit/skills/addon/__init__.py
3. Enable "Blender Toolkit WebSocket Server"
4. Start server: View3D → Sidebar (N) → "Blender Toolkit" → "Start Server"

Common Operations

Create Geometry:

# Create cube at origin
blender-toolkit create-cube --size 2.0

# Create sphere with custom settings
blender-toolkit create-sphere --radius 1.5 --segments 64

# Subdivide mesh
blender-toolkit subdivide --name "Cube" --cuts 2

Manage Objects:

# List all objects
blender-toolkit list-objects

# Transform object
blender-toolkit transform --name "Cube" --loc-x 5 --loc-y 0 --scale-x 2

# Duplicate object
blender-toolkit duplicate --name "Cube" --new-name "Cube.001" --x 3

Materials:

# Create material
blender-toolkit material create --name "RedMaterial"

# Assign to object
blender-toolkit material assign --object "Cube" --material "RedMaterial"

# Set color
blender-toolkit material set-color --material "RedMaterial" --r 1.0 --g 0.0 --b 0.0

Retarget Animation:

# Basic retargeting with UI confirmation
blender-toolkit retarget \
  --target "HeroRig" \
  --file "./Walking.fbx" \
  --name "Walking"

# Rigify preset (skip confirmation)
blender-toolkit retarget \
  --target "MyRigifyCharacter" \
  --file "./Walking.fbx" \
  --mapping mixamo_to_rigify \
  --skip-confirmation

# Show Mixamo download instructions
blender-toolkit mixamo-help Walking

Architecture

WebSocket-Based Design:

┌──────────────┐         ┌─────────────┐    WebSocket    ┌──────────────┐
│ Claude Code  │   IPC   │ TypeScript  │◄──────────────►│   Blender    │
│   (Skill)    │────────►│   Client    │   Port 9400+   │  (Addon)     │
└──────────────┘         └─────────────┘                └──────────────┘
                              │                               │
                              ▼                               ▼
                     ┌─────────────────┐         ┌────────────────────┐
                     │  - Geometry     │         │  - WebSocket       │
                     │  - Material     │         │    Server          │
                     │  - Modifier     │         │  - Command         │
                     │  - Retargeting  │         │    Handlers        │
                     │  - Bone Mapping │         │  - Bone Mapping UI │
                     └─────────────────┘         └────────────────────┘

Key Components:

  • WebSocket Server: Python addon in Blender (ports 9400-9500)
  • TypeScript Client: Sends commands via JSON-RPC
  • Bone Mapping System: Fuzzy matching with UI confirmation
  • Two-Phase Workflow: Generate → Review → Apply

Core Workflows

1. Geometry Creation Workflow

Extract Requirements:

  • Primitive type (cube, sphere, cylinder, etc.)
  • Position (x, y, z coordinates)
  • Size parameters (radius, depth, segments)
  • Optional object name

Execute:

import { BlenderClient } from 'blender-toolkit';

const client = new BlenderClient();
await client.connect(9400);

// Create sphere
const result = await client.sendCommand('Geometry.createSphere', {
  location: [0, 0, 2],
  radius: 1.5,
  segments: 64,
  name: 'MySphere'
});

console.log(`✅ Created ${result.name} with ${result.vertices} vertices`);

2. Material Assignment Workflow

Steps:

  1. Create material
  2. Assign to object
  3. Configure properties (color, metallic, roughness)

Execute:

# Create and configure material
blender-toolkit material create --name "Metal"
blender-toolkit material set-color --material "Metal" --r 0.8 --g 0.8 --b 0.8
blender-toolkit material set-metallic --material "Metal" --value 1.0
blender-toolkit material set-roughness --material "Metal" --value 0.2

# Assign to object
blender-toolkit material assign --object "Sphere" --material "Metal"

3. Animation Retargeting Workflow

Most Common Use Case

Phase 1: Setup & Generate Mapping

1. User provides:
   - Target character armature name
   - Animation FBX file path
   - (Optional) Animation name for NLA track

2. System executes:
   - Connects to Blender WebSocket
   - Imports FBX file
   - Analyzes bone structure
   - Auto-generates bone mapping (fuzzy matching)
   - Displays mapping in Blender UI for review

3. Quality Assessment:
   - Excellent (8-9 critical bones) → Safe to auto-apply
   - Good (6-7 critical bones) → Quick review recommended
   - Fair (4-5 critical bones) → Thorough review required
   - Poor (< 4 critical bones) → Manual mapping needed

Phase 2: User Confirmation

1. User reviews mapping in Blender:
   - View3D → Sidebar (N) → "Blender Toolkit" → "Bone Mapping Review"
   - Check source → target correspondence
   - Edit incorrect mappings using dropdowns
   - Use "Auto Re-map" button to regenerate if needed

2. User confirms:
   - Click "Apply Retargeting" button in Blender

3. System completes:
   - Creates constraint-based retargeting
   - Bakes animation to keyframes
   - Adds to NLA track
   - Cleans up temporary objects

Example:

import { AnimationRetargetingWorkflow } from 'blender-toolkit';

const workflow = new AnimationRetargetingWorkflow();

// If user doesn't have FBX yet
console.log(workflow.getManualDownloadInstructions('Walking'));

// After user downloads FBX
await workflow.run({
  targetCharacterArmature: 'HeroRig',
  animationFilePath: './Walking.fbx',
  animationName: 'Walking',
  boneMapping: 'auto',           // Auto-generate with fuzzy matching
  skipConfirmation: false        // Enable UI review workflow
});

Skip Confirmation (For Known-Good Mappings):

# Rigify preset - instant application
blender-toolkit retarget \
  --target "RigifyCharacter" \
  --file "./Walking.fbx" \
  --mapping mixamo_to_rigify \
  --skip-confirmation

# Excellent quality - trusted auto-mapping
blender-toolkit retarget \
  --target "MyCharacter" \
  --file "./Walking.fbx" \
  --skip-confirmation

Key Features

Auto Bone Mapping with UI Review 🌟

Recommended Workflow for unknown or custom rigs:

How It Works:

  1. Fuzzy Matching Algorithm

    • Normalizes bone names (handles various conventions)
    • Calculates similarity scores (0.0-1.0)
    • Applies bonuses for:
      • Substring matches (+0.15)
      • Common prefixes: left, right (+0.1)
      • Common suffixes: .L, .R, _l, _r (+0.1)
      • Number matching: Spine1, Spine2 (+0.1)
      • Anatomical keywords: arm, leg, hand (+0.05)
  2. Quality Assessment

    • Tracks 9 critical bones (Hips, Spine, Head, Arms, Legs, Hands)
    • Provides quality rating (Excellent/Good/Fair/Poor)
    • Recommends action based on quality
  3. UI Confirmation Panel

    • Shows complete mapping table
    • Editable dropdowns for each mapping
    • "Auto Re-map" button (regenerate)
    • "Apply Retargeting" button (proceed)

Benefits:

  • Works with any rig structure
  • No manual configuration needed
  • User verifies before application
  • Prevents animation errors

Three Bone Mapping Modes

1. Auto Mode (Recommended)

# Default: Auto-generate with UI confirmation
blender-toolkit retarget --target "Hero" --file "./Walk.fbx"
  • Fuzzy matching algorithm
  • UI review workflow
  • Best for unknown rigs

2. Rigify Mode

# Preset for Rigify control rigs
blender-toolkit retarget --target "Hero" --file "./Walk.fbx" --mapping mixamo_to_rigify
  • Predefined Mixamo → Rigify mapping
  • Instant application
  • Highest accuracy for Rigify

3. Custom Mode

// Explicit bone mapping
const customMapping = {
  "Hips": "root_bone",
  "Spine": "torso_01",
  "LeftArm": "l_upper_arm",
  // ... complete mapping
};

await workflow.run({
  boneMapping: customMapping,
  skipConfirmation: true
});
  • Full control
  • Reusable across animations
  • For non-standard rigs

Multi-Project Support

Automatic Port Management:

  • Projects automatically assigned unique ports (9400-9500)
  • Configuration persists across sessions
  • Multiple Blender instances can run simultaneously

Configuration Storage:

// ~/.claude/plugins/.../blender-config.json
{
  "projects": {
    "/path/to/project-a": { "port": 9400 },
    "/path/to/project-b": { "port": 9401 }
  }
}

Important Guidelines

When to Ask User

Use AskUserQuestion tool if:

  • Character armature name is unclear
  • Multiple rigs exist (ambiguous target)
  • Animation FBX path not provided
  • Blender WebSocket connection fails
  • User needs Mixamo download guidance

DO NOT guess:

  • Character names
  • File paths
  • Rig structures

Mixamo Download Process

Since Mixamo has no API, users must manually download:

Provide Instructions:

// Show download help
const workflow = new AnimationRetargetingWorkflow();
console.log(workflow.getManualDownloadInstructions('Walking'));
console.log(workflow.getRecommendedSettings());

Wait for User:

  • Guide user through Mixamo.com download
  • Get file path after download completes
  • Then proceed with retargeting

Troubleshooting

"Blender is not running"

# Check connection
blender-toolkit daemon-status

# If failed:
1. Verify Blender is open
2. Check addon is enabled
3. Start server: Blender → N → "Blender Toolkit""Start Server"

"Target armature not found"

  • Verify exact armature name (case-sensitive)
  • Check character is in current scene
  • Use list-objects --type ARMATURE to see available armatures

"Poor quality" bone mapping

  1. Review bone names in Blender (Edit Mode)
  2. Create custom mapping for critical bones
  3. Lower similarity threshold (default: 0.6)
  4. Check rig has proper hierarchy

"Twisted or inverted limbs"

  • Check left/right bone mapping
  • Verify bone roll in Edit Mode
  • Review constraint axes
  • Test with simple animation first

Best Practices

  1. 🌟 Use Auto Mode with UI Confirmation

    • Most reliable for unknown rigs
    • Always review critical bones (Hips, Spine, Arms, Legs)
    • Edit incorrect mappings before applying
  2. Test Simple Animations First

    • Start with Idle or Walking
    • Verify bone mapping works correctly
    • Check root motion (Hips bone)
    • Then proceed to complex animations
  3. Download Correct Format from Mixamo

    • Format: FBX (.fbx)
    • Skin: Without Skin
    • FPS: 30 fps
    • Keyframe Reduction: None
  4. Check Quality Before Auto-Apply

    • Excellent (8-9 critical) → Safe to skip confirmation
    • Good (6-7 critical) → Quick review
    • Fair (4-5 critical) → Thorough review
    • Poor (< 4 critical) → Use custom mapping
  5. Save Custom Mappings for Reuse

    • Document successful mappings
    • Reuse for same character's animations
    • Share with team members
  6. Let System Manage Ports

    • Don't manually configure ports
    • System handles multi-project conflicts
    • Configuration persists automatically

References

Detailed documentation in references/ folder:

  • commands-reference.md - Complete CLI command reference

    • All geometry, object, material, modifier commands
    • Detailed options and examples
    • Port management and tips
  • bone-mapping-guide.md - Bone matching system details

    • Fuzzy matching algorithm explained
    • Quality assessment metrics
    • Common mapping patterns (Rigify, UE4, Unity)
    • Troubleshooting mapping issues
  • workflow-guide.md - Complete workflow documentation

    • Step-by-step retargeting workflow
    • Mixamo download process
    • Two-phase confirmation details
    • Batch processing workflows
    • Multi-project workflows
  • addon-api-reference.md - WebSocket API documentation

    • JSON-RPC protocol details
    • All API methods and parameters
    • Error handling
    • Security and performance tips

When to Load References:

  • User needs detailed command options
  • Troubleshooting complex issues
  • Understanding bone mapping algorithm
  • Setting up advanced workflows
  • API integration requirements

Output Structure

.blender-toolkit/
├── skills/scripts/          # Local TypeScript scripts (auto-initialized)
│   ├── src/                 # Source code
│   ├── dist/                # Compiled JavaScript
│   └── node_modules/        # Dependencies
├── bt.js                    # CLI wrapper
├── logs/                    # Log files
│   ├── typescript.log
│   ├── blender-addon.log
│   └── error.log
└── .gitignore

Shared config:
~/.claude/plugins/.../blender-config.json

Notes

  • Port range: 9400-9500 (Browser Pilot uses 9222-9322)
  • File formats: FBX recommended, Collada (.dae) supported
  • Blender version: 4.0+ required (2023+)
  • Auto-initialization: SessionStart hook installs and builds scripts
  • No manual daemon management: System handles everything
  • WebSocket protocol: JSON-RPC 2.0