After watching some wrinkle map videos from AAA games I wanted to setup something in Unreal Engine using blueprints to do the same. I built my characters in Reallusions Character Creator 2.0 beta that comes with iClone 7 pre order.

After setting up the basic character facial features, I saved the base normal map then activated appearance editor. I went in and used the AGE sliders to max out the age on various parts of the face. I use the substance PBR mode in appearance editor then close it to save the age changes.

I then went to the texture tab and clicked the normal maps with the updated age changes and saved each one to my drive. You can get the forehead, cheek, nose, and full face area maps from CC.

Then use an image editor to mix left and right age maps with a clean base normal map to get all parts of the face. Here was a quick first copy and paste of the eye wrinkle map to my base normal/bump map for crows feet.

I then imported the character into UE4 and built a new blueprint to drive parameters in the body_head material. The body_head material needs to be modified with your new normal maps, starting with the base then with parameters you lerp the changes with a scalar value 0 to 1. I used a blendLighten node to chain each one. These will match the blendshape animation values coming from iClone animation exports through 3DXchange.

At the end of the lerp change the last output feeds the normal map pin of the body_head material. From that point you can create a material instance of that master material and check/activate each of the parameters to expose them to your character blueprint.

I drive the lerp parameter values in blueprints based on the real-time values of the particular blendshape in the face. For example, cheeks moving up will pass through it’s value to the eye wrinkles (crows feet) so you get a smooth transition as the cheeks move further upward. You can find the values of each blend shape in your CC animation view. Scrub for the facial expression you are looking for then scroll through until you see the graph max out like in this example. Hovering over the highest point will show you the highest value that shape is hitting.

In the character blueprint I get the animation instance so I can get the curve values of the animations in real-time. I get by curve name which I simply copy and paste from the animation timeline view of that feature.

I added in a map range clamped node so I can control the scale of the values since some facial animations in the face only move from 0 to maybe .60 and needed the .60 to translate to the 1 value of the parameter value to get a better visual effect of certain facial features in actual animations. The actual lip sync animations will differ from a still min/max animation example as seen in my video.

Hopefully this gives you an idea on how to create your own dynamic wrinkle map setup in Unreal Engine 4 using iClone and Character Creator 2.0 beta.

Pin It on Pinterest