top of page


  • Description:

- This is a quick demo showing a facial rig based on FACS with animated wrinkle maps and implementing them in Unreal Engine.

- Maya animation overview

  • Maya workflow:

- The rig is a combination of joints and corrective blendshapes. Every expression or AU (action unit) is driven by limited AU controls which drives the secondary controls (which drive joints) and some of them are combined with corrective blendshapes. This way the animator has the option to tweak the controls further if needed. 

- Each shape is exported to Zbrush to sculpt the wrinkles and then bake the normal map in Marmoset.

- The wrinkle maps are combined in Maya using layered texture node. Each map is divided to multiple maps using masks and they are triggered by AU control that drives the "alpha gain" for each map.

- Since not all the expressions are blendshapes, so I had to make custom attributes that defines the values of normal maps that are triggered so that these values can be used in Unreal to drive the normal maps there.

  • Unreal Workflow:

- The wrinkle maps in Unreal are combined using "lerp" node and each texture is divided by mask textures that are multiplied by a custom parameter to control normal intensity and another "Collection parameter" which is controlled by the custom attributes in the animation blueprint.

- The final lerp is combined with main face normal by using "BlendAngleCorrectedNormals".

- The collection parameters are getting the values from the animation curves.

- Now the wrinkle maps will trigger automatically with any imported animation.

bottom of page