Rotation Modes (Object vs Pose Modes)

I have always been confused by this.

When I select a models armature in Object mode, I find rotation mode is set to euler (XYZ), however if I put the armature into pose mode, I find that any bone I select is set to quaternion, even after selecting all bones in pose mode and setting the rotation to euler(XYZ).

I understand that quaternion rotations are used to eliminate gimbal lock, but why are pose bones not set to the pose mode rotation mode after changing the rotation method? If I change this, the pose mode rotations should follow, not be hard set to quaternion.

If I animate in this manner and bake the animation, what data is going to be created before passing the model to a game engine? Euler or Quaternion?

If quaternion and I pass to an engine that uses euler only is this going to pooch the animation in the engine?

If yes, without having to change the rotation mode for each bone individually or writing a python script to change them, how do I reset pose mode rotation mode from the default quaternion to euler?
If I select all bones in pose mode and set the rotation mode to euler(XYZ) using the tool menu, only the active bone gets changed, the rest stay quaternion until made active and changed.

Also, if I forget to change the rotation mode of each bone in pose mode, animate and create quaternion animations, is there an add-on out there that will convert the quaternion animation data to euler (XYZ) animation data or does baking convert the animation data to the object rotation mode?

TL;DR: you don’t have to worry about it half as hard as you are. It will just work.

Still, it’s good to get some understanding of this stuff, so:

A better way to put it is that quaternions rotate in single axis rotations, while Eulers have “torque”-- if you have an airplane rotating about the center of the world, the quaternion interpolation will give you a great circle that they actually fly, the shortest path between two points, while the Euler will curve somewhat. How much, depending on the exact points chosen, and the airplane’s default rotation and axes.

Not sure what you’re asking-- to change a bone’s transform to Euler, you set a bone to use XYZ Euler, in properties/bone/transform. Is that what you’re talking about with changing rotation method? In that case, what is it that’s not being set to it?

Edit: oh wait, maybe I get you-- are you looking at the rotation mode in object mode vs pose mode? In pose mode, it’s showing you the rotation mode of the bone. In object mode, it’s showing you the rotation mode of the entire armature. These are two different, unrelated things. If you’re not rotating your armature, your armature’s rotation mode doesn’t matter. (And personally, I prefer not to rotate armatures, I like transforming a root bone instead.)

I’m not sure, and it may depend on the export function, but it really doesn’t matter. Quaternion and Euler angles both represent the exact same orientations at their keyframes-- you can easily convert from one to another. Where they differ is in the interpolation between their keyframes. I don’t think there are any formats which specify interpolation, that’s entirely up to the engine that’s using them. So if you use a .blend in Unity, say, then whether your animations act like quats (normalized component like Blender uses, or slerp quats) or Eulers (any of the six flavors) depends entirely on how you tell Unity to interpolate-- at that point, it has nothing to do with the original .blend armature.

If you only have one keyframe for every thirty frames, you may see differences. But what most people are going to do is to sample their animation at 30hz-- ie, they’re going to bake their animation. And remember, it’s only interpolation that differs, not keyframes. Are there going to be differences between frames when your game is running at 60hz? There will be, but they’re likely to be minor, because the rotational changes at 30hz are small, and because it’s unlikely you even really looked at your Blender animation that carefully anyways-- it doesn’t even show you 60hz animation at default settings.

It’s not yes, but I’ll answer the question anyways because it’s useful info, and not just for this case. Select all your bones, with one bone active. Change the rotation type. Right click in the field and select “copy all to selected”. Not so hard.

There’s probably an addon, but you can do that without an addon by duplicating the bone or object, changing its rotation mode, giving it a copy transforms constraint targeting the original, and then baking the action. I wish Blender was smart enough to just update your animation with rotation mode changes-- yes, you’ll lose keyframe handles, but that’s invalid information with a rotation mode change anyways.

Sorry for the tardy reply Bandages, but thank you so much for the detailed explanations you’ve written here.
The main engine I’m looking at now is the Valve Source engine and it uses euler (XYZ) I believe as the primary rotation method, however, I am also looking at Unity and Leadwerks, so everything you’ve explained to is relevant.

For the conversion of Pose bones between rotation modes, I knew there had to be an easier way (banging head on desk repeating “DOH!!!” over and over again.) I was in the process of writing a script (which isn’t that hard to do, it was just tedious having to run a script on every model before I animate because of the default animation mode.)

I was thinking about attempting the suggestion you made on how to convert animations created in quaternion to eruler earlier, but got lost in how to actually constrain the 2 armatures and bake the euler animation, your explanation cleared that up for me.

Again Thank You for such a detailed explanation.