Blender Git Loki
Git Commits -> Revision fad9879
Revision fad9879 by Joshua Leung (animsys2) October 29, 2008, 11:20 (GMT) |
AnimSys2: Bone Rotation (aka choice of Quaternions or Eulers) This commit introduces an attempt at allowing animators to choose to use 'euler' rotations for bones (currently, only the default rotation order is used... multiple rotation orders may be implemented later). Animators often request this feature, so it's time to prove to us that it's genuinely useful! To switch between quaternions and eulers, use the toggles in the Transform Properties panel in PoseMode. This will switch (the active bone only) to completely using quaternion rotations or euler rotations. - this is a per-bone setting, but can be copied (Ctrl-C menu) - animation curves for quaternions/eulers will only animate the bone when their respective rotation mode is active for that bone (i.e. if you insert keyframes for a bone using quaternion rotations, then switch the bone to use eulers, bone will not be animated rotating until euler-rotation keyframes are added, and visa versa) - quaternion/euler rotation mode cannot be changed in the middle of an animation (it's not implemented, and I don't intend on doing so either... it's just asking for trouble in the long run) - by default, quaternions will be used (to preserve backwards compatability) and also because they provide smoother interpolation + no gimble lock - when switching between interpolation modes, there is conversion of the current rotation from quat<->euler (whichever direction is applicable) to avoid pops - euler rotations here use standard euler interpolation. In other words, these are not quats masquerading as eulers under a fancy skin. A number of additional notes: - Most tools which involve rotation have been adjusted to work with this so far. --> Note: Copy/Paste of poses doesn't work with this yet. - NLA pose blending is currently (experimentally) using a simple linear interpolation between euler values of poses. This may not well at all, and also there are some cases not covered by that yet. - Improved the keyframing code a bit to add a bit of flexibility so that keyframes could be inserted without doubling up entries. |
Commit Details:
Full Hash: fad9879d0681cb4529c9a6d16f4a16a0ea50ab29
SVN Revision: 17216
Parent Commit: 481831b
Lines Changed: +454, -155
14 Modified Paths:
/source/blender/blenkernel/intern/action.c (+23, -11) (Diff)
/source/blender/blenkernel/intern/armature.c (+17, -7) (Diff)
/source/blender/blenkernel/intern/ipo.c (+30, -7) (Diff)
/source/blender/include/BIF_keyframing.h (+4, -1) (Diff)
/source/blender/makesdna/DNA_action_types.h (+13, -1) (Diff)
/source/blender/makesdna/DNA_ipo_types.h (+6, -3) (Diff)
/source/blender/src/drawview.c (+23, -6) (Diff)
/source/blender/src/editarmature.c (+44, -28) (Diff)
/source/blender/src/editipo.c (+3, -1) (Diff)
/source/blender/src/editipo_lib.c (+10, -2) (Diff)
/source/blender/src/keyframing.c (+198, -59) (Diff)
/source/blender/src/poseobject.c (+15, -8) (Diff)
/source/blender/src/transform.c (+29, -7) (Diff)
/source/blender/src/transform_conversions.c (+39, -14) (Diff)
/source/blender/blenkernel/intern/armature.c (+17, -7) (Diff)
/source/blender/blenkernel/intern/ipo.c (+30, -7) (Diff)
/source/blender/include/BIF_keyframing.h (+4, -1) (Diff)
/source/blender/makesdna/DNA_action_types.h (+13, -1) (Diff)
/source/blender/makesdna/DNA_ipo_types.h (+6, -3) (Diff)
/source/blender/src/drawview.c (+23, -6) (Diff)
/source/blender/src/editarmature.c (+44, -28) (Diff)
/source/blender/src/editipo.c (+3, -1) (Diff)
/source/blender/src/editipo_lib.c (+10, -2) (Diff)
/source/blender/src/keyframing.c (+198, -59) (Diff)
/source/blender/src/poseobject.c (+15, -8) (Diff)
/source/blender/src/transform.c (+29, -7) (Diff)
/source/blender/src/transform_conversions.c (+39, -14) (Diff)