blender-toolkit
Blender automation toolkit with CLI for geometry, materials, modifiers, collections, animation retargeting, and WebSocket-based real-time control
â ïž Status: 𧪠Experimental (v1.4.4)
This plugin is currently in experimental stage. APIs and features may change.
Blender automation toolkit for Claude Code - WebSocket-based real-time Blender control with geometry, materials, modifiers, collections, and Mixamo animation retargeting
Recent Updates (v1.4.4)
Security Improvements:
- ð Removed
--trusted-hostflags from pip install (prevents MITM attacks) - â Enhanced SSL/TLS certificate validation for PyPI
Dependency Management:
- ðŠ Using
requirements.txtfor version-controlled dependencies - â Fallback mechanism when requirements.txt is missing
- â
Simplified
.dist-infoexclusion logic
ð¯ Features
Core Features
- ð¬ Animation Retargeting: Mixamo ì ëë©ìŽì ì ì¬ì©ì ìºëŠí°ì ìë 늬íê²í
- ð§ Fuzzy Bone Matching: 60+ bones ì§ì, ì ì¬ë êž°ë° ìë ë§€ì¹ (ìê°ëœ, ë°ê°ëœ í¬íš)
- ð WebSocket Integration: ì€ìê° Blender ì ìŽ (í¬íž: 9400~9500)
- â 2-Phase Workflow: UI íìž ëšê³ë¡ ë§€í ê²ìŠ ê°ë¥
- ðš Multi-Project Support: íë¡ì ížë³ ë 늜ì ìž í¬íž ë° ì€ì êŽëЬ
- ð§ Rigify Compatible: Rigify 늬귞 ìë ì§ì
New in v1.3.0
- ðš Material Management: Principled BSDF êž°ë° ëšží°ëŠ¬ìŒ ìì±, ìì± ì ìŽ (base color, metallic, roughness, emission)
- ð§ Advanced Modifier Control: 30+ modifiers ì§ì, list/remove/toggle/modify/reorder ì 첎 ì ìŽ
- ðŠ Collection Management: ì¬ ê³ìžµ 구조 êŽëЬ (create, add/remove objects, delete)
- ðïž Modular Architecture: 몚ëíìŽìŽë¥Œ ë³ë 몚ëë¡ ë¶ëЬíì¬ íì¥ì± í¥ì
- â¡ 30+ New CLI Commands: material, modifier, collection ëë©ìžì ê±žì¹ ìë¡ìŽ ëª ë ¹
v1.2.0 Features
- ðš Geometry Creation: CLI ë° WebSocketì íµí ëí ìì± (Cube, Sphere, Cylinder, Plane, Cone, Torus)
- ð§ Object Manipulation: ì€ëžì íž ë³í, ë³µì , ìì ë± ì 첎 ì ìŽ
- â¡ Vertex Editing: ë²í ì€ ìŽë, ë©ì¬ ìžë¶í, íìŽì€ ëì¶ ë± ê³ êž ížì§
- ð© Modifier Support: 몚ëíìŽìŽ ì¶ê° ë° ì ì© (Subdivision, Mirror, Array, etc.)
- ð» CLI Interface: Browser-pilot ì€íìŒì ëª ë ¹ì€ ìží°íìŽì€
- ð Geometry API Documentation: ì 첎 geometry API ë íŒë°ì€ 묞ì
v1.1.0 Features
- ð Logging System: winston (TypeScript) + logging (Python) - ëë²ê¹ ë° ëªšëí°ë§
- ð§© Modular Architecture: íì¥ ê°ë¥í ëª ë ¹ ížë€ë¬ 구조 (commands/, utils/)
- ð Complete API Documentation: WebSocket commands, bone mapping guide, workflow examples
- ð¯ Quality Reports: ë§€í íì§ íê° ìì€í (excellent/good/fair/poor)
- ð Manual Download Workflow: Mixamo API ììŽ ìë ë€ìŽë¡ë ë°©ììŒë¡ ìì ì± í볎
ðŠ Installation
Install Plugin
# Add marketplace
/plugin marketplace add https://github.com/Dev-GOM/claude-code-marketplace.git
# Install plugin
/plugin install blender-toolkit@dev-gom-plugins
Or install directly:
/plugin add https://github.com/Dev-GOM/claude-code-marketplace/tree/main/plugins/blender-toolkit
Automatic Setup (Recommended)
Blender Toolkit uses SessionStart hooks to automatically initialize your project:
- Start Session - Hook will automatically:
- Detect installed Blender versions (4.0+)
- Create project configuration (port 9400-9500)
- Copy and build local TypeScript scripts
- Attempt background addon installation
- Check Status - Review installation logs:
cat .blender-toolkit/init-log.txt
Building Addon Package
The SessionStart hook automatically creates a ZIP package in .blender-toolkit/ for distribution:
- Auto-generated: Created during session initialization
- Version tracking: Only rebuilds when plugin version changes
- Location:
.blender-toolkit/blender-toolkit-addon-v{version}.zip
Manual Build:
# Build addon ZIP
node .blender-toolkit/bt addon-build
# Force rebuild (ignore version check)
node .blender-toolkit/bt addon-build --force
# Check available commands
node .blender-toolkit/bt --help
Package Contents:
- â
All addon Python files (
*.py) - â
Command modules (
commands/) - â
Utility modules (
utils/) - â WebSocket server implementation
- â Development configs (
.pylintrc,pyrightconfig.json) - â Python cache (
__pycache__,*.pyc)
Manual Addon Installation
If automatic installation fails, install manually:
Option 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"
Option 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
In Blender:
- Sidebar (N key) > "Blender Toolkit" tab
- Click "Start Server" button
- Port shown in console (default: 9400)
âïž Configuration
Shared Config Location: ~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/blender-toolkit/skills/blender-config.json
Manual Blender Path Configuration
If Blender is not automatically detected, you can manually specify the path:
- Open the config file:
~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/blender-toolkit/skills/blender-config.json - Add or update the
blenderExecutablefield:
{
"blenderExecutable": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe",
"blenderVersion": "4.2.0",
"projects": { ... }
}
Common Blender Paths:
- Windows:
C:\Program Files\Blender Foundation\Blender 4.x\blender.exe - macOS:
/Applications/Blender.app/Contents/MacOS/Blender - Linux:
/usr/bin/blenderor~/blender/blender
Example Configuration:
{
"blenderExecutable": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe",
"blenderVersion": "4.2.0",
"detectedBlenderVersions": [
{
"version": "4.2.0",
"path": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe",
"major": 4,
"minor": 2
}
],
"addonInstalled": false,
"addonInstallAttempted": true,
"lastInstallAttempt": "2025-11-10 12:34:56",
"projects": {
"my-project": {
"rootPath": "D:\\Work\\my-project",
"port": 9400,
"outputDir": ".blender-toolkit",
"lastUsed": "2025-11-10 12:34:56",
"autoCleanup": false,
"autoRestore": true
}
}
}
Configuration Fields:
| Field | Type | Description |
|---|---|---|
blenderExecutable | string | Path to Blender executable |
blenderVersion | string | Detected Blender version |
detectedBlenderVersions | array | All detected Blender installations |
addonInstalled | boolean | User-set flag for addon installation status |
addonInstallAttempted | boolean | Whether automatic installation was attempted |
lastInstallAttempt | string | Timestamp of last installation attempt |
projects | object | Per-project configuration (port, paths, etc.) |
To Change Blender Version:
- Open config file (path above)
- Edit
blenderExecutableto desired version fromdetectedBlenderVersions - Save and restart Claude Code session
ð Quick Start
Ʞ볞 늬íê²í ìì
import { AnimationRetargetingWorkflow } from 'blender-retargeting';
const workflow = new AnimationRetargetingWorkflow();
await workflow.run({
targetCharacterArmature: 'MyCharacter', // ì¬ì©ì ìºëŠí° ìŽëŠ
animationFilePath: './animations/Walking.fbx', // ë€ìŽë¡ëí FBX íìŒ
animationName: 'Walking',
boneMapping: 'auto', // Fuzzy matching ìë ë§€í
skipConfirmation: false, // UI íìž ëšê³ íì±í
});
Mixamo ìë ë€ìŽë¡ë
Mixamoë ê³µì API륌 ì ê³µíì§ ììŒë¯ë¡ ìë ë€ìŽë¡ëê° íìí©ëë€:
- Mixamo ì¹ì¬ìŽíž 방묞
- ìíë ì ëë©ìŽì ê²ì
- ë€ìŽë¡ë ì€ì :
- Format: FBX (.fbx)
- Skin: Without Skin (ì ëë©ìŽì ë§)
- FPS: 30 fps
- Keyframe Reduction: None
./animations/íŽëì ì ì¥
Claude Codeì íšê» ì¬ì©
User: "ëŽ ìºëŠí° 'Hero'ì Mixamo Walking ì ëë©ìŽì ì ì ì©íŽì€"
Claudeê° ìëìŒë¡ ì€í:
- â Blender ì°ê²° (WebSocket)
- ð 'Hero' ìºëŠí° íìž
- ð¥ ë€ìŽë¡ë ìëŽ ì ê³µ (ìë ë€ìŽë¡ë íì)
- ðŠ FBX ìí¬íž
- ð§ Fuzzy matchingìŒë¡ 볞 ìë ë§€í (60+ bones)
- ð ë§€í íì§ ë³Žê³ ì ìì±
- ðš Blender UIì ë§€í íì
- âžïž ì¬ì©ì íìž ëêž°
- ð¬ ì ëë©ìŽì 늬íê²í
- ð NLA ížë ì¶ê°
ð» CLI Commands
Blender Toolkitì browser-pilot ì€íìŒì CLI ìží°íìŽì€ë¥Œ ì ê³µí©ëë€:
Geometry Creation
# Cube ìì±
npm run bt:create-cube -- -x 0 -y 0 -z 0 --size 2.0 --name "MyCube"
# Sphere ìì±
npm run bt:create-sphere -- --radius 1.5 --segments 64 --rings 32
# Cylinder ìì±
npm run bt:create-cylinder -- --radius 0.5 --depth 3.0
# Plane ìì± (ë°ë¥)
npm run bt:create-plane -- --size 10.0 --name "Ground"
# Cone ìì±
blender-toolkit create-cone --radius 2.0 --depth 4.0
# Torus ìì±
blender-toolkit create-torus --major-radius 2.0 --minor-radius 0.5
Object Operations
# ì€ëžì íž ëª©ë¡ ì¡°í
npm run bt:list-objects
npm run bt:list-objects -- --type MESH
# ì€ëžì íž ë³í
npm run bt:transform -- --name "Cube" --loc-x 5.0 --loc-y 0 --loc-z 2.0
npm run bt:transform -- --name "Sphere" --scale-x 2.0 --scale-y 2.0 --scale-z 2.0
# ì€ëžì íž ë³µì
blender-toolkit duplicate --name "Cube" --new-name "CubeCopy" -x 5.0
# ì€ëžì íž ìì
npm run bt:delete -- --name "Cube"
Vertex & Mesh Editing
# ë²í
ì€ ì¡°í
blender-toolkit get-vertices --name "Cube"
# ë²í
ì€ ìŽë
blender-toolkit move-vertex --name "Cube" --index 0 -x 2.0 -y 1.0 -z -1.0
# ë©ì¬ ìžë¶í
blender-toolkit subdivide --name "Cube" --cuts 2
Modifiers
# Subdivision modifier ì¶ê°
blender-toolkit add-modifier --name "Cube" --type SUBSURF --levels 2
# Modifier ì ì©
blender-toolkit apply-modifier --name "Cube" --modifier "Subdivision"
Animation Retargeting
# ì ëë©ìŽì
늬íê²í
npm run bt:retarget -- --target "MyCharacter" --file "./animations/Walking.fbx"
# Mixamo ëìë§
blender-toolkit mixamo-help
blender-toolkit mixamo-help "Walking"
Claude Codeì íšê» ì¬ì©
Claudeìê² ë€ì곌 ê°ìŽ ìì²í ì ììµëë€:
"Blenderì íëžë¥Œ ìì±íê³ í¬êž°ë¥Œ 3ìŒë¡ ì€ì íŽì€"
"구륌 ë§ë€ê³ ìì¹ë¥Œ (5, 0, 0)ìŒë¡ ìŽëììŒì€"
"í멎ì ë§ë€ê³ subdivision modifier륌 ì¶ê°íŽì€"
"íëžë¥Œ ë³µì íê³ Xì¶ìŒë¡ 5ë§íŒ ìŽëììŒì€"
Claudeê° ìëìŒë¡ ì ì í CLI ëª ë ¹ìŽë WebSocket API륌 ì€íí©ëë€.
ðïž Architecture
âââââââââââââââââââ ââââââââââââââââââââ âââââââââââââââââââ
â Claude Code ââââââââââºâ TypeScript ââââââââââºâ Blender â
â (Skill) â IPC â WebSocket â WS â (Python â
â â â Client â 9400 â Addon) â
âââââââââââââââââââ ââââââââââââââââââââ âââââââââââââââââââ
â â
ââââââââââŽââââââââââ âââââââââŽâââââââââ
â Logging System â â UI Panel â
â (winston) â â (Review/Edit) â
ââââââââââââââââââââ ââââââââââââââââââ
Components
TypeScript Client:
client.ts: WebSocket íµìretargeting.ts: 늬íê²í ë¡ì§config.ts: íë¡ì ížë³ ì€ì êŽëЬlogger.ts: winston ë¡ê¹ ìì€í
Python Addon:
commands/: 몚ëíë ëª ë ¹ ížë€ë¬armature.py: ìë§ì¶ìŽ ì¡°íretargeting.py: 늬íê²í ì€íanimation.py: ì ëë©ìŽì êŽëЬbone_mapping.py: 볞 ë§€í ì ì¥/ë¡ëimport_.py: FBX/DAE ìí¬ížgeometry.py: ëí ìì± ë° ë©ì¬ ížì§ (v1.2.0)
utils/: ì ížëŠ¬í° ëªšëbone_matching.py: Fuzzy matching ìê³ ëŠ¬ìŠlogger.py: Python logging ìì€í
CLI Commands (v1.2.0):
cli/cli.ts: Commander êž°ë° CLI ìížëЬcli/commands/:geometry.ts: ëí ìì± ëª ë ¹object.ts: ì€ëžì íž ì¡°ì ëª ë ¹modifier.ts: 몚ëíìŽìŽ ëª ë ¹retargeting.ts: 늬íê²í ëª ë ¹
ð§ Fuzzy Bone Matching
Algorithm
60+ bones륌 ì§ìíë ê³ êž ë§€ì¹ ìê³ ëŠ¬ìŠ:
- Name Normalization: ì묞ì ë³í, í¹ì묞ì ì ê±°
- Similarity Calculation: SequenceMatcher + 볎ëì€ ì ì
- Substring match (+0.15)
- Prefix/Suffix match (+0.1)
- Digit match (+0.1)
- Keyword match (+0.05)
- Two-Phase Matching:
- Phase 1: Exact matching (known aliases)
- Phase 2: Fuzzy matching (60% threshold)
Supported Bones
- Body: Hips, Spine, Spine1, Spine2, Neck, Head (6ê°)
- Arms: Shoulders, Arms, ForeArms, Hands (8ê°)
- Legs: UpLegs, Legs, Feet, ToeBases (8ê°)
- Fingers: Thumb, Index, Middle, Ring, Pinky (ì¢ì° ê° 15ê°, ìŽ 30ê°)
Total: 60+ bones
Quality Assessment
ë§€í í ìë íì§ íê°:
| Quality | Critical Bones | Description |
|---|---|---|
| Excellent | 8-9 / 9 | ìë 늬íê²í ê¶ì¥ |
| Good | 6-7 / 9 | ê°ëší ê²í í ì§í |
| Fair | 4-5 / 9 | ì² ì í ê²í íì |
| Poor | < 4 / 9 | 컀ì€í ë§€í ì¬ì© |
ð Project Structure
plugins/blender-toolkit/
âââ .claude-plugin/
â âââ plugin.json # íë¬ê·žìž ë©íë°ìŽí°
âââ skills/
â âââ blender-retargeting/
â âââ SKILL.md # ì€í¬ ì ì (Claudeì©)
â âââ addon/
â â âââ __init__.py # Blender Python ì ëìš
â â âââ commands/ # ëª
ë ¹ ížë€ë¬ (몚ëí)
â â â âââ armature.py
â â â âââ retargeting.py
â â â âââ animation.py
â â â âââ bone_mapping.py
â â â âââ import_.py
â â âââ utils/ # ì ížëЬí°
â â âââ bone_matching.py # Fuzzy matching
â â âââ logger.py # Logging
â âââ scripts/
â â âââ package.json
â â âââ tsconfig.json
â â âââ src/
â â âââ index.ts # ë©ìž ìí¬íë¡ì°
â â âââ constants/
â â âââ utils/
â â â âââ logger.ts # Winston logger
â â âââ blender/
â â âââ client.ts # WebSocket íŽëŒìŽìžíž
â â âââ config.ts # ì€ì êŽëЬ
â â âââ retargeting.ts # 늬íê²í
ë¡ì§
â âââ references/ # API 묞ì
â âââ websocket-commands.md # WebSocket ëª
ë ¹ ë íŒë°ì€
â âââ bone-mapping-guide.md # 볞 ë§€í ê°ìŽë
â âââ workflow-examples.md # ìí¬íë¡ì° ìì
âââ README.md
ðš Bone Mapping Strategies
1. Auto Mapping (ê¶ì¥)
Fuzzy matchingìŒë¡ ìë ë§€í:
boneMapping: 'auto'
ì¥ì :
- 60+ bones ìë ë§€ì¹
- ë€ìí ë€ìŽë° 컚벀ì ì§ì
- íì§ ë³Žê³ ì ì ê³µ
2. Preset Mapping
믞늬 ì ìë ë§€í ì¬ì©:
boneMapping: 'mixamo_to_rigify'
ì¬ì© ê°ë¥í í늬ì :
mixamo_to_rigify: Rigify 늬귞ì©
3. Custom Mapping
ìë ë§€í:
boneMapping: 'custom',
customBoneMap: {
'Hips': 'root_bone',
'Spine': 'spine_01',
'LeftArm': 'arm_L',
// ...
}
ð 2-Phase Workflow
Phase 1: Auto-Generate Mapping
- Fuzzy matching ì€í
- 60+ bones ìë ë§€í
- íì§ ë³Žê³ ì ìì±
- Blender UIì ë§€í íì
Phase 2: User Review & Confirm
- Blender UIìì ë§€í ê²í
- ì못ë ë§€í ìì (ëë¡ë€ìŽ)
- "Apply Retargeting" ë²íŒ íŽëŠ
- íìž í 늬íê²í ì§í
UI íìž ê±Žëë°êž°:
skipConfirmation: true // ìë ì§í
ð Logging System
Enable Logging
# í겜 ë³ì ì€ì
export DEBUG=1
# ë¡ê·ž íìž
tail -f .blender-toolkit/logs/typescript.log
tail -f .blender-toolkit/logs/blender-addon.log
Log Files
.blender-toolkit/logs/
âââ typescript.log # TypeScript íŽëŒìŽìžíž ë¡ê·ž
âââ blender-addon.log # Python ì ëìš ë¡ê·ž
âââ error.log # ìë¬ ë¡ê·žë§
Log Levels
DEBUG: ììž ëë²ê¹ ì 볎INFO: ìŒë° ì 볎 (Ʞ볞)WARN: ê²œê³ ë©ìì§ERROR: ìë¬ ë©ìì§
ð ïž Configuration
íë¡ì ížë³ ì€ì
{
"rootPath": "/path/to/project",
"port": 9400,
"outputDir": ".blender-toolkit",
"lastUsed": "2025-11-10T12:00:00Z",
"autoCleanup": true
}
ì€ì íìŒ ìì¹:
~/.claude/plugins/marketplaces/dev-gom-plugins/plugins/blender-toolkit/skills/blender-config.json
í¬íž êŽëЬ
- Ʞ볞 í¬íž: 9400
- ë²ì: 9400~9500
- ìë í ë¹: íë¡ì ížë³ ë 늜 í¬íž
- ì¶©ë ë°©ì§: Browser-Pilot (9222~9322)곌 ë¶ëЬ
ðš Troubleshooting
"Connection failed"
# 1. Blender ì€í ì€ìžì§ íìž
# 2. ì ëìš íì±í íìž
# 3. WebSocket ìë² ìì íìž
# 4. í¬íž ì¶©ë íìž
lsof -i :9400
# 5. ë¡ê·ž íìž
tail -f .blender-toolkit/logs/typescript.log
"Armature not found"
# Blender Python ìœììì íìž
import bpy
print([obj.name for obj in bpy.data.objects if obj.type == 'ARMATURE'])
"Bone mapping failed" or "Low quality"
-
UIìì ìë ê²í :
skipConfirmation: falseì€ì - Blender UIìì ë§€í íìž ë° ìì
-
컀ì€í ë§€í ì¬ì©:
boneMapping: 'custom',
customBoneMap: {
'Hips': 'actual_bone_name_in_your_rig',
// 몚ë 죌ì 볞 ìë ë§€í
}
- ë¡ê·ž íìž:
DEBUG=1 node .blender-toolkit/bt.js retarget ...
ð API Documentation
ììží API 묞ìë references/ íŽë ì°žì¡°:
- WebSocket Commands: 몚ë WebSocket ëª ë ¹ ë íŒë°ì€
- Bone Mapping Guide: 볞 ë§€í ì ëµ ë° ìê³ ëŠ¬ìŠ
- Workflow Examples: 12ê°ì§ ì€ì ìì
ð Examples
1. ëšìŒ ì ëë©ìŽì 늬íê²í (UI íìž)
await workflow.run({
targetCharacterArmature: 'Hero',
animationFilePath: './animations/Walking.fbx',
animationName: 'Walking',
boneMapping: 'auto',
skipConfirmation: false, // UIìì íìž
});
2. ì¬ë¬ ì ëë©ìŽì ë°°ì¹ ì²ëЬ
const animations = [
{ file: './animations/Walking.fbx', name: 'Walking' },
{ file: './animations/Running.fbx', name: 'Running' },
{ file: './animations/Jumping.fbx', name: 'Jumping' },
];
for (const anim of animations) {
await workflow.run({
targetCharacterArmature: 'Hero',
animationFilePath: anim.file,
animationName: anim.name,
boneMapping: 'auto',
skipConfirmation: true, // ë°°ì¹ ì²ëЬ ì ìë ì§í
});
console.log(`â
${anim.name} completed`);
}
3. Rigify ìºëŠí° (í늬ì )
await workflow.run({
targetCharacterArmature: 'RigifyCharacter',
animationFilePath: './animations/SwordSlash.fbx',
animationName: 'SwordSlash',
boneMapping: 'mixamo_to_rigify', // Rigify í늬ì
});
4. 컀ì€í ë§€í
await workflow.run({
targetCharacterArmature: 'CustomRig',
animationFilePath: './animations/Dancing.fbx',
animationName: 'Dancing',
boneMapping: 'custom',
customBoneMap: {
'Hips': 'Root',
'Spine': 'Spine_01',
'Spine1': 'Spine_02',
'Neck': 'Neck_01',
'Head': 'Head_01',
'LeftArm': 'UpperArm_L',
'LeftForeArm': 'ForeArm_L',
'LeftHand': 'Hand_L',
// ...
},
});
ð¯ Best Practices
- Fuzzy Matching íì©: ìë ë§€í + UI íìžìŽ ê°ì¥ íšìšì
- íì§ ë³Žê³ ì íìž: Excellent/Good ìŽììŒ ë ìë ì§í
- ëšìí ì ëë©ìŽì ë¶í°: Walking, Idleë¡ ë§€í ê²ìŠ í ë³µì¡í ì ëë©ìŽì ì§í
- íì€ ëŠ¬ê·ž ì¬ì©: Rigify ìë 늬귞 ê¶ì¥
- Without Skin ë€ìŽë¡ë: Mixamoìì "Without Skin" ì í
- ë¡ê¹
íì±í: 묞ì ë°ì ì
DEBUG=1ì€ì - NLA êŽëЬ: ì¬ë¬ ì ëë©ìŽì ì NLA ížëìŒë¡ ì 늬
- í늬뷰 íìž: íì ì ëë©ìŽì íìž í ìµì¢ ì ì¥
ð Integration
Claude Code Skill
SKILL.mdì ì ìë ìí¬íë¡ì°ë¥Œ Claudeê° ìë ì€í:
---
name: blender-retargeting
description: Blender animation retargeting with Mixamo integration
allowed-tools: Bash, Read, Write, Glob
---
API Reference
ììží API 묞ìë references/websocket-commands.md ì°žì¡°
// BlenderClient - WebSocket íµì
const client = new BlenderClient(port);
await client.connect();
await client.sendCommand('Armature.list');
// RetargetingController - 늬íê²í
ë¡ì§
const controller = new RetargetingController(client);
const boneMap = await controller.autoMapBones('Mixamo', 'Hero');
await controller.retarget({ sourceArmature, targetArmature, boneMapping });
ð Changelog
v1.2.0 (2025-11-10)
- ðš Geometry creation API ì¶ê° (Cube, Sphere, Cylinder, Plane, Cone, Torus)
- ð§ Object manipulation commands (transform, duplicate, delete, list)
- â¡ Vertex editing operations (move, get, subdivide, extrude)
- ð© Modifier support (add, apply)
- ð» CLI interface 구í (browser-pilot ì€íìŒ)
- ð Geometry API 묞ì ìì± (geometry-api.md)
- ðŠ package.jsonì bin ë° ì€í¬ëŠœíž ëª ë ¹ ë±ë¡
- ð§© TypeScript CLI commands 몚ëí (geometry, object, modifier, retargeting)
v1.1.0 (2025-11-10)
- âš Fuzzy matching ìê³ ëŠ¬ìŠ êµ¬í (60+ bones)
- ð ë¡ê¹ ìì€í ëì (winston + logging)
- ð§© íìŽì¬ ìœë 몚ëí (commands/, utils/)
- ð ìì í API 묞ì ìì± (references/)
- ð¯ ë§€í íì§ ë³Žê³ ì ìì€í
- ð 2-Phase UI íìž ìí¬íë¡ì°
- ð« Mixamo API ì ê±° (ìë ë€ìŽë¡ëë¡ ì í)
v1.0.0 (2025-10-29)
- ð Initial release
- ð¬ Ʞ볞 ì ëë©ìŽì 늬íê²í
- ð€ Auto bone mapping
- ð WebSocket integration
ð€ Contributing
- Fork the repository
- Create your feature branch
- 컀ì€í
볞 ë§€í í늬ì
ì¶ê°:
addon/commands/retargeting.pyìget_preset_bone_mapping()íšìì í늬ì ì¶ê°
- 묞ì ì ë°ìŽíž
- í ì€íž
ð License
Apache License 2.0 - See LICENSE file for details
ð Credits
- Blender Foundation: Blender 3D software
- Mixamo (Adobe): ì ëë©ìŽì 늬ìì€
- Claude Code Community: íŒëë°± ë° í ì€íž
ð Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: SKILL.md
ðQuick Installation
/plugin install blender-toolkit@dev-gom-pluginsRun this command in Claude Code to install the plugin.