345 lines
28 KiB
HTML
345 lines
28 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>MetaHuman DNA Calibration — DNA Calibration documentation</title>
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/graphviz.css" type="text/css" />
|
||
<!--[if lt IE 9]>
|
||
<script src="_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Repository Organization" href="repository_organization_md.html" />
|
||
<link rel="prev" title="MetaHuman DNA Calibration" href="index.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
<a href="index.html" class="icon icon-home"> DNA Calibration
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption" role="heading"><span class="caption-text">Contents</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">MetaHuman DNA Calibration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#overview">Overview</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#required-knowledge">Required Knowledge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#optional-knowledge">Optional Knowledge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#dnacalib">DNACalib</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#external-software-dependencies">External Software Dependencies</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#environment-setup">Environment Setup</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#dnaviewer">DNAViewer</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#examples">Examples</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#example-dna-files">Example DNA files</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#notes">Notes</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#license">License</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Repository Organization</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="repository_organization_md.html">Repository Organization</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="repository_organization_md.html#folder-structure">Folder structure</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">DNACalib</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="dnacalib_md.html">DNACalib</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dnacalib_api_md.html">API overview</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">DNAViewer</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_md.html">DNAViewer</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_maya_md.html">Usage in Maya</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">DNAViewer API</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_api_md.html">Environment Setup</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_api_md.html#dna">DNA</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_api_build_meshes_md.html">Mesh Utilities</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_api_build_rig_md.html">Build rig (<code class="docutils literal notranslate"><span class="pre">build_rig</span></code>)</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Technical documentation</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna.html">DNA</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dnacalib.html">DNACalib</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="dna_viewer_modules.html">DNAViewer</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">FAQ</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="faq_md.html">Frequently Asked Questions (FAQ)</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="index.html">DNA Calibration</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="index.html" class="icon icon-home"></a> »</li>
|
||
<li>MetaHuman DNA Calibration</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="_sources/index_.md.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="metahuman-dna-calibration">
|
||
<h1>MetaHuman DNA Calibration<a class="headerlink" href="#metahuman-dna-calibration" title="Permalink to this headline"></a></h1>
|
||
<p>MetaHuman DNA Calibration is a set of tools used for working with MetaHuman DNA files, bundled into a single package.
|
||
<a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/docs/dna_md#metahuman-dna"><code class="docutils literal notranslate"><span class="pre">DNA</span></code></a> is an integral part of <a class="reference external" href="https://www.unrealengine.com/en-US/metahuman">MetaHuman</a> identity.
|
||
DNA files are created with <a class="reference external" href="https://metahuman.unrealengine.com/">MetaHuman Creator</a> and downloaded with
|
||
<a class="reference external" href="https://docs.metahuman.unrealengine.com/en-US/downloading-metahumans-with-quixel-bridge/">Quixel Bridge</a>, and Bifrost in UE5.</p>
|
||
<p>MetaHuman DNA Calibration is a set of tools used for working with MetaHuman DNA files, bundled into a single package. We wanted to share this code to help users customize DNA files so they can better integrate the characters they create into their games and experiences.
|
||
MetaHuman DNA Calibration tools are provided in a GitHub repository located at this address.</p>
|
||
</section>
|
||
<section id="overview">
|
||
<h1>Overview<a class="headerlink" href="#overview" title="Permalink to this headline"></a></h1>
|
||
<p>For an explanation about how the repository is organized, <a class="reference internal" href="repository_organization_md.html"><span class="doc std std-doc">click here</span></a>.</p>
|
||
<p>The MetaHuman DNA Calibration repository contains two distinct tools:</p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="dnacalib_md.html"><span class="doc std std-doc">DNACalib</span></a> (and its dependencies)</p></li>
|
||
<li><p><a class="reference internal" href="dna_viewer_md.html"><span class="doc std std-doc">DNAViewer</span></a></p></li>
|
||
</ul>
|
||
<section id="required-knowledge">
|
||
<h2>Required Knowledge<a class="headerlink" href="#required-knowledge" title="Permalink to this headline"></a></h2>
|
||
<p>To use these tools, you should be familiar with:</p>
|
||
<ul class="simple">
|
||
<li><p>Rigging in Maya</p></li>
|
||
<li><p>Python</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="optional-knowledge">
|
||
<h2>Optional Knowledge<a class="headerlink" href="#optional-knowledge" title="Permalink to this headline"></a></h2>
|
||
<ul class="simple">
|
||
<li><p>C++ (for <a class="reference internal" href="dnacalib_md.html"><span class="doc std std-doc">DNACalib</span></a> and its <a class="reference internal" href="dnacalib_api_md.html"><span class="doc std std-doc">API</span></a>)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="dnacalib">
|
||
<h2>DNACalib<a class="headerlink" href="#dnacalib" title="Permalink to this headline"></a></h2>
|
||
<p><a class="reference internal" href="dnacalib_md.html"><span class="doc std std-doc">DNACalib</span></a> and its <a class="reference internal" href="dnacalib_api_md.html"><span class="doc std std-doc">API</span></a> are used to inspect and modify DNA files. With <a class="reference internal" href="dnacalib_md.html"><span class="doc std std-doc">DNACalib</span></a>, you can make the following changes in DNA files:</p>
|
||
<ul class="simple">
|
||
<li><p>Rename joints, meshes, blendshapes, and / or animated maps.</p></li>
|
||
<li><p>Remove joints, meshes, and / or joint animation.</p></li>
|
||
<li><p>Rotate, scale, and translate the rig.</p></li>
|
||
<li><p>Remove LODs.</p></li>
|
||
<li><p>Change neutral joint positions, neutral mesh positions, and blendshape delta values.</p></li>
|
||
<li><p>Prune blendshapes.</p></li>
|
||
<li><p>Remove all blend shape data.</p></li>
|
||
</ul>
|
||
<p>An overview of the MetaHuman DNA file format can be found <a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/docs/dna_md"><code class="docutils literal notranslate"><span class="pre">here</span></code></a>.</p>
|
||
<p><strong>Note</strong>: DNACalib library allows removal and renaming of any joint. However, the following joints are used for connecting head with body and should not be removed or renamed: neck_01, neck_02, FACIAL_C_FacialRoot.</p>
|
||
</section>
|
||
<section id="external-software-dependencies">
|
||
<h2>External Software Dependencies<a class="headerlink" href="#external-software-dependencies" title="Permalink to this headline"></a></h2>
|
||
<p>DNACalib’s Python wrapper is compiled against Python 3.7 and 3.9. Pre-compiled binaries for Windows and Linux (both 64-bit) are part of the repository.
|
||
If you are using a different version of Python, you must recompile it. Any Python 3 version should be fine.
|
||
If a user has a different platform or architecture, the library and its dependencies must be compiled.</p>
|
||
<p><strong>Important</strong>
|
||
DNA files are stored as <a class="reference external" href="https://git-lfs.github.com/">LFS (Large File Storage)</a> files. They are downloaded with the rest of the code if
|
||
git-lfs is installed and configured to use. If you are not using git-lfs, you have to download DNA files manually.</p>
|
||
<p>Additional information can be found <span class="xref myst">here</span></p>
|
||
<p><strong>Warning:</strong>
|
||
Python 2 is not supported.</p>
|
||
<p>DNACalib can be used in C++ projects as a C++ library.</p>
|
||
<p>DNACalib Python wrapper can be used in Python 3.7 and 3.9, <code class="docutils literal notranslate"><span class="pre">mayapy</span></code> (Python interpreter shipped with Maya) shipped with Maya.
|
||
Supported Maya versions are 2022 and 2023.</p>
|
||
<p>Note: Maya 2022 is bundled with Python 3.7, Maya 2023 is bundled with Python 3.9.</p>
|
||
</section>
|
||
<section id="environment-setup">
|
||
<h2>Environment Setup<a class="headerlink" href="#environment-setup" title="Permalink to this headline"></a></h2>
|
||
<p>In order to use MetaHuman DNA Calibration in your scripts, you need to:</p>
|
||
<ul class="simple">
|
||
<li><p>have Python3 installed, see <span class="xref myst">note</span>,</p></li>
|
||
<li><p>add MetaHuman DNA Calibration location to <code class="docutils literal notranslate"><span class="pre">MAYA_MODULE_PATH</span></code> system variable (if you want to use MetaHuman DNA Calibration in Maya)</p></li>
|
||
</ul>
|
||
<p>If you plan to run the script from command line:</p>
|
||
<ul class="simple">
|
||
<li><p>in case of Maya’s interpreter (mayapy) you will have to initialize maya with:</p></li>
|
||
</ul>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">maya.standalone</span>
|
||
<span class="n">maya</span><span class="o">.</span><span class="n">standalone</span><span class="o">.</span><span class="n">initialize</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<ul class="simple">
|
||
<li><p>in case of python interpreter you will have to add the following on top of your script:</p></li>
|
||
</ul>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">path</span> <span class="k">as</span> <span class="n">ospath</span>
|
||
<span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="n">path</span> <span class="k">as</span> <span class="n">syspath</span>
|
||
<span class="kn">from</span> <span class="nn">sys</span> <span class="kn">import</span> <span class="n">platform</span>
|
||
|
||
<span class="n">ROOT_DIR</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ospath</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">ospath</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span><span class="si">}</span><span class="s2">/.."</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span>
|
||
<span class="n">MAYA_VERSION</span> <span class="o">=</span> <span class="s2">"2022"</span> <span class="c1"># or 2023</span>
|
||
<span class="n">ROOT_LIB_DIR</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ROOT_DIR</span><span class="si">}</span><span class="s2">/lib/Maya</span><span class="si">{</span><span class="n">MAYA_VERSION</span><span class="si">}</span><span class="s2">"</span>
|
||
<span class="k">if</span> <span class="n">platform</span> <span class="o">==</span> <span class="s2">"win32"</span><span class="p">:</span>
|
||
<span class="n">LIB_DIR</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ROOT_LIB_DIR</span><span class="si">}</span><span class="s2">/windows"</span>
|
||
<span class="k">elif</span> <span class="n">platform</span> <span class="o">==</span> <span class="s2">"linux"</span><span class="p">:</span>
|
||
<span class="n">LIB_DIR</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ROOT_LIB_DIR</span><span class="si">}</span><span class="s2">/linux"</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="k">raise</span> <span class="ne">OSError</span><span class="p">(</span>
|
||
<span class="s2">"OS not supported, please compile dependencies and add value to LIB_DIR"</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="c1"># Adds directories to path</span>
|
||
<span class="n">syspath</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ROOT_DIR</span><span class="p">)</span>
|
||
<span class="n">syspath</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">LIB_DIR</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>NOTE:
|
||
If running on Linux, please make sure to append the LD_LIBRARY_PATH with absolute path to the <code class="docutils literal notranslate"><span class="pre">lib/Maya2022/linux</span></code> or <code class="docutils literal notranslate"><span class="pre">lib/Maya2023/linux</span></code> directory before running the example:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">export</span> <span class="pre">LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path-to-lib-linux-dir></span></code></p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="dnaviewer">
|
||
<h2>DNAViewer<a class="headerlink" href="#dnaviewer" title="Permalink to this headline"></a></h2>
|
||
<p>With DNAViewer, you can:</p>
|
||
<ul class="simple">
|
||
<li><p>Create functional rigs for Maya.</p></li>
|
||
<li><p>Export FBX files.</p></li>
|
||
<li><p>Read internal parts of DNA files.</p></li>
|
||
</ul>
|
||
<p>DNAViewer can be used in <code class="docutils literal notranslate"><span class="pre">mayapy</span></code> (Python interpreter shipped with Maya) or in Maya 2022, except <a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py">Propagating changes from Maya scene to dna</a> which can be used just in Maya.</p>
|
||
</section>
|
||
</section>
|
||
<section id="examples">
|
||
<h1>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h1>
|
||
<p>Several Python examples are provided for reference and can be found in the <strong>examples’</strong> folder:</p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_demo.py">Showcase a few commands</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_rename_joint_demo.py">Rename a joint</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_demo.py">Create a small DNA from scratch</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_binary_to_json_demo.py">Read binary DNA and write it in a human readable format</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_lod_demo.py">Create a new DNA from an existing one by extracting specific LODs</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_remove_joint.py">Remove a joint</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_clear_blend_shapes.py">Clear blend shape data</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dnacalib_neutral_mesh_subtract.py">Subtract values from neutral mesh</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_viewer_run_in_maya.py">Simple UI in Maya</a> and some <span class="xref myst">documentation</span> for it</p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_viewer_build_rig.py">Generates rig</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_viewer_export_fbx.py">Export FBX per LOD</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py">Propagating changes from Maya scene to dna</a></p></li>
|
||
</ul>
|
||
<p>Note: Examples are grouped in three groups: DNA, DNACalib, and DNAViewer. These names are embedded as prefixes: dna_, dnacalib_, and dna_viewer_.</p>
|
||
<section id="example-dna-files">
|
||
<h2>Example DNA files<a class="headerlink" href="#example-dna-files" title="Permalink to this headline"></a></h2>
|
||
<p><a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/data/dna_files">Two demo DNA files</a> are provided for easier testing of this tool. Any DNA generated with <a class="reference external" href="https://www.unrealengine.com/en-US/metahuman">MetaHumanCreator</a>
|
||
should work.</p>
|
||
<p>The MHC 2023 spring release introduced changes to the rig definition (number of joints increased as well as the number of expressions).
|
||
In order to accommodate those changes, we added several files to the repository in <code class="docutils literal notranslate"><span class="pre">/data/mh4</span></code> folder: new <span class="xref myst">gui scene</span>, updated <span class="xref myst">assemble script</span> and example of Ada’s <a class="reference external" href="https://github.com/EpicGames/MetaHuman-DNA-Calibration/tree/main/data/mh4/dna_files/Ada.dna">DNA file</a>.
|
||
If a user wants to switch and use this new rig version it is necessary to update paths in their scripts:</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">GUI</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">DATA_DIR</span><span class="si">}</span><span class="s2">/mh4/gui.ma"</span>
|
||
<span class="n">ADDITIONAL_ASSEMBLE_SCRIPT</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">DATA_DIR</span><span class="si">}</span><span class="s2">/mh4/additional_assemble_script.py"</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>In case character DNA is downloaded from <a class="reference external" href="https://quixel.com/bridge">Quixel Bridge</a> and we are not sure which rig definition is used, it can be checked with following code:</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dna</span> <span class="kn">import</span> <span class="p">(</span>
|
||
<span class="n">BinaryStreamReader</span><span class="p">,</span>
|
||
<span class="n">DataLayer_All</span><span class="p">,</span>
|
||
<span class="n">FileStream</span><span class="p">,</span>
|
||
<span class="n">Status</span><span class="p">,</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">load_dna_reader</span><span class="p">(</span><span class="n">dna_file</span><span class="p">):</span>
|
||
<span class="n">stream</span> <span class="o">=</span> <span class="n">FileStream</span><span class="p">(</span>
|
||
<span class="n">dna_file</span><span class="p">,</span> <span class="n">FileStream</span><span class="o">.</span><span class="n">AccessMode_Read</span><span class="p">,</span> <span class="n">FileStream</span><span class="o">.</span><span class="n">OpenMode_Binary</span>
|
||
<span class="p">)</span>
|
||
<span class="n">reader</span> <span class="o">=</span> <span class="n">BinaryStreamReader</span><span class="p">(</span><span class="n">stream</span><span class="p">,</span> <span class="n">DataLayer_All</span><span class="p">)</span>
|
||
<span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">Status</span><span class="o">.</span><span class="n">isOk</span><span class="p">():</span>
|
||
<span class="n">status</span> <span class="o">=</span> <span class="n">Status</span><span class="o">.</span><span class="n">get</span><span class="p">()</span>
|
||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error loading DNA: </span><span class="si">{</span><span class="n">status</span><span class="o">.</span><span class="n">message</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="n">reader</span>
|
||
|
||
<span class="n">character_dna</span> <span class="o">=</span> <span class="s2">"path_to/character.dna"</span>
|
||
<span class="n">reader</span> <span class="o">=</span> <span class="n">load_dna_reader</span><span class="p">(</span><span class="n">character_dna</span><span class="p">)</span>
|
||
<span class="k">if</span> <span class="n">reader</span><span class="o">.</span><span class="n">getDBName</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"MH.4"</span><span class="p">:</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Use mh4 folder"</span><span class="p">)</span>
|
||
<span class="k">elif</span> <span class="n">reader</span><span class="o">.</span><span class="n">getDBName</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DHI"</span><span class="p">:</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Use data folder"</span><span class="p">)</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Unsupported rig definition!"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
<section id="notes">
|
||
<h1>Notes<a class="headerlink" href="#notes" title="Permalink to this headline"></a></h1>
|
||
<p>If a user runs examples in Maya 2022, the value for <code class="docutils literal notranslate"><span class="pre">ROOT_DIR</span></code> should be changed and absolute paths must be used,
|
||
e.g. <code class="docutils literal notranslate"><span class="pre">c:/MetaHuman-DNA-Calibration</span></code> in Windows or <code class="docutils literal notranslate"><span class="pre">/home/user/MetaHuman-DNA-Calibration</span></code> in Linux. Important: Use <code class="docutils literal notranslate"><span class="pre">/</span></code> (forward slash), Maya uses forward slashes in path.</p>
|
||
<p>See the <a class="reference internal" href="faq_md.html"><span class="doc std std-doc">FAQ guide</span></a> for additional specifications.</p>
|
||
</section>
|
||
<section id="license">
|
||
<h1>License<a class="headerlink" href="#license" title="Permalink to this headline"></a></h1>
|
||
<p>MetaHuman DNA Calibration is released with <a class="reference internal" href="#license"><span class="std std-ref">licence</span></a>.</p>
|
||
</section>
|
||
<section id="indices-and-tables">
|
||
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline"></a></h1>
|
||
<ul class="simple">
|
||
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
|
||
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
|
||
</ul>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="index.html" class="btn btn-neutral float-left" title="MetaHuman DNA Calibration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="repository_organization_md.html" class="btn btn-neutral float-right" title="Repository Organization" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2023, Epic Games.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |