Skip to content

MetaHumans

tcwilsonart edited this page Jun 13, 2026 · 3 revisions

MetaHumans

MetaHumans need a bit more setup than a plain mesh, for two reasons:

  1. They're split into a body and a face/head, each with its own skeletal mesh — you set up both.
  2. Their skin material is a large stack of material functions, and MetaHumans already use the Green & Blue vertex-color channels for their own tangent-recompute masking. So TensionFX keeps stretch in Red and moves squash to the Alpha channel, and you swap in TensionFX-aware versions of a few skin material functions to read it.

The package does not ship a MetaHuman. They're large and Epic updates them often, so bundling one would bloat the download and break on every MetaHuman release. You bring your own MetaHuman; TensionFX gives you the deformers and the material functions to wire into it. If a MetaHuman update ever breaks the functions, the goal is that you understand the wiring well enough to re-apply it yourself (and updated functions will follow).


Step 1 — Assign the deformers (body and face)

  1. Open the MetaHuman's body skeletal mesh → set Default Mesh Deformer to DG_TensionFX_MetaHuman_Body.
  2. Open the MetaHuman's face skeletal mesh → set Default Mesh Deformer to DG_TensionFX_MetaHuman_Head.
Assign body and head deformers

With these assigned, TensionFX is already writing the vertex colors (stretch to Red, squash to Alpha). Nothing visible changes yet — the materials don't read it until Step 2.


Step 2 — 5.6, 5.7, swap in the TensionFX skin material functions

5.4, 5.5 will require your own implementation at this time.

The MetaHuman skin material reads the vertex colors through four material functions. TensionFX provides replacements in Content/TensionFX/Examples/MetaHumans/Common/Lookdev_UHM/Skin/Material_Functions/:

  • MF_skin_bakedInputs
  • MF_skin_globalAdjustmentsPostBake
  • MF_skin_microSkinDetails
  • MF_skin_utils

You replace your MetaHuman's originals with these. The cleanest way is Unreal's built-in delete-and-replace-references flow, which re-points every reference to the new asset so all the existing material connections are preserved — you don't have to rewire anything.

Swap using "Replace References" (keeps all connections)

⚠️ This modifies your MetaHuman's Common defaults. Consider backing up the four originals (copy them to a Backup/ folder) before you start.

  1. In your MetaHuman's skin material-function folder, find the four MF_skin_* functions listed above.
  2. Right-click one original → Delete. Unreal opens the Delete Assets dialog and shows what still references it.
  3. In that dialog, use Replace References and pick the matching TensionFX function as the replacement. Unreal re-points every reference to the TensionFX version, then removes the original.
  4. Repeat for the other three MF_skin_* functions.
  5. Right-click the folder → Fix Up Redirectors in Folder to keep things tidy.

Because references are replaced (not just files swapped), the skin material keeps all of its existing wiring and simply now runs the TensionFX-aware functions.


Step 3 — Turn it on in the skin material

Open the MetaHuman's body (and face) skin material instance. With the functions swapped, you'll now see a 0 - Tension Solver parameter group near the top. It exposes things like Compressed Strength / Stretched Strength, Preview Color Blend, and per-category toggles (Color / Specular / Roughness / Normal "Edit") plus their compressed/stretched multipliers.

Turn up Compressed Strength and Stretched Strength, and turn on Preview Color Blend to confirm it's reading.

Tension Solver params on a MetaHuman skin MI

First-time refresh. Right after the function swap, the skin material instance may not pick up the new functions until it recompiles. Toggle any material switch off and back on — e.g. one of the *_Edit toggles, or Use Animated Maps — to jiggle the material into rebuilding with the swapped functions. You only need to do this once, on first setup.

Inspecting the vertex colors on a MetaHuman looks different

If you use the viewport's Vertex Colors show-flag to inspect TensionFX on a MetaHuman, it reads differently than the sqworm: stretch is in Red but squash is in Alpha, which that flag doesn't display the same way as Green. So don't expect the bold red/green sqworm look — judge the real result by the shaded skin response (roughness/color) while the mesh animates.


Tuning MetaHuman skin

MetaHuman skin reaction should be subtle. From skin studies, the property that changes most with stretch/squash is roughness / specular, with a smaller color shift:

  • Stretched skin → slightly brighter / more reflective (specular & roughness go up), and a touch more saturated.
  • Compressed skin → slightly less reflective and more desaturated.

You'll see this most clearly in motion — e.g. compression around the eyes on a squint reads as a small drop in reflectivity there.

The micro detail maps are the most effective knob for subtle MetaHuman work (micro skin detail is what physically changes most with squash/stretch) — start there before touching the finer controls. For the example controls and more tuning notes, see Material Controls & Tuning.


Known MetaHuman caveats

  • Seams under heavy stretch. The head and body are separate skeletal meshes, and TensionFX measures stretch within a single mesh — it can't measure across the gap between them. So under strong stretch the two sides can disagree slightly at the neck and reveal a faint line. Keeping the head and body skin material settings as similar as possible minimizes it. See Troubleshooting.
  • The provided MetaHuman functions are a starting point to customize. (They do include the modern reroute-node setup, unlike the simpler sqworm example material.)

Next: Material Controls & Tuning → · How It Works →