リビジョン | 7352fc1de016b99580e3fcb378f1f3ce4b08e467 (tree) |
---|---|
日時 | 2013-11-09 04:07:01 |
作者 | HMML <hmml3939@gmai...> |
コミッター | HMML |
Change eular rot axis and invert direction.
@@ -584,11 +584,11 @@ namespace MMM_GraphEditor | ||
584 | 584 | p = Math.Atan2(rm.M31, rm.M33); |
585 | 585 | y = Math.Atan2(rm.M12, rm.M22); |
586 | 586 | } |
587 | - else if (min_axis == 1) // Z-Y-X | |
587 | + else if (min_axis == 1) // X-Y-Z | |
588 | 588 | { |
589 | 589 | r = Math.Atan2(-rm.M32, rm.M33); |
590 | - p = Math.Asin(rm.M31); | |
591 | - y = Math.Atan2(-rm.M21, rm.M11); | |
590 | + p = -Math.Asin(rm.M13); | |
591 | + y = Math.Atan2(rm.M12, rm.M11); | |
592 | 592 | } |
593 | 593 | else // X-Z-Y |
594 | 594 | { |
@@ -596,7 +596,7 @@ namespace MMM_GraphEditor | ||
596 | 596 | p = Math.Atan2(-rm.M13, rm.M11); |
597 | 597 | y = Math.Asin(rm.M12); |
598 | 598 | } |
599 | - return new Vector3((float)r, (float)p, (float)y); | |
599 | + return new Vector3((float)-r, (float)-p, (float)-y); | |
600 | 600 | } |
601 | 601 | |
602 | 602 | private Matrix Quaternion2RotMatrix(Quaternion q) |
@@ -633,7 +633,7 @@ namespace MMM_GraphEditor | ||
633 | 633 | case 0: |
634 | 634 | return "Z-X-Y"; |
635 | 635 | case 1: |
636 | - return "Z-Y-X"; | |
636 | + return "X-Y-Z"; | |
637 | 637 | case 2: |
638 | 638 | return "X-Z-Y"; |
639 | 639 | } |
@@ -204,7 +204,7 @@ namespace MMM_GraphEditor | ||
204 | 204 | if (is_rot_modified) |
205 | 205 | { |
206 | 206 | float angle = (rot_val_from_graph_Y(key_move_start_pos.Y) - rot_val_from_graph_Y(e.Location.Y)); |
207 | - rot = Quaternion.Multiply(key_move_orig_rot, Quaternion.Normalize(Quaternion.RotationAxis(rot_axis, angle))); | |
207 | + rot = Quaternion.Multiply(key_move_orig_rot, Quaternion.Invert(Quaternion.Normalize(Quaternion.RotationAxis(rot_axis, angle)))); | |
208 | 208 | } |
209 | 209 | |
210 | 210 | MotionFrameData mfd = new MotionFrameData(o_mfd.FrameNumber, pos, rot); |