Skip to content

Material Controls and Tuning

tcwilsonart edited this page Jun 13, 2026 · 1 revision

Material Controls & Tuning

How the vertex colors are laid out, the example controls, and how to dial things in.


The vertex colors, in one table

TensionFX writes a per-vertex stretch/squash value into the mesh's vertex colors:

Stretch (edges longer than rest) Squash (edges shorter than rest)
Standard mesh Red channel Green channel
MetaHuman Red channel Alpha channel (G & B already in use)

The value is a signed, scale-independent measure of edge-length change (internally a mean of per-edge length ratios). 0 = no change; positive = stretch; negative = squash. It's clamped to [0,1] per channel when written to 8-bit vertex color, so very large boosts are better done in the material than in the deformer.

In a material you read it with a Vertex Color node and split the channels.


Example controls

These parameters live in the provided example materials — they're a starting point I built, not a fixed spec. Both the sqworm material and the MetaHuman skin material expose many more than shown here; use whichever you need and ignore the rest. Make a Material Instance to adjust them non-destructively.

Turning it on:

  • Sqworm material: _Use Stretch / _Use Squash checkboxes.
  • MetaHuman skin: the 0 - Tension Solver group — Stretched Strength / Compressed Strength, Preview Color Blend, and per-category Color / Specular / Roughness / Normal "Edit" toggles.

Knobs you'll commonly reach for (names vary between the two materials):

  • Stretch/Squash Power (sqworm) or Stretched/Compressed Strength (MetaHuman) — how strongly each zone reacts.
  • Roughness and Specular multipliers — the roughness/spec shift (the most physically meaningful for skin).
  • Saturation / Color amount / brightness — the albedo response.
  • Micro Roughness / Micro Normal / Micro Cavity multipliers (MetaHuman) — the micro-detail response.
  • Wrinkle / microTile controls (sqworm M_Wrinkler) — the procedural wrinkle layer (see note below).

Display colors in the examples are visualization aids — change them freely, they don't affect the math.

Procedural wrinkles are specific to the M_Wrinkler material used by the sqworm and cylinder examples: it grows wrinkles from procedural noise nodes that get stretched by the vertex colors. Great for organic shapes — but for clothing, pre-bake instead (see below).


You can also bias power in the Deformer Graph

The stretch/squash power isn't only a material thing. The Deformer Graph exposes the same power inputs at the top level, so you can set a global bias there — handy if you want every mesh using a given deformer to share a baseline strength, instead of setting it per-material. Per-material still overrides for fine control.


Tuning notes

Tuning skin specifically — what physically changes, and why micro-detail matters most — is covered on the MetaHumans page.

Pre-bake wrinkles for clothing (and other big-displacement cases)

Procedural noise (the M_Wrinkler approach) is great for organic things, but for clothing the better pipeline is what MetaHumans do for their own wrinkles: pre-bake wrinkle normal maps, then use TensionFX to activate/blend them in by vertex value — rather than generating wrinkles procedurally. You get art-directed folds instead of noise.


What TensionFX can drive (ideas)

You're not limited to the examples. Common targets:

  • Detail / wrinkle normal blend (lerp base ↔ wrinkle normals)
  • Roughness & specular shift
  • Albedo blush / desaturation
  • Micro-detail intensity
  • Anything else — it's just a 0–1 scalar per channel

See it in context: Use it on your own mesh · MetaHumans · How It Works