Good day community!
Newbie myself, and I’m using C++ with UE4.20.
I started with “ThirdPerson” demo, and have managed to create my own **Character **and **Controller **class, then I created my own **AnimGraphNode **and **AnimNode **to achieve full body IK.
In the **AnimInstance **I leave variables like HeadTag (Tag for target), TorsoTag, LftHandTag, RgtHandTag, LftFootTag, RgtFootTag and alpha values for my AnimNode.
Everything works accordingly until… I try to do some real work, like raycastinig in-game.
Question: How can I obtain Bone transforms in **Character **or **Controller **class?
Not the transforms after “FinalAnimationPose” in AnimGraph. I need the one before all the IK modification and stuff, the “untouched bone transforms” before “Default”, the StateMachine node.
Here’s something I’ve tried.
Inside AnimNode::EvaluateSkeletalControl_AnyThread(), I learnt to extract bone transform from FBoneContainer, FComponentSpacePoseContext, FBoneReference and EBoneControlSpace.
But EvaluateSkeletalControl_AnyThread and Controller::Tick, Controller::PrePhysicsTick, Controller::EndPhysicsTick are not in sync.
They runs in different frequency. The data I obtained in EvaluateSkeletalControl_AnyThread is unusable.
Then, 1st, I try to use Mesh->GetBoneLocation( boneName, EBoneSpaces::WorldSpace ) in my Character class.
2nd, I tried to use USkeletalMeshComponent->BoneSpaceTransforms[bone_index] in my AnimInstance.
Both methods gave me the “FinalAnimationPose” transforms.
I then created a custom StateMachine node and read through the parent, grand parent classes but, no luck. Don’t even know where to begin.
I’ve searched around and… still took me to nowhere.
Right now, I’m reading UAnimInstance::UpdateAnimation, but… it’s no easy task, especially without breakpoint, stepping through the codes.
If anyone knows how to obtain the “untouched bone transforms” in Character or Controller class, please help!
Best,