4.0 KiB
4.0 KiB
DNACalib
这个库用于对 DNA 文件进行修改。 它使用 C++ 编写,并且也有 Python 包装器。SWIG 库用于生成 Python 的绑定。DNACalib 可以在命令行或 Maya 中使用。 提供了 Windows 和 Linux 的二进制文件。如果您使用不同的架构和/或平台,您必须自行构建 DNACalib。
DNACalib 文件夹结构
DNACalib
- 包含 DNACalib 及其依赖项的 C++ 源代码。其中有一个用于读写 DNA 文件的库,以及一些其他实用库。PyDNACalib
- 包含用于生成 DNACalib Python 包装器的源代码。PyDNA
- 包含用于生成 DNA 库 Python 包装器的源代码,该库位于包含 C++ 源代码的 DNACalib 文件夹下。SPyUS
- 包含 PyDNACalib 和 PyDNA 都使用的一些通用 SWIG 接口文件。CMakeModulesExtra
- 包含在整个项目中使用的一些通用 CMake 函数,包括 C++ 和 Python 包装器。
使用
例如,要更改中性关节的旋转值,使用
SetNeutralJointRotationsCommand
。
下面是一个示例,它读取 DNA,将所有中性关节的旋转值更改为 {1, 2, 3}
,并用这些新值覆写 DNA 文件。
// 创建 DNA 读取器
auto inOutStream = dnac::makeScoped<dnac::FileStream>("example.dna",
dnac::FileStream::AccessMode::ReadWrite,
dnac::FileStream::OpenMode::Binary);
auto reader = dnac::makeScoped<dnac::BinaryStreamReader>(inOutStream.get());
reader->read();
// 检查读取 DNA 文件时是否发生错误
if (!dnac::Status::isOk()) {
// 处理读取器错误
}
// 创建 DNACalib 读取器以编辑 DNA
auto dnaReader = dnac::makeScoped<dnac::DNACalibDNAReader>(reader.get());
std::vector<dnac::Vector3> rotations{dnaReader->getJointCount(), {1.0f, 2.0f, 3.0f}};
// 创建命令实例
dnac::SetNeutralJointRotationsCommand cmd{dnac::ConstArrayView<dnac::Vector3>{rotations}};
// 执行命令
cmd.run(dnaReader.get());
// 写入 DNA 文件
auto writer = dnac::makeScoped<dnac::BinaryStreamWriter>(inOutStream.get());
writer->setFrom(dnaReader.get());
writer->write();
// 检查写入 DNA 文件时是否发生错误
if (!dnac::Status::isOk()) {
// 处理写入器错误
}
示例
C++
C++ 库使用示例可以在此处找到。
这些包括:
Python
从 Python 使用库的示例在此处。
这些包括:
构建
提供了 64 位 Windows 和 Linux 的预构建二进制文件。 如果您使用不同的架构和/或平台,您必须构建 DNACalib。
先决条件:
- CMake 至少 3.14 版本
- SWIG 至少 4.0.0 版本
- Python 要指定要使用的 python3 的确切版本,请设置 CMake 变量
PYTHON3_EXACT_VERSION
。例如,要在 Maya 2022 中使用该库,请使用 3.7 版本。对于 Maya 2023,使用 3.9 版本。
使用 CMake 生成构建所需的构建脚本,例如通过从
MetaHuman-DNA-Calibration/dnacalib/
目录执行以下命令:
mkdir build
cd build
cmake ..
然后,要开始构建过程:
cmake --build