Snap bones to start of montage?

I have a character with just a simple idle animation. The character has some parts of its body hidden (by hiding the bones). To reveal a new part of its body, I unhide the bone and play an anim montage that just moves that bone from inside to the outside of the character’s body.

The problem is that even though the bones are hidden, they are still animating in their idle position. So when I unhide the bone and play the montage, the body part appears in its final pose before blending to the start position of the montage. Then animating back to its final pose as the montage plays.

So the resulting effect is that the body part suddenly appears, gradually retracts back into the character’s body over a second, then animates back out.

What I want to do, is when unhiding the bone and playing the montage, I want to snap the bone to its start position in the montage. I don’t know how to do this or even if I’m thinking about this the right way?

I don’t know I’m right or not. I think you should use an animation blueprint to blend pose by bool or create a transition between animation states.

I did try the different blend nodes in the AnimBP. But they all just gave the same result. What I’m currently doing is just playing the idle animation, then connecting that to a Slot (which is what the anim montage plays on), which then just connects to the result of the output pose.

I thought maybe there might be a way to tell the anim montage to override the position of the bone it is animating. But it just blends with the idle animation, so the bone controlling the appearing body part tries to follow both animations at the same time.

Set the blending start time in the montage to 0 and/or animation events in the montage to trigger the hide/unhide.

Ah, I didn’t notice that Asset Details panel behind the Skeleton Tree panel. Setting the Blend In time to 0 does in fact cause it to snap to the beginning of the montage and then play correctly.

However I see one strange side effect of this. The montages blend in time was by default 0.25 seconds. Now with it set to 0, for some reason the idle animation (that is playing at the same time as the montage) seems to run in slow motion for what appears to be maybe 0.25 seconds when the montage starts playing. Then it looks like the idle animation suddenly tries to catch up to where it is supposed to be, so it continues in fast forward for a split second before returning to normal.

The result of all this is that for less than half a second, the idle animation appears to slow down, then speed up creating a very noticeable hitch, every time the montage is played. If I put the montage blend in time back to 0.25, the hitch goes away, but then I’m left with my original issue. Any ideas?

I’ve checked the montage animation very carefully to ensure it is not effecting any other bones. It’s a very simple animation I created in control rig and it only has two keyframes on one of the bones.

Use slots and a suiting blend. If the montage only uses some bones you should create a blend in you animation blueprint over the specific slot of your montage.

Thank you so much for your help. I actually stumbled on the Layered blend per bone node while experimenting and got it to work.

I connected the cached idle animation into the base pose as well as the montage slot. Then the montage (with blend in time 0) is connected to blend pose 0. In the layered blend per bone node, I added a branch filter that specifies the name of the first bone in the chain that this slot affects. Finally the output is connected to the result. Now it works perfectly.

I assumed I had just hacked something together that works (thinking that perhaps there was something wrong with my animation). It’s nice that you’ve validate what I’ve done as actually the right thing to do.