-
Notifications
You must be signed in to change notification settings - Fork 0
MetaHumans
MetaHumans need a bit more setup than a plain mesh, for two reasons:
- They're split into a body and a face/head, each with its own skeletal mesh — you set up both.
- 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).
- Open the MetaHuman's body skeletal mesh → set Default Mesh Deformer to
DG_TensionFX_MetaHuman_Body. - Open the MetaHuman's face skeletal mesh → set Default Mesh Deformer to
DG_TensionFX_MetaHuman_Head.
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.
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_bakedInputsMF_skin_globalAdjustmentsPostBakeMF_skin_microSkinDetailsMF_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.
⚠️ This modifies your MetaHuman's Common defaults. Consider backing up the four originals (copy them to aBackup/folder) before you start.
- In your MetaHuman's skin material-function folder, find the four
MF_skin_*functions listed above. - Right-click one original → Delete. Unreal opens the Delete Assets dialog and shows what still references it.
- 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.
- Repeat for the other three
MF_skin_*functions. - 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.
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.
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
*_Edittoggles, or Use Animated Maps — to jiggle the material into rebuilding with the swapped functions. You only need to do this once, on first setup.
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.
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.
- 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.)