The DNACalib library enables the modification of data contained in DNA files through a collection of tools and commands. The library is written in C++ and has Python bindings. The bindings are generated using the SWIG library.
These tools are useful in isolation to procedurally modify DNA file data, and can be easily extended or tailored within your pipeline for more interactive and artist-friendly workflows (for example, producing renaming or deletion commands in a DCC application that modify both the scene and the corresponding DNA data).
You can use DNACalib tools in the following ways:
In C++ projects, from source or linking to the binaries.
Through Python bindings in a compatible Python environment (including command line).
In Maya, by their Python bindings, through the reference implementation provided.
It’s worth repeating that DNACalib contains commands that directly affect DNA data. While you can run the reference implementation from inside Maya (both MayaPy and the GUI’s script facilities), it doesn’t match or respond to Maya scene changes. It’s your responsibility to create wrappers that can affect the scene and the DNA data at the same time, if that’s what you wish to use.
DNACalib Commands
Renaming Joints, Meshes, BlendShapes, and Animated Maps
All of these components are required for MetaHuman head rigs to work properly. Before the release of DNACalib, renaming them usually broke the links between operators and scene/asset objects and parameters.
With DNACalib commands, you can rename any of those elements to a (legal) name of your choice so that, if your pipeline or tooling is name-reliant, you can now modify MetaHuman head rigs to work with it.
Removing Joints, Meshes, BlendShapes, and Joint Animations
We only allow removal, and not addition, and it’s your responsibility to ensure the removal leaves the underlying structure intact.
Removing component parts is often useful to reduce the weight of a rig within an LOD’s contents. Removing joints this way also ensures that the weight maps we produce will be correctly parametrized across the geometry without that joint appearing in the influences.
Whole Rig Transformation
Translation, Rotation and Scaling of the root node, propagated to the entire hierarchy, is now possible through this command. You can transform any mix of these parameters.
While you can perform non-uniform scaling using this command, we do not recommend it.
This tool makes it possible to scale MetaHuman heads and use them with custom bodies of a different size than the ones we provide, or with settings and creatures different from the normal scale.
LOD Removal
Our DNA provides everything necessary to build a large extent of LODs. Oftentimes, you might only need a subset of those, and removing unused LOD can become tedious and repetitive if you do it every time an asset that contains a MetaHuman head rig is updated.
This command removes LODs from the contents of DNA files, resulting in quicker builds and smaller assets.
Change Neutral Transform and Mesh
Use these commands to set the neutral transform (translation, rotation, and scale) of joints, as well as that of the neutral pose mesh.
This effectively performs the equivalent of setting a Bind Pose and setting new pre-skinning Vertex Positions on the DNA.
The further away geometry vertices are from the base MetaHuman mesh we provided, the more likely it is that the rig will present issues, especially in critical areas such as the eyes and mouth corners. Modifications to areas with very few influences and rigid or very simple behavior (for example, ears, the tip of the chin and corners of the jaw) are generally more permissive .