Bone seems to inherit scale transform from one animation to the other

Allright, hopefully you guys can help us out, we came across the following problem and have spent days trying to fix it already… before coming to the actual problem, here are some prerequisites:

We have a character that has certain pieces of equipment, such as as bow and a quiver.
This character can be seen both in the game as well as the inventory (via capture scene component).
As for in-game, the various blendspaces and animations are influenced and blended depending on what weapon you have equipped. In the inventory it’s simply using a “play animation” node whenever equipping something.

grafik

The quiver does not only consist of the quiver mesh as well as some fake arrows in it, but also a single full arrow with arrow head and feathers. While the actual quiver is skinned to a quiver joint, the full arrow is skinned to a weapon joint in the right hand.

It basically works like this:
In the “shoot arrow” animation, the arrow has a scale of 1 at first, then the bow is drawn, the arrow is shot and scaled to 0 when sent flying (at this point it’s replaced by an actor with projectile movement). Afterwards the character reaches for the quiver to pull out a new arrow at which point the arrow is scaled up again and all goes back to the original pose of the first frame.
All of the above works fine, except for the fact that we had to scale the bone to 0.01 instead of 0 as the animation won’t be properly imported otherwise. Not sure if that’s already a mistake…It might not be obvious for something as small as an arrow, but imagine this was a huge thing from the get go and scaling it to 0.01 would still leave it with dozens of centimeters… anyway, using Maya/Motionbuilder by the way.

At some point inventory logic came into play and we had cases where the player already had a quiver equipped, but no bow (yet).
In that situation we made the character play a neutral idle, not the combat idle where he holds the bow in his hand - obvisouly, we had to get rid of the arrow his hand then.

We tried two different approaches, both led to the same issues:

  1. setting the weapon bone to 0 scale for the whole animation which Unreal does not seem to accept hence we went with 0.01 scale in the animation again
  2. keeping the bone scale at 1 in the animation, but in Unreal, we added an additive transform layer with a curve that set the bone scale to 0.01 for the full duration of the animtion

For the animation itself it seems to work fine, but when a new animation is played,it seems to inherit the scale of the aforementioned bone… That means:

  • you start the game, have nothing equipped. neutral idle with additive transform layer is played that scales the weapon joints to zero
  • you equip a quiver, but nothing else. neutral idle is played (actually being triggered to play once more as equipment changed). the quiver can be seen, but not the arrow in hand as that’s attached to the weapon joint and that again is scaled to zero.
  • next thing would be to equip a bow which plays a bow idle animation.
    now the bone scale of the weapon joint seems to be inherited from the last animation and depending on how this was set up, there are two possible outcomes:
    – when the scale was zero in the netrual idle, the scale will stay zero for when the bow is equipped, hence the bow can’t be seen.
    – when the scale was 0.01, the reciprocal seems to be used as a multiplier (reciprocal as in “0.1 becomes *10” and “0.01 becomes *100”), so the bow is scaled up to a ridiculous size.
  • the only way to fix this is to equip yet another bow, which seems to recognize the scale of 1 for the weapon joint from the former bow idle animation that was triggered and it’s all back to normal for the time being.

Did anyone come across problems like these before and if so, how did you solve them?
Im the official documentation i read things like:

“Multi part mesh is supported via the Master Pose Component and then using Copy Pose From Mesh to copy animation pose data to any child skeletal mesh component. When doing this it’s important to ensure that the parent is ticked before the child to avoid using the previous frames transforms. See the documentation for more detail.” Modular Characters in Unreal Engine | Unreal Engine 5.0 Documentation

but I am not sure if that’s related… although it certainly sounds like it could be.
Any help would be very much apreciated, thanks in advance!