OpenRigLogic contains the RigLogic and DNA libraries that enable you to load a MetaHuman character with the same runtime rig evaluation as Unreal Engine. Both are available as native C++ libraries with Python bindings, ready to integrate into third-party content creation tools. OpenRigLogic is maintained by Epic Games.
MetaHuman has been adopted by some of the most successful games in the world, and is quickly becoming a standard for digital characters. The DNA and RigLogic libraries found in OpenRigLogic are released in support of this developing standard. The RigLogic whitepaper describes the design, file format, and runtime evaluation strategy in more detail.
The OpenRigLogic repository contains:
- DNA Library: A C++ library for reading and writing MetaHuman DNA files, with Python bindings.
- RigLogic: A highly optimized C++ library providing realtime evaluation of the MetaHuman rig, with Python bindings.
- Documentation: A developer’s guide to integrating the RigLogic and DNA Libraries into your platform.
Sample assets and the MetaHuman Faceboard Control Rig may be acquired separately via the OpenRigLogic Sample Content listing on Fab (available under the Fab Standard License).
The implementation of technology such as OpenRigLogic creates an ecosystem of complimentary tools and products that enable a MetaHuman character to move seamlessly between different applications.
Existing MetaHuman tools released by Epic Games (such as MetaHuman Creator and MetaHuman Animator in Unreal Engine and the MetaHuman for Maya and MetaHuman for Houdini plugins) are already part of this ecosystem. Your integration of OpenRigLogic into a third-party application enables you to take part in this ecosystem, providing compatibility with any MetaHuman character and tools you use to create them.
Typically, MetaHuman characters are created using MetaHuman Creator in Unreal Engine. They can be exported using the Export > DCC Export tool. The exported package contains a DNA file for the head and a DNA file for the body-the inputs needed to drive the character with the libraries in OpenRigLogic. The character’s textures are also included. Groom and clothing information is not currently part of this package.
OpenRigLogic follows a “live main, frozen stable” approach.
| OpenRigLogic branch | Stability |
|---|---|
main |
Experimental |
5.8 |
Production-Ready |
Most active development happens on the main branch. This branch is where new features are integrated and tested. We make it available for battle-hardened developers eager to test new features or work in lock-step with us.
If you choose to work in this branch, be aware that it is likely to be ahead of the branches for the current official release and the next upcoming release. Therefore, content and code that you create to work with the main branch may not be compatible with public releases until we create a new branch directly for a future official release.
This branch is best for developers who want the newest OpenRigLogic features.
Numbered branches identify past and upcoming official releases. Once a stable branch is created, it reflects the validated state of the libraries at that engine release. These branches are immutable snapshots with the exception of hotfix changes for critical fixes, and are recommended for production projects-use the branch that best matches your compatibility requirements.
OpenRigLogic supports a wide range of platforms that includes console platforms and mobile devices in addition to Windows, Linux, and macOS.
Platform independence is a critical design feature. Real-time performance on each device is equally important.
- C++ Compiler (supporting C++11 or higher)
- CMake (version 3.14+)
These are only required if you enable specific build flags (e.g., tests, benchmarks, or language bindings).
| Dependency | Required for | Notes |
|---|---|---|
| SWIG | Python wrappers | Required at build time to generate the wrapper code |
| Python 3 (with Dev headers) | Python wrappers | Required at build time to compile the module, and at runtime to use it |
| Google Test | Unit tests | Downloaded automatically via CMake if tests are enabled |
| Google Benchmark | Benchmarks | Downloaded automatically via CMake if benchmarks are enabled |
Clone the branch that matches your engine version:
git clone -b 5.8 https://github.com/EpicGames/OpenRigLogic.gitTo track the latest changes from the main branch:
git clone https://github.com/EpicGames/OpenRigLogic.gitOpenRigLogic uses CMake to generate build scripts. From the repository root:
mkdir build
cd build
cmake ..To build:
cmake --build .To enable the AVX-based joint calculation algorithm in RigLogic, set the RL_BUILD_WITH_AVX CMake option:
cmake .. -DRL_BUILD_WITH_AVX=ONTo enable half-float backed joint storage in RigLogic, the target CPU must support the F16C extension, and the RL_BUILD_WITH_HALF_FLOATS CMake option must be set:
cmake .. -DRL_BUILD_WITH_HALF_FLOATS=ONSanitizers are well supported on Linux and provide the easiest and most accurate way to catch runtime programming errors. (Windows sanitizer support is less reliable.) Enable them at configure time:
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_SANITIZERS=’address’Then build and run a target as usual; the sanitizer reports errors detected at runtime. If sanitizer output is obscured, set the ASAN_OPTIONS and ASAN_SYMBOLIZER_PATH environment variables:
ASAN_OPTIONS=symbolize=1 ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-6.0/bin/llvm-symbolizer ./rltestsSupported sanitizers:
addressmemorythreadleakundefined
Tests can be run through CMake. When the active build system is MSBuild, the build configuration must be supplied on the command line:
ctest -C Debug
ctest -C ReleaseFor make and ninja, only one build configuration is active at a time, so:
ctestYou can find the OpenRigLogic documentation here.
We welcome community contributions to OpenRigLogic. Before writing code, please read the contributing guide, which describes the propose-first workflow (before you code) and DCO sign-off requirements.
OpenRigLogic is released under the MIT License.
For links to forums and information on submitting bug reports and feature requests please see SUPPORT.md
See SECURITY.md for responsible disclosure of security related issues.