A Blender plugin for animating humanoid rigs using motion capture data from MediaPipe.
- Real-time motion capture using MediaPipe
- Support for pose, face, and hand tracking
- Modular, extensible architecture with clear separation of detection, mapping, rig, UI, and utility logic
- Configurable bone mappings for Mixamo, Rigify, and Maya rigs
🚧 Under Development 🚧
The project is currently in active development. Core functionality is implemented but may have bugs or missing features.
- Clone the repository:
git clone https://github.com/kreanimator/AniMate.git
cd AniMate- Install Python dependencies:
pip install -r requirements.txt- Package the Blender addon:
bash package_addon.shThis will create animate_addon.zip in your project root.
- Install the Blender addon:
- Open Blender
- Go to Edit > Preferences > Add-ons
- Click "Install" and select the
animate_addon.zipfile you just created - Enable the addon by checking the box next to "Animation: AniMate"
Important: If you are using Blender from Snap, Flatpak, or a custom build, you must manually install all dependencies from requirements.txt into Blender's Python environment.
- Find Blender's Python executable:
blender --background --python-expr "import sys; print(sys.executable)" # Example output: /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/bin/python3.11
- Find Blender's site-packages directory:
blender --background --python-expr "import site; print(site.getsitepackages()[0])" # Example output: /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/lib/python3.11/site-packages
- For each dependency in
requirements.txt, run:/path/to/blender/python/bin/python3.11 -m pip install --target=/path/to/blender/python/lib/python3.11/site-packages <package> # Example: /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/bin/python3.11 -m pip install --target=/home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/lib/python3.11/site-packages packaging /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/bin/python3.11 -m pip install --target=/home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/lib/python3.11/site-packages opencv-python /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/bin/python3.11 -m pip install --target=/home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/lib/python3.11/site-packages mediapipe /home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/bin/python3.11 -m pip install --target=/home/youruser/snap/blender-4.3.2-linux-x64/4.3/python/lib/python3.11/site-packages Pillow
Note: You must repeat this for every dependency in requirements.txt.
AniMate/
├── __init__.py # Addon entry point and registration
├── bpy_ui/ # Blender UI panels, operators, and properties
│ ├── panels.py
│ ├── operators.py
│ ├── properties.py
│ └── __init__.py
├── detection/ # MediaPipe-based detection logic
│ ├── mediapipe_detector.py
│ ├── __init__.py
│ └── README.md
├── mapping/ # Rig mapping logic for different rig types
│ ├── mixamo_mapping.py
│ ├── rigify_mapping.py
│ ├── maya_mapping.py
│ ├── base_mappings.py
│ ├── mapping_factory.py
│ ├── __init__.py
│ ├── README.md
│ ├── README.txt
│ └── README.rst
├── rig/ # Rig management, driver, and transfer logic
│ ├── blender_mapper.py
│ ├── drivers.py
│ ├── transfer.py
│ └── __init__.py
├── utils/ # Utility functions (math, coordinate transforms, etc)
│ ├── math_utils.py
│ └── __init__.py
- bpy_ui/: All Blender UI logic (panels, operators, properties). Defines the AniMate panel, capture controls, and user settings.
- detection/: MediaPipe-based detection logic for pose, hands, and face. Provides real-time landmark extraction.
- mapping/: Rig mapping classes for Mixamo, Rigify, and Maya. Handles bone hierarchy, landmark-to-bone mapping, axis corrections, and rotation limits.
- rig/: Core rig management, driver creation, and transfer logic. Handles driver empties, constraints, and applying landmark data to the rig.
- utils/: Math and coordinate transformation utilities for converting MediaPipe data to Blender space.
- Open Blender and load your humanoid rig
- In the 3D Viewport, open the sidebar (N key)
- Go to the "AniMate" tab
- Select your armature in the "Target Armature" field
- Configure detection settings (pose, face, hands)
- Click "Start Capture" to begin motion capture
- Landmarks will be drawn on the camera preview, and the rig will animate in real time if mapping is correct
AniMate is designed for easy extension:
- Add new rig types by creating a new mapping class in
mapping/and registering it inmapping_factory.py. - Add new detection logic in
detection/. - Extend the UI by adding new panels or operators in
bpy_ui/. - Add math or coordinate utilities in
utils/.
- Fork the repository: https://github.com/kreanimator/AniMate
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/AniMate.git cd AniMate - Set up your development environment:
pip install -r requirements.txt
-
Keep your fork up to date:
# Add upstream remote git remote add upstream https://github.com/kreanimator/AniMate.git # Fetch upstream changes git fetch upstream # Update your main branch git checkout main git merge upstream/main
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes and commit:
git add . git commit -m "Add: your feature description"
-
Push to your fork:
git push origin feature/your-feature-name
-
Ensure your code follows our standards:
- Follow PEP 8 guidelines
- Add docstrings for new functions/classes
- Write tests for new features
- Update documentation if needed
-
Create a Pull Request:
- Go to your fork on GitHub
- Click "New Pull Request"
- Select your feature branch
- Fill in the PR template
- Submit the PR
-
Keep your PR up to date:
git fetch upstream git checkout feature/your-feature-name git merge upstream/main git push origin feature/your-feature-name
-
Python Code Style
- Follow PEP 8 guidelines
- Use meaningful variable and function names
- Add docstrings for all public functions and classes
- Keep functions focused and small
- Use type hints where appropriate
-
Commit Messages
- Use clear and descriptive messages
- Start with a verb in present tense (e.g., "Add", "Fix", "Update")
- Reference issue numbers when applicable
- Keep messages concise but informative
-
Testing
- Write tests for new features
- Ensure all tests pass before submitting PR
- Update tests when modifying existing features
-
Documentation
- Update README.md for significant changes
- Add docstrings for new functions/classes
- Update inline comments when modifying complex logic
This project is licensed under the MIT License - see the LICENSE file for details.
- MediaPipe for the motion capture technology
- Blender for the 3D animation platform
To install this addon in Blender, you need to package all required folders into a single zip file. Use the provided shell script:
- Open a terminal in your project root.
- Run:
bash package_addon.sh
- This will create
animate_addon.zipin your project root. - In Blender, go to
Edit > Preferences > Add-ons > Install, and selectanimate_addon.zip. - Enable the addon in the list.
The script will include:
animate_addon/(main addon code)rig/(rig logic and mappings)data/(any data files needed)
If you add more dependencies (like utils/ or examples/), uncomment the relevant lines in package_addon.sh.
A sample Blender file is provided for development and testing:
- data/sample_scene_with_mixamo_rig.blend
This file contains a human mesh with a Mixamo rig and can be used as a test scene for AniMate development in Blender. Load this file to quickly test the addon with a compatible rig and mesh setup.
AniMate is actively evolving! Planned features for future releases include:
- Motion capture from image/video files: Animate rigs using prerecorded video or image sequences, not just live camera input.
- Multiple rig type support: Seamless switching and mapping for Mixamo, Rigify, Maya, and custom rigs.
- Locked posing and region isolation: Lock specific bones or regions (e.g., hands, feet, head) to prevent unwanted movement during capture.
- Improved UI/UX: More intuitive controls, status indicators, and capture feedback.
- Advanced retargeting and smoothing: Better motion smoothing, filtering, and retargeting options.
- Batch processing and automation: Tools for automating capture and animation workflows.
- More extensibility hooks: Easier ways for developers to add new rig types, mappings, or detection modes.
If you have feature requests or want to contribute, please open an issue or pull request!