Animation Blend Nodes and Normals

Three key blend nodes that I use in the animation blueprint of the character are 1) the blend node, 2) apply additive, and 3) layered blend per bone.



Three animation blend nodes: blend, apply additive, and layered blend per bone.

Both characters use their own normal maps. They each have normal maps for different wrinkles on the face that appear when showing an expression. I posted some normal maps earlier for the old character, but here is an update with both new characters.



Expressions in Zbrush

The new character needed to have his blend shape correctives fixed as well.



Low Poly version of the male head’s expressions.



Tweaks done to the character’s blendshape correctives.

From substance I baked out normal maps for the expresions, then isolated them in photoshop and assembled them all into one texture.



Expressions Normalmap Texture

In the material, I isolate each section of the texture, then take the red and green channels that get added to the character’s regular normal. There’s a parameter to control the intensity of the wrinkle, as well as a parameter tied to the animation/expression value.



A close up of the anger brow section.



Happy faces updated.


Above is an improvement from one of my earlier blog posts where I had first put the second character into the engine and his smile looked very odd.


DIYTldQVwAAN36D (1).jpg

Old version.

And another expression example, showing a variation in the brow and mouth wrinkles.




Disgust faces.











User Interface

Here is an update on the project’s user interface. There are three sections.



Emotion Wheel

The emotion wheel is an overview of the six key emotions. When you click on a level, the number on the tip of the petals will change.




The next section is the Sliders. These are similar to the emotion wheel, but more control is given to each expression amount. You can also switch to “face control” where you can change each part of the face individually.



Face Control




The temperament section changes the flavor of the expression being shown. The interface is divided into the four temperaments: Sanguine, Choleric, Phlegmatic, and Melancholic. Or, more simply, Relaxed to Analytic and Aggressive to Peaceful.


In the lower left corner is the option to switch the character to see the same expressions on them. You can also rotate the character around.





Fixing topology on a new character

When I adjust the topology on a character, or modify it enough to make a new one, there are some issues with the topology. There’s pinching and stretching, which makes it not ideal for animation deformation.

Here is my new character in zbrush:



New character in zbrush.


And here is how his topology originally ended up after I was done with sculpting:



Initial topology with unacceptable stretching near the mouth area.


Since his lips are smaller, there was a lot of pinching and stretching near the mouth area.

I started working on a simple method where I duplicated the high poly mesh, then on the original mesh, I used the smooth brush to smooth out topology areas.



Smoothed out mesh with a brush.


After I was done smoothing, I re-projected the high poly mesh onto the newly smoothed one. 99% of the time this works pretty well and I don’t have a lot of re-clean up to do afterward.



The project all button and the results on the left.

The resulting topology is now mostly cleaned up to send to Maya to be skinned.



Fixed topology.



In the character’s mesh file, I transfer the new topology using the transfer attributes tool and I only select the “vertex position” and I use the sample space “topology”.



Transfering the new topology over with the transfer attributes option.

Then, I make a copy of the old character’s skinning file. I export the skin weights using the Deform > export skin weights in the rigging menu and re-import with the import option after making tweaks to the head rig.





Previewing Pieces in Unreal

Here is a video of some of the facial expression portions of the face being applied to a rough idle animation. This UI is for testing the expressions. I also included a second character at the end, but he still needs some work. The smile (see picture below) is an example of some changes that need to be made for differing face shapes.


DIYTldQVwAAN36D (1).jpg

An example of a blend shape corrective for the smile that needs to be adjusted for the second character.


Baking Script – Update 2

I have another update on my animation baking tool, as well as a new tool I made to help me manage my animation layers and more easily export them. The scripts are done with mel and now have a UI and some added features.

The menu on the left is the menu that controls the baking and saving of a single animation or multiple batch animations. The right menu is what I made to faster control the layers being used.



The New Children

I’m adding a lot of new things. Some improvements to the head controls, improvements to blend shapes, skinning, and an almost ready prototype for the basic face shapes. I’ve done a little research on motion capture, but that’s a stretch goal. I’ve also worked on a few new and updated faces and models. Here are some preview images of the new children.


Hello again. I just wanted to make a brief post on some of the scripts I’ve been making to aid my thesis project.

The first script is very simple. I have a control rig and a skin rig. To save time for myself, I save the skin joints in a variable, then the control joints. Then the appropriate joints are skinned to the other. This is helpful when I have many joints I need to parent constraint and make changes to my rig hierarchy.

The next is actually just a few expressions I use for controlling blend shapes and the external face control rig. The reason I made the face control expression was so that I could easily control a joint with multiple controls. The blend shape expression was made because I’ve had to export and reimport my blend shapes a few times and I didn’t ware-import-key every blend shape individually. Also, when I bring in a new character, it will be easy to transfer the blend shapes over to the new geometry. I currently have 26 blend shapes, so this has saved a lot of time, and it’s much easier to debug.

The last script is the baking animation script. Before a rig gets sent to Unreal, I need to bake the joints and blend shapes, then strip out the control rig that won’t be used anymore in Unreal. Selecting all of the joints, baking them, etc, took a while. So this script allows me to select the chosen bones and blend shapes, the chosen meshes to export, and the “junk” stuff. It bakes the bones and blend shapes, deletes the “junk” then exports the mesh to a chosen folder after prompting for a name of the fbx file. There’s also an option to re-open the file with all of its joints returned to a pre-bake state so that I can then send out another different animation from the same file.

Eye Shader

Hello again. I also had an update on the shaders. Particularly for the eyes. I couldn’t get all of the features that Unreal’s latest eye shader has because I wanted to use my own geometry. But I found a few workarounds so that the shader would at least work for the project.


I might include eye dilation, but it’s a little buggy at the moment. It also does not react to the light, I’m modifying a parameter in the shader by hand.