I am creating a number of animations for a player character that will eventually be exported for use in a game engine (Unity, Unreal, Godot, etc., doesn't matter which). Unfortunately, the educational material I've been able to find is lacking in certain practical details.
(I understand that there are many different valid workflows that vary depending on studio, software, and even individuals, but for the purposes of this post, I'm looking for what's generally considered in the industry "best practice" in Blender or at least "equivalently valid.")
For example, there are obviously normal animations, but there are also "modifier" animations that are sometimes layered on top to create additional effects. (Being hit, varied torso motion while walking, etc.) For these "modifier" animations, obviously only the particular bones and channels (X-loc, Z-rot, etc.) that are being modified. I don't know how that relates to the "normal" animations, though--is every value supposed to have a keyframe? If so, where? If not, how do you make sure the animation plays the same every time? What about tweak bones when they're not being used, or scale channels in most things, or locked channels, or even -MCH or -DEF bones? Should this be stored in a default "blank" animation that just has a keyframe on every bone and channel, and every animation is built from this?
Additionally, what about FK/IK switchers? Some animations will use IK for, say, the arms, others FK, and others will switch mid-animation. Is it best practice to use a bone as a driver, or animate the switching on the fly per animation? Is this another thing that requires being keyframed for each animation regardless of whether it switches?
And what is best practice for storing each animation? Currently I just sort of have each Action named something like Character-ActionType-AdditionalInfo and stored as a fake user, but I've seen information relating to things needing to be pushed into the NLA editor for export. If that's true, is that a last-step thing?
TL;DR
- What bones and channels are supposed to be keyframed in an animation? All of them for consistency, or only the ones that are specifically Doing Something in the specific animation?
- Should I store IK-FK switching in a bone driver, and should this be keyframed in pretty much every animation?
- What is the best practice for storing animations--datablocks or in the NLA?