WildPyRigMotion provides a Python binding for RigLogic. It is designed to be used in python softwares like Blender.
RigLogic is part of Unreal Engine and MetaHuman. It is used to manage advanced character rigs.
WildPyRigMotion does not contain or redistribute the RigLogic source code or binaries.
RigLogic is proprietary technology developed by Epic Games as part of Unreal Engine and MetaHuman.
To use WildPyRigMotion, you must already have a valid installation of Unreal Engine with the "3Lateral RigLogic Plugin for Facial Animation" provided by Epic Games, under Epic's own license terms.
This project is an independent open-source binding.
It is not affiliated with, endorsed by, or sponsored by Epic Games.
- https://www.youtube.com/watch?v=QXGRq7a6ZqA
- https://cdn2.unrealengine.com/rig-logic-whitepaper-v2-5c9f23f7e210.pdf
- Unreal Engine (Source code required)
- CMake (Version 3.13+ recommended)
- Python (Version 3.7+ recommended)
Run the following commands, replacing path/to/UnrealEngine and path/to/python with your actual paths:
cmake -B build -DRIGLOGIC_SOURCE_DIR="path/to/UnrealEngine/Engine/Plugins/Animation/RigLogic/Source/RigLogicLib" -DPYTHON_EXECUTABLE="path/to/python/python.exe"
cmake --build build --config ReleaseOnce WildPyRigMotion is installed, here is an example of how to use it:
from pydna import BinaryStreamReader, FileStream, DataLayer
stream = FileStream("Ada.dna", FileStream.AccessMode.Read, FileStream.OpenMode.Binary)
reader = BinaryStreamReader(stream, DataLayer.All)
reader.read()
from pyriglogic import RigInstance, RigLogic
rig_logic = RigLogic(reader)
rig_instance = RigInstance(rig_logic)
expressions = ["browDown", "browLateral"]
rig_instance.setLOD(0)
for expression_name in expressions:
for raw_control_index in range(reader.getRawControlCount()):
control_name = reader.getRawControlName(raw_control_index)
if expression_name in control_name.split(".")[-1]:
rig_instance.setRawControl(raw_control_index, 1.0)
rig_logic.calculate(rig_instance)
joint_value = rig_instance.getJointOutputs()
This project is licensed under the Boost Software License 1.0. See the LICENSE_1_0.txt file for more details.
Contributions are welcome! To contribute:
- Fork the project 🍴
- Create a feature branch:
git checkout -b feature/my-new-feature - Commit your changes:
git commit -m "Added a new feature" - Push the branch:
git push origin my-new-feature - Open a pull request ✅
Thanks to Epic Games for Unreal Engine and Metahuman. 🎮🚀