diff --git a/intern/iksolver/intern/IK_QSegment.cpp b/intern/iksolver/intern/IK_QSegment.cpp index a5217ed91d6..bf38c369363 100644 --- a/intern/iksolver/intern/IK_QSegment.cpp +++ b/intern/iksolver/intern/IK_QSegment.cpp @@ -61,11 +61,11 @@ static MT_Scalar EulerAngleFromMatrix(const MT_Matrix3x3& R, int axis) MT_Scalar t = sqrt(R[0][0]*R[0][0] + R[0][1]*R[0][1]); if (t > 16.0*MT_EPSILON) { - if (axis == 0) return atan2(R[1][2], R[2][2]); + if (axis == 0) return -atan2(R[1][2], R[2][2]); else if(axis == 1) return atan2(-R[0][2], t); - else return atan2(R[0][1], R[0][0]); + else return -atan2(R[0][1], R[0][0]); } else { - if (axis == 0) return atan2(-R[2][1], R[1][1]); + if (axis == 0) return -atan2(-R[2][1], R[1][1]); else if(axis == 1) return atan2(-R[0][2], t); else return 0.0f; } diff --git a/source/blender/src/editarmature.c b/source/blender/src/editarmature.c index 9dcb190509f..66ee7a83f3a 100644 --- a/source/blender/src/editarmature.c +++ b/source/blender/src/editarmature.c @@ -2947,7 +2947,7 @@ static int hide_selected_pose_bone(Object *ob, Bone *bone, void *ptr) if(arm->layer & bone->layer) { if (bone->flag & BONE_SELECTED) { bone->flag |= BONE_HIDDEN_P; - bone->flag &= ~BONE_SELECTED; + bone->flag &= ~(BONE_SELECTED|BONE_ACTIVE); } } return 0; @@ -2977,6 +2977,7 @@ static int hide_unselected_pose_bone(Object *ob, Bone *bone, void *ptr) if(arm->layer & bone->layer) { if (~bone->flag & BONE_SELECTED) { bone->flag |= BONE_HIDDEN_P; + bone->flag &= ~BONE_ACTIVE; } } return 0;