I've got player models with varying arm lenghts, so an animation for holding a rifle, for example, will cause the left hand to be where it doesn't belong. The rifle is attached to the right index finger, so naturally it always fits.
I thought the best way to deal with this is by using IK with a marker/offset that is local to the rifle itself, but it seems that UE4 simply doesn't have an IK function that gives you control over both tip-rotation and joint-orientation.
If I use a 2-bone-IK node, I have (at least some) control over where the elbow is to point, but I can't set a target rotation for the hand. If I use FABRIK, I can set a target rotation, but UE will bend the arm in "unnatural ways" and there's nothing I can do about it.
Isn't this pretty pathetic for a so-called IK-system? Or do I miss something?
asked Mar 13 '16 at 07:04 AM in Using UE4
FABRIK is the right one. You want the tip to be hand_l and the joint to be upperarm_l. Effector transform space should be "World Space" and Effector rotation source should be "Maintain Local...". Then feed the Effector transform with GetSocketTransform in the event graph. Doing it like that works for me.
The problem with this method is that the socket transform you get is from one frame earlier so the left hand always trails behind a bit. To fix that, do what Jonas does in this tutorial. https://www.youtube.com/watch?v=tCgZxeFN5_8
The key is that when you use another bone as an effector, the transform parameter becomes an offset from that bone. So you can tie the left arm to the right hand and then eyeball the offset like the video shows.
Follow this question
Once you sign in you will be able to subscribe for any updates here