Metahuman C_eyesAim looking down?

Hey folks,

I am using Unreal Engine 5.5.3, and I would like my Metahuman to look at the player. Not using Sequencer, but the PostProcess AnimBP and Control Rig.

I’ve been following this tutorial for this: https://www.youtube.com/watch?v=Xg1s8bliOUs&ab_channel=SpicyGameIngredients

But like many in the comments and the channel’s Discord, I am experiencing an issue with the character gazing downwards? The interesting bit to me is, that this doesn’t happen in the AnimBP/PostProcess BP, and only on the skeletal mesh directly.

Here are my steps:

  • Open ‘Metahumans/Common/Face/Face_PostProcess_AnimBP’

  • In the AnimGraph, add a Control Rig node before ‘AnimNode_RigLogic’

  • Use ‘Face_ControlBoard_CtrlRig’ as the Control Rig

  • Expose the pins ‘CTRL_lookAtSwitch’ and ‘CTRL_C_eyesAim’

:warning: When changing CTRL_lookAtSwitch to 1, the character’s FaceMesh has the eyes looking down, but only on the Mesh directly and not in the PostProcess or AnimBP.

Screenshots:

:white_check_mark: Metahumans/Common/Face/Face_PostProcess_AnimBP’:

:white_check_mark: Face_ControlBoard_CtrlRig:

:x:FaceMesh skeletal mesh:

Any ideas what could cause this and how to fix it? Thanks in advance!

Hi! The tutorial seems legit and offers better (and better explained) solution than mine, shame i didn’t see it earlier!

Although i’m not sure if we need to place C_EyesAim exactly on imaginary plane as said in video, i got away with feeding it world coordinates just fine. But please tell me if you have better solution!

To make metahuman look exactly where i want it, i made three sockets:

  1. Eyes aim socket, approximately where this aim thing is (i couldn’t place it exactly, because different metahumans have different head height, but same skeleton, so i just compromised.)
  2. Left eye socket
  3. Right eye socket


The pivot of the sockets matters, since i will use it in transforms calculations. Also, because i use sockets, i can no longer worry about scaling the mesh or rotating. In solution from the video, i assume, scale would break things because of hardcoded values.

Now we calculate relative transform. As you see, rotation is probably unnecessary, but i left it in case i misremember something. So definitely try it without rotation first, to not create two redundant sockets for eyes

Blueprint graph

Then i simply save calculated value and pass it in control rig

Hey!

Where you able to solve this issue? I’m having the same problem. Not sure what is wrong.

I did not know someone had replied here, sorry. For future reference:
Yes, I did manage to fix it, and it was pretty easy:

1. Copy the existing ‘Face_ControlBoard_CtrlRig’ Control Rig and name it to your liking.
2. Open up your newly copied Control Rig
3. Look for the “Eye Aim Controls” comment box as shown in the screenshot
4. Disconnect the “Get Transform - Control” in front of both ‘Aim’ functions
5. Add a new Vector variable and name it for example ‘Look At Target’. This vector will be a world location.
6. Drag in your vector variable and connect it as shown in the screenshot.

Back in your Face_PostProcess or Face_AnimBP (I used postprocess):

  1. In your AnimGraph, add a Control Rig node. I added it right before the “HeadMovedPose” node.
  2. On the Control Rig node, browse to your Control Rig, and your “Look At Target” variable should appear in the list. Tick “Use Pin” to expose it.
  3. Hook up a world vector into your exposed Look At Target
  4. In your Event Graph, get the location from the player or wherever you want the character to look at.

Hope it helps!