MetaHuman Heads
Ornatrix App can bring one of your MetaHuman characters in as a head to groom. The head is not an imported mesh: it is a MetaHuman operator which reads the character's .dna file, rebuilds the head from it on every evaluation and deforms it with the character's own facial rig. Hair grafted or grown on the head follows its expressions and pose, and the groom stays attached to the MetaHuman topology, so a groom made on one character fits every other.
Ornatrix ships no MetaHuman of its own. MetaHuman characters are licensed to you by Epic Games, so the App works with the .dna files your own Unreal Engine installation and projects hold.
Where the .dna file comes from
A MetaHuman is defined by its .dna file, which carries the head geometry, its topology and texture coordinates, the skeleton, the skin weights, the blend shapes and the rig logic. There are three places to find one:
- A character exported with DCC Export (Unreal Engine 5.6 or newer). Open the MetaHuman Character asset, choose Export in its toolbar and then DCC Export. The tool writes a folder named after the character holding
head.dna,body.dnaand aMapsfolder of the character's baked textures. This is the one export that brings the skin along: a head or body created from it is shaded with a Surface Material built from its own maps (base colour, normal, and the specular, roughness and metalness of the packed SRMF image), so it looks like the character rather than the flat default colour. The body is brought in with Browse..., since the head list offers heads only. - A character exported with DNA Export (Unreal Engine 5.6 or newer). In the same Export menu choose DNA Export and point External Path at a folder of your choice; the tool writes
<Name>_Head.dnathere, next to a<Name>_Body.dna, which also loads, as a body with no textures. The character must be rigged before its DNA can be exported. - A character downloaded through Quixel Bridge (Unreal Engine 5.0 to 5.5). The download places the file at
<Project>/Content/MetaHumans/<Name>/SourceAssets/<Name>.dna. - The archetype face every Unreal Engine 5.6 or newer installation contains, at
<Engine>/Engine/Plugins/MetaHuman/MetaHumanCoreTechLib/Content/ArchetypeDNA/SKM_Face.dna. This is the neutral head MetaHuman Creator starts every character from. It has the same topology and rig as any other MetaHuman, so it is a good head to build and test grooms on before you have exported a character of your own.
Bringing a head in
The MetaHuman tool, on the Create tab of the toolbar, lists the heads it finds on your machine. The first time it is opened it scans the Unreal projects the editor has recorded opening, the folders under your own search locations and the archetype face of each installed engine. Each row shows the character's name and, in brackets, where it was found: the project, the folder or the engine.
- Selecting a row retargets the head whose geometry is selected in the scene at that file, and creates a new head when no selected geometry is a MetaHuman. Retargeting swaps the identity of a head you have already groomed, and the hair stays on it; deselect everything to bring in a second head instead.
- Rescan repeats the scan after you have exported a new character or added a project.
- Browse... picks any
.dnafile the scan cannot reach. - Search Locations lists the extra folders to scan. Add the folder you export characters to, a project the editor has not opened, or a folder of projects; the App remembers these locations between sessions. The locations found automatically are listed underneath for reference.
A .dna file can also be brought in with Create > MetaHuman in the main menu, with the File menu's import command, by dropping it onto the App window, or from the recent files list.
Creating a head adds two nodes to the groom: the MetaHuman operator, named metaHuman_<file>, and a scene geometry node named after the file which displays the mesh, both selected. One undo removes both. When the head is the first geometry in the groom, every camera frames it.
The MetaHuman operator
The head is regenerated from the referenced file, not stored in the groom, so a groom file that uses a MetaHuman stays small and needs the .dna to be present when it is opened. A relative path is resolved through the Managing External File Paths like any other asset.
- DNA File Path: the file the head is read from.
- LOD Index: the MetaHuman level of detail to load, 0 being the highest. Groom on level 0: the lower levels have a different topology, so a graft fitted on one level does not carry to another.
- Head Rotation and Neck Rotation: XYZ angles in degrees, which turn the head and the neck joints. The facial rig only drives expressions, so this is how the head is posed.
- Expression: Preset poses the whole face into a named expression, and Intensity blends it in from the neutral face (0) to the full expression (1). The list holds Neutral, the expressions shipped with the application (Happy, Sad, Surprised, Angry, Disgusted, Afraid, Screaming, Kissing, Blowing, Squinting, WinkingLeft, WinkingRight) and any you have saved; see Expression presets below. Put an expression on to check that eyebrows, lashes and a beard stay attached through it.
- Face: sliders that pose one part of the face and add on top of the expression. Jaw Open, Lips Pucker and Cheeks Puff run from 0 to 1; Jaw Sideways, Smile (negative values frown), Eyes Closed (negative values open the eyes wider), Eyes Look Sideways, Eyes Look Up and Brows Raise (negative values lower the brows) run from -1 to 1.
- Show All Controls: turning this on adds a second tab with the rig's raw face board controls, one value per control, named as in Unreal with the axis it drives (
CTRL_C_jaw.ty,CTRL_L_brow_raiseOut.tyand so on). Each control spans the range its rig responds to, which is -1 to 1 for many of them. They are summed with the expression and the sliders, and their values are saved with the groom and keep driving the head after the tab is hidden again. Reach for them only when a preset or slider does not do what you need.
Expression presets
An expression preset is a recipe: a list of the rig's face board controls and the value each takes at full intensity. The presets are read from two files in the MetaHuman folder of the application's data directory (C:\ProgramData\Ephere\OrnatrixApp\MetaHuman on Windows, /Users/Shared/Ephere/OrnatrixApp/MetaHuman on macOS):
Default.expressions.yamlholds the shipped presets and the recipes behind the Face sliders. The installer replaces it on every upgrade, so do not edit it.User.expressions.yamlholds your own. It has the same layout, and it lays over the shipped file: its presets are added to the list after the shipped ones, a preset of the same name as a shipped one replaces it, and a preset given no controls (Sad: ~) removes the shipped one from the list. A slider recipe in it replaces the shipped slider.
The easiest way to write the user file is from the head itself. Pose the head the way you want it, with a preset, the Face sliders, the raw controls under Show All Controls or all three, then press the save button beside the Preset list and give the expression a name. The pose is written to the user file as a preset, the list offers it at once, and the head is switched to it with the intensity at 1 and the sliders and raw controls cleared, so it does not move: the preset now drives it on its own. Saving under an existing name replaces that preset, which is how you retune a shipped one; Neutral is the relaxed face and cannot be saved over. The switch is one undo step; the file is not undone.
The file can also be edited by hand. Each entry maps control names, as shown on the Show All Controls tab (CTRL_L_mouth_cornerPull.ty and so on), to values within the control's range:
expressions:
Smirk:
CTRL_L_mouth_cornerPull.ty: 1.0
CTRL_L_mouth_dimple.ty: 0.5
CTRL_R_brow_raiseOut.ty: 0.2
A control the loaded character's rig does not have is skipped, and a preset named in a groom but defined in neither file leaves the face relaxed, so a groom made with someone else's presets still opens. The ORNATRIX_METAHUMAN_DIR environment variable points the application at another folder for both files.
Grafting hair onto the head
Regions of hair on a MetaHuman are Graft Grooms: a scalp, an eyebrow, lashes or a beard are each a graft surface fitted onto the head, carrying its own groom. With the head selected, open the Graft tool, pick a graft surface and a groom, and fit the surface by dragging its handles on the head.
Every MetaHuman shares the same head topology, so a fit made once applies to every character. After fitting, press Record Graft Surface Fit in the tool's Graft Surface panel. From then on, choosing that surface on any MetaHuman head offers Auto-fit, which places it in one click; the recorded fits are listed under Graft Bindings.
A whole-head groom is also possible: with the head selected, add a Guides from Mesh Operator and a Hair from Guides Operator as for any other mesh. For a scalp this grows hair over the face too, which is why regions are grafted instead.
Back to Unreal
Export the finished hair with Alembic Export and import the file into your Unreal project as a Groom asset. Create a Groom Binding between it and the character's Face skeletal mesh, then add the groom to the character's blueprint with that binding, the same way MetaHuman's own hair is attached. The groom then follows the character's animation and expressions in the engine.
Scripting
The Python console and the MCP connection expose the same steps: ephere_ornatrix_app.find_metahuman_heads() returns the list the tool shows, as dictionaries with name, origin and file_path, and ephere_ornatrix_app.create_metahuman_node(file_path) creates the head from a file. Over MCP the tools are list_metahuman_heads and create_metahuman; the head is posed through the operator's Expression.Preset, Expression.Intensity and Face.* parameters, and its raw rig controls are reported and set as the MetaHumanControls parameter set while ShowAllControls is on. The preset names the files currently hold are reported as the Expression.Preset parameter's choices. ephere_ornatrix_app.save_metahuman_expression_preset(node, name) does what the save button does, and ephere_ornatrix_app.get_metahuman_expressions_directory() returns the folder the recipe files are read from.
Related
- Graft Grooms - fitting a scalp, an eyebrow or a beard onto the head.
- Importing and Exporting Geometry - the other geometry formats the App reads and writes.
- Alembic Export - taking the finished hair to Unreal Engine.


