Using VR starter pack assets - How do you get the hand mesh to close and open - any tutorials?

Hi

I have been trying to breakdown the VR starter pack. I want to have the grip animation. If I copy the BP the hand grip, BUT the original stays there too - so I have a gripped hand PLUS the open hand.

I would rather start from scratch. I have got a motion controller actor which is spawned by my player pawn. This works fine. I have a left and right hand which move with my controllers.

I know I need to suss out skeletal meshes. Is there a tutorial that discusses how to control skeletal meshes for hands? How to open and close?

Thanks!

The VR content example uses a pretty elaborated hand animation because it also implements the capability to grab objects in the scene and let them go.

Here is high level how the hand animations are driven (right hand below, the left hand is exactly the same just mirrored):

  • The BP_MotionController includes an instance of the MannequindHand_Right skeletal mesh (you can see under Scene → MotionController → HandMesh).
  • The MannequindHand_Right skeletal mesh uses an animation blueprint, namely the RightHand_AnimBP, to play the animations (you can see it referenced in the properties under Animation)
  • To control the current animation of the hand and the transition between the various animations, the BP_MotionController sets the GripState variable in the RightHand_AnimBP. The rest is handled by the animation blueprint itself. Which GripState is set depends on the current status of the hand respect to object grabbing and proximity to grabbable objects.
  • GripState is an enumerative variable of type GripEnum and can take the following values: Open - CanGrab - Grab.
  • The RightHand_AnimBP uses the GripState set by the BP_MotionController and turn it into an internal variable Grip, which is then used as input to a 1D BlendSpace called RightGrip_BS.
  • The RightGrip_BS blend space blends the corresponding MannequinHand_Right_Open, MannequinHand_Right_CanGrab and MannequinHand_Right_Grab animations into a continuum, depending on an internal variable called Grip. This ensures a smooth transition between the animations. The continuum is driven by the Grip variable.
  • The AnimGraph inside the RightHand_AnimBP uses the output of the BlendSpace RightGrip_BS to set/play the current animation.

If you are not familiar with how animations are controlled inside UE4 this may sound daunting at first. Start with the RightHand_AnimBP and play with the Grip variable in it. See how it drives the position/animation of the hand. Then move back to the BP_MotionController and check out how the GripState is set. Try setting the GripState according to a different logic and see how the animation blueprint is reacting and animating the hand. This should help you understand the role of each class and how it has all been put together.

Hope this helps.

Cheers,
Marco.

2 Likes

This is great!

Question:
If you add a new animation, such as having the hand point with the index finger, how do you link it all up? I’ve got the animation and blend space set up, and I’ve added a new value in the enum called “Pointing”, but I can’t figure out how to tell it that the enum value represents that specific animation.

I would use a State Machine in the AnimBP. You can then drive two states, the Idle/Can Grab/Grab state, handled through the Blendspace 1D you already have, and the Point state, with its own pose. Then you can then adjust how the transition between the two states happens so to have a smooth result.

I would not add the Point state to the existing Blendspace 1D because it does not really blend (pun intended) with the Idle/Can Grab/Grab sequence. It is something completely different and it should be handled as such.