Say you have two animation clips, a Walk cycle and Run cycle. All of the same Bones are keyed in both clips, except the hands - in the Run cycle, the hands are rotated into fists. So when you play the Run cycle, it clenches the hands. Then, if you play the Walk cycle, the hands are still clenched - since those Bones weren't keyed, they stay as they were from the Run cycle.
I understand that's how Unity applies (Blender-generated) animations, the Bones that are keyed, get modified. But, assuming that's not what I want, how do I get the Walk cycle to behave? Or, more generally - how would I design several animations, so that they could all be played in any order, and play as expected?
Option One is obvious - key all the Bones. I assume it would work, and don't know of any specific drawbacks, but it seems like overkill. Is that the best answer? Are there side-effects?
Or are there other methods? For instance, is there some way to clear a pose in-between animations, that I don't know of?
You could play another animation with hands clenched/unclenched only on hands with lower/higher priority - depends what you're trying to achieve.
I'm no animation expert - I've used the Animator in Unity very little. But I have a suggestion:
You could tie a script Function call to the beginning of your "Run" animation (Unity lets you do this - calling functions at specific animation points). Have the script/function check if the previous animation was "Walk", and if so, have the script run another animation to "open" the hands.
Again... I haven't used animations a lot, but that would be one way of solving it (other than the two you already mentioned).
Your options one - key all the Bones - is by far the simplest way to solve this problem.
For instance, is there some way to
clear a pose in-between animations,
that I don't know of?
If you are playing your animations strictly one after the other without ever crossfading or playing multiple animations at the same time, then yes, you could "clear" the pose in between animations by using SampleAnimation on some animation with your desired default pose.
an alternate idea is to have the hand animations (open, clenched, etc). to be their own separate animations on a separate animation layer. Then say for each character action you could set a specific hand animation to also play at the same time...