This library is used for performing modifications on a DNA file.
It is written in C++ and there is also a Python wrapper for it. [SWIG](https://www.swig.org/) library is used for generating
bindings for Python. DNACalib can be used in command line, or in Maya.
Binaries for Windows and Linux are provided. **If you are using a different architecture and/or platform, you must build DNACalib.**
## DNACalib folder structure
- [`DNACalib`](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/DNACalib) - Contains C++ source code of DNACalib and its dependencies. There is a library for
reading and writing DNA files, along with a few other utility libraries.
- [`PyDNACalib`](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/PyDNACalib) - Contains the source code for generating the Python wrapper for DNACalib.
- [`PyDNA`](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/PyDNA) - Contains the source code for generating the Python wrapper for DNA library, that is under
DNACalib folder containing C++ source code.
- [`SPyUS`](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/SPyUS) - Contains some common SWIG interface files used by both PyDNACalib and PyDNA.
- [`CMakeModulesExtra`](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/CMakeModulesExtra) - Contains some common CMake functions that are used throughout the
project, both in C++ and the Python wrapper.
## Usage
For example, to change rotation values of neutral joints, use the
- [Rename a blendshape](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/dnacalib/DNACalib/examples/SingleCommand.cpp)
### Python
Examples of using the library from Python are [here](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples).
These are:
- [Showcase a few commands](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_demo.py)
- [Rename a joint](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_rename_joint_demo.py)
- [Create a small DNA from scratch](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_demo.py)
- [Create a new DNA from an existing one by extracting specific LODs](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_lod_demo.py)
- [Read binary DNA and write it in a human readable format](https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_binary_to_json_demo.py)