Basic question about additive animation

In the Animation doc it states

“When making additive animations, Unity will calculate the difference between the first frame in the animation clip and the current frame. Then it will apply this difference on top of all other playing animations.”

Can anyone clarify this for me? So if I set a clip to “Additive”, it will calculate from the starting frame in its own clip to the “current frame”. What is the current frame here?

“When using Additive animations it is critical that you are also playing some other non-additive animation on every transform that is also used in the additive animation, otherwise the animations will add on top of the last frame’s result. This is most certainly not what you want.”

So this is pretty much telling me that I need to first run something in the “Blend” mode correct? Otherwise, it will add onto the “last” frame’s result. What is considered the last frame here?

For the first Q, think of an additive animation as a change, and not a position. Say a clip starts with your arm aimed forwards, and lowers (rotates) it down to your side. As an addAnim, it "means" to rotate your arm 90 degrees (around x.) Half-way through, it "means" a 45 degree x-rotation. That's what the "diff from 1st frame" is saying.

Current frame means the current frame of the AddAnim. An add plays -- speed, looping, ... -- like any other animation, and has a current frame, same as a normal one. The only difference is how it's used.

It's not as bad as it sounds, since decent add anims generally start from the rest pos (so my first example is terrible.) "difference from first frame" just means "difference from rest pose."

Back to the "change" idea. Suppose you have arms by your sides, swinging slightly. As a normal animation, that "means" to drop your arms down there, then move. As an add, it doesn't say anything about where your arms should be. Some other anim can be aiming your arms where-ever, and it only means to swing them slightly.

For question #2 -- yes, Additive needs to have a non-additive(blend) on a lower layer also playing. This makes logical sense. The point of an Add is to tweak the real animation. You have to adding it to something. If you just want arms swinging by your side, just play it as a normal (blend.) If you happen to have an add you want to play by itself, you can "add it to 0" by playing a 2-frame do-nothing anim as a base.

For fun, this is the error with just an add: suppose an add smoothly rotates 10, 11, 12 ... degrees. It expects a base to set the starting value, so 3rd frame it has baseAnim+12. With no base to do a reset, it just adds. Last frame is 10+11+12 degrees.

[EDIT/ response to comment]

1) The "base" is whatever is playing by the normal rules. If you have a three-way blend and also a left-arm only, whatever that makes is the base to add to. As usual, a real animation on a higher level covers below it, including adds.

2) Say an add wiggles up, down, up over 2 seconds. It always does that, from when you start it. If you start it midway through a jump, you still get up, down, up over two seconds, even if jumps fades into something else.

3) clampforever is nothing special -- it still sets the bone positions each frame. It just happens to pick the same pose a lot.