Download

Modify SkeletalMeshComponent bone transforms at runtime

Hi there,

been looking around for some time now but did not find a way to modify bone transforms (position, rotation, scale) at runtime without prior knowledge of which bones will be transformed.

  • UPoseableMeshComponent is not an option because it inherits from USkinnedMeshComponent. So I can’t use Animation Blueprints anymore.
  • FAnimInstanceProxy::GetCustomNodes() in conjunction with FAnimNode_ModifyBone is not an option because it only works when the anim instance is created and set to work without an animation blueprint.
  • Overriding FAnimInstanceProxy::Evaluate is not an option because the node graph is no longer being ran when it returns true. Not entirely sure on this one tho.

Any hint on what direction to look would be awesome. :slight_smile:

Thanks!

To do this you would have to create a custom AnimGraph node.
You can’t modify bones transforms from outside AnimBP while they are controlled by animation thread, unless you make some kind of custom IK node for the state machine graph.

USkeletalMeshComponent also inherits from USkinnedMeshComponent.

As Bruno says the only way to modify bone transforms on a skeletal mesh is via the animation thread, via an animation instance / blueprint. There is already a node for it (Transform Bone) - you just need to provide it with info.

If you want to modify on the game-thread, PoseableMeshComponent is the only way.

This works for my current needs thanks.

But I need USkeletalMeshComponent for things like morph targets. The default Transform Modify Bone node doesn’t work for me because I can’t dynamically change the bone from what I’ve seen.

Also going to investigate PostProcessAnimInstance, maybe that’s an option as well.

Thanks for your answers.