Have you ever wanted to create a stylized character for your Unreal Engine or UEFN project? In this section of the MetaHuman Stylized Character tutorial, you will take the initial MetaHuman character that you created earlier and use the MetaHuman for Maya toolset to improve the facial rig.
In this part of the tutorial, you will:
Learn core concepts behind the facial rig, and some general tips for expression editing.
Identify the contributing shapes that require edits, and use Expression Editor to make those changes.
Edit the expressions using the Maya Expression Editor.
Review the facial rig under deformation and identify where you need to make improvements.
Prerequisites
The MetaHuman Stylized Character tutorial shows how to convert your stylized character into a MetaHuman using MetaHuman Creator, and how to make the necessary changes to the rig and geometry to match your original design. You can follow the tutorial using your own character asset with the following guidelines:
Your character has been imported into MetaHuman Creator and is currently assembled in the MetaHuman A-pose.
You have exported the DCC folder package from MetaHuman Creator.
You have Maya and the MetaHuman for Maya plugin installed.
This tutorial is designed to be completed in sequence. If you have not completed the previous step, see Character Geometry and Rig Creation.
Check out the end result of this tutorial by downloading the MetaHuman Vampire Character Asset available on the Fab Marketplace.
For more information on the software and plugin requirements for this tutorial, see the MetaHuman Stylized Character Tutorial landing page.
Important Concepts and Features
Rig Structure Basics
In 3D animation and MetaHuman facial rigging, expressions are the building blocks that describe simplest muscular contraction or relaxation. When combined, they describe complex emotions. As an example, think about the smile and the Lip Corner Puller.
The Lip Corner Puller is a basic contraction of one large muscle (zygomatic major). It represents a voluntary or insincere smile. Genuine and involuntary emotion of happiness (or a real smile) often has more muscle contractions than an insincere one. It also engages the zygomatic major muscle as well as an inferior part of orbicularis oculi. You can experiment even further by adding other deformations like jaw open or a lower lip depress. This will reveal the teeth, making the whole emotion more intense.
Knowing your building blocks makes a difference when you combine them in the final animation.
The MetaHuman facial rig is defined by a few specific expression groups. Here, they are divided into four groups by their impact on likeness or the amount of general appeal:
Primary Expressions
Secondary Expressions (mostly combinations of primary base)
Base Expressions (standalone expressions with no further influence)
Tweaker Expressions
Undefined group (small branches of expressions)
Typically, the initial phase of the shape modeling workflow begins with a pass on the set of Primary base expressions. These expressions do most of the work. They have the largest contribution to a character’s likeness. Getting these right is critical since they define your character's identity. This subset of Primary base expressions contains:
BrowRaise
BrowsLower
NoseWrinkler
CheekRaiser
SquintInner
LipCornerPuller
MouthStretch
Pucker
ChinRaise
JawOpen
JawOpenExtreme
All other expression groups are derived from these, so it’s important that these look good and work well before you make deeper edits. Going back and changing these later in the process can be destructive to completed work on other expression groups.
Maya Geometry Tools
Below are the most common tools in Maya for manipulating geometry:
| Tool | Description |
|---|---|
Soft Modification Tool | Move tool with falloff that can be modified after the initial manipulation. This gives artists the ability to change the position of the affected vertices easily. |
Sculpt Geometry Tool | Sculpting tool with add, subtract, and smooth nodes that you can switch between quickly. Use for finer sculpting and sculpting on forms that you are already satisfied with. It should not be used for large changes to vertex positions or moving of any kind. |
Sculpting Tools:
| Three common sculpting tools for moving geometry in 3D space with the correct influences and falloffs. |
Paint Weights Blendshape Tool | Painting tool for painting a mask for different regions of the face and controlling where the blendshapes come through. |
Loading Your MetaHuman Character into the Maya Expression Editor
Before you start editing expressions, load your character into the Expression Editor and set up your Maya scene.
Expression Editing Workflow
The majority of your time in Maya will be spent in the MetaHuman for Maya Expression Editor. Here is the workflow you will use when editing expressions:
Open the Expression Poses panel.
Find the expression to edit (we use lipCornerPull in the example below) and double click the node. This will enter edit mode and is the place to start modeling an expression.
Lock downstream expressions so the changes shouldn't propagate.
Model the changes to the expression.
Click stop editing.
Review the changes.
Continue to iterate until you reach the desired result.
Opening the Expression Poses Graph
Start by loading the character into the editor by following the steps below:
In Maya, click the MetaHuman menu and select the Expression Editor.
In the Expression Editor, click the file folder button and open the
head.dnafile that is part of the DCC package exported from MetaHuman Creator.
Clicking the back arrow then the Expression Poses button opens a new screen that shows a graphical representation of the entire MetaHuman rig definition.
The chart displays a network of all the expressions shown as nodes, with all their dependencies and influences shown as connections. Clicking the desired node highlights it and all its dependent expressions that are derived from it.
As you can see in the above image, every expression is represented by one node, and the nodes are organized into columns. Each column represents a different layer (from layer 0 to layer 6):
Layer 0 represents the simpler facial deformation and cannot be divided.
Layer 1 (the column to the right of Layer 0) contains expressions that consist of two Layer 0 expressions.
Layer 2 contains expressions that consist of three Layer 0 expressions.
Layer 3 contains expressions that consist of four Layer 0 expressions.
And so on.
The most common workflow is to work from left to right. Dealing with simpler deformations first is less complicated because there are fewer things to watch out for.
If you want to edit a complex expression, such as smileOpen, it is important to understand both the upstream (left dependencies) and downstream (right dependencies) of that expression to preserve visual consistency across the full expression range while editing.
Preparing the Scene
After opening the Expression Poses mode work area, click the Scene Assembly button.
Once the scene assembly is complete, all meshes, GUI controls, and joints become fully visible.
To prepare the scene for editing, in the Outliner panel, hide all of the joint's asset meshes by turning off the visibility for the joints layers. Also hide the unnecessary eye meshes by turning off the visibility for the eyeshell, eyelashes, eyeEdge and cartilage meshes.
In the Outliner, you will have a few meshes and joints groups that are there in order to differentiate between the meshes for previewing and those for making edits:
Edit_grp meshes are used for sculpting.
Head_grp meshes are used for looking at when not using edit mode. Use those to check and manipulate the rig.
Preview_grp meshes are used in the edit mode for checking transitions.
After setting up the Maya scene, you can go into the expression Edit mode by navigating to the expression in the Expression Poses mode work area. In this case, it is the Mouth CornerPull tgt.
Double-click its node. This will enter the Edit mode, and this is where you can start modeling an expression.
Editing the lipCornerPull
As an example, you will edit the lipCornerPull. This expression is a crucial part of the character's smile likeness, and activation of the lipCornerPull action unit represents the movement of the zygomatic major muscle. The primary movement stretches the mouth by pulling the corners upward and to the side, in the direction of the cheeks. The secondary movement covers the area around the outer eye regions. The cheeks are also going in the up direction and pushing the cheek skin toward and across the zygomatic bone.
Planning Edits Across the Branch
Before editing the lipCornerPull, look at the whole branch, as the shapes modeling process requires some planning and thinking in advance. You can make a lot of broken expressions if you keep modeling and leaving all of the other combinations unlocked. Keeping other combinations unlocked means that every edit you make to a certain expression causes that change to propagate to all of the dependent expression combinations. It is important to think in advance where those edits will go, and where you will not want them to transfer.
In the image below, you can see a graphical interpretation from the MetaHuman expression editor of lipCornerPull branch. This is grouped into a few smaller branches:
lipCornerPull+CheekRaise
lipCornerPull with closed jaw
lipCornerPull+jawOpen
lipCornerPull+jawOpenExtreme
lipCornerPull+mouthOH
When thinking about change propagation, you need to make sure that your changes are going to affect just those expressions that look similar to the base lipCornerPull expression. For example, the combo with cheek raise differs by just one small detail. Applying changes to the lips will benefit both of the expressions as both have a similar mouth shape. Combinations that look fairly different, like the lipCornerPull+jawOpen, will likely not benefit from changes to lipCornerPull with teeth closed. This is because the jawOpen component in that expression deforms the lipCornerPull base substantially and you cannot guarantee that propagating changes to this one (and other later combinations) will improve it.
Incorporating the Edits into the Rig
When you are happy with the shape you’ve created, it’s time to ingest it into the other expression combinations. Once you are done, press the Stop Editing button and the expression will be automatically calculated and updated so you can see the changes instantly.
After you transfer the changes and incorporate this expression into the rig, it is important to check how the rig works with the new lipCornerPull. It is essential to analyze the transitions across subsequent combinations, beginning with the closed-jaw configurations. This part of the lipCornerPull branch is divided into a few smaller ones. You have the combinations of lipCornerPull with upperLipRaise and lowerLipDepress making the smileOpen expression, which is important for the emotion of happiness (a real smile).
The smileStretch Branch
There is also the combination with mouthStretch. The smileStretch branch is specific as there are many influences to keep in mind. The smileStretch branch is a combination of lipCornerPull and mouthStretch expressions, both activated at the max but with influences in opposite directions on different face regions. This shape reveals the teeth during expressions.
These shapes have influence on the following:
Upper part of the face
Upper lip and just above it
Lower part of the face
Lower lip and just below it
Every action on the upper part of the face is the result of the lipCornerPull activation and every action on the lower part is coming from mouthStretch. In between are areas around the mouth corners and cheeks, which have less influence on them and can provide an artist room for creativity. Keep these influences in mind when modeling expressions, and think about how the changes will transfer to other expressions.
For example, if you want to change something on the upper lip on the lipCornerPull expression, you should consider whether you want those edits to transfer to the smileStretch branch. If you know that the lipCornerPull and smileStretch expressions both influence the shape of the upper lip, let those changes propagate further down the branch onto the smileStretch expression. However, If you are changing something on the upper lip of the mouthStretch shape, you might want to lock smileStretch, as mouthStretch does not have that much influence on the upper part of the face area in this branch.
These are not firm rules, but common situations that can always have exceptions.
jawOpen and cheekRaise Combinations
Further branches with jawOpen and jawOpenExtreme have similar expression combinations, but due to the jaw opening, you also need to consider what each one influences.
You locked those expressions when you were incorporating the lipCornerPull since there were bigger facial deformations while opening the jaw that caused the mouth shape to change significantly. The work on the lipCornerPull would not cause any significant change. Remember to do the modeling pass on these expressions and to check if there is any mismatch with lipCornerPull.
Another combo is lipCornerPull and CheekRaise, which represents a true full smile and happiness. This combo is essential for a good-looking rig as it represents a universal emotion. Whether you want to make a smirk or a really intense happy emotion, this combo will be present in all gradients of happiness.
Mixing Expressions in the mouthOh Branch
The last combination of concern is the mouthOh branch. These combinations are a mix between mouthOh expressions (Pucker, Funneler, Purse, mouthOh) and lipCornerPull. With the auto rig, you get consistent results from the start. If you want to add something custom, you can model them by using the blendshape deformer tool and mixing those expressions in ratios by adding the blendshape node with these two meshes as inputs on the third, neutral head mesh.
For example, you can use the meshes of both lipCornerPull and Pucker by activating these expressions on the rig head mesh with valid controls, then making duplicate meshes in the viewport.
You can use those duplicated meshes for further modeling. This way, you can add the influences of both expressions and mix them.
You can see in the image below an example of the lipCornerPull mixed with the Pucker shape. This is created by adding both the Pucker and LipCornerPull meshes as a blendshape node to the neutral head mesh. This mesh is clean, and is a good starting point for further edits or sculpting by hand. In the image below, you can see how this works in practice. Notice that the mouth is open and needs to be adjusted.
After you are satisfied with how the work-in-progress mesh looks, you can use it to set the final shape in the rig. Do this by entering Edit mode and setting the edit head mesh with this working mesh using a blendshape node.
Once you're done, press the Stop Editing button and the expression will be automatically calculated and updated.
This method of mixing two expressions into the final pose with the blendshape deform tool is valuable during the shapes-modeling process. It is useful for getting the wanted facial deformations on complex poses using two or more expressions.
NLS Joint Matching
The NLS algorithm approximates deformations that are defined only by joints toward the blendshape corrective deformations. The goal is to minimize the differences between the joints only result and the joints plus blendshapes result.
The NLS Joints Matching is done as a final step after expression editing is finished.
Once the editing is done, save the DNA file, assemble the scene with that latest DNA file, and run the NLS joints-matching algorithm to remove discrepancies between blendshapes and joints.
Run NLS Joint Matching
Load the DNA file.
Go to Expression Poses.
Assemble the scene.
Select the presets from the preset list. A Select All Presets option is available, which runs matching on all presets in the list.
Run NLS joints matching. Note that NLS matching takes time — approximately one hour.
An ML joints-matching option also exists and is faster, but it works only on human characters. Because the vampire is a stylized character, NLS matching is used.
After matching is finished, a prompt appears asking you to save the updated DNA file.
By default, the settings are configured to automatically load saved DNA files. If this setting is turned off, you must load the DNA file again and assemble a new scene to see the NLS updates.