Get bone transforms from AnimBP, NOT from Skeletal Mesh

Hi,

The attached picture explains it all. I have a character with a mesh and an AnimBP. The AnimBP puts something into the final animation node and the character mesh will play that animation.

But now I want to have something like the GetSocketTransform node that gives me the bone transforms (in bone or component space) before they are applied to the skeletal mesh.

The reason is that I have some IK for which the effectors depend on the current animation that is supposed to play if there wasn’t any IK.

In short: How do I get bone transforms from the AnimBP alone without any reference to the spawned character?

One very ugly solution to this is to have two mesh components in your character. One invisible mesh that serves as a reference and only plays the regular AnimBP and the other one which is visible and plays the AnimBP with the additional IK. However before I go that far I want to make sure if there isn’t any other way (Blueprint or C++).

I did quite some digging into the source code and I’m under the impression that it is not possible. However one could modify the source code. The AnimBP is evaluated in the skeletal mesh component. One could catch the bone transforms before the post process AnimBP (can be added to the mesh) is evaluated and then use the post process AnimBP to modify the animation based on the bone transforms coming from the regular AnimBP.

I will test this and post it as an answer if I succeed. It still isn’t an easy solution but at least it won’t include any nasty workarounds.

Hello, i am trying to deteriorate animation quality by applying inverse kinematics to the end bones and removing every other bit of information from the animation.
Since you didn’t reply to this post i am guessing what you tried didn’t work ?