[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15175] trunk/blender/source/blender/src/ transform.c: PATCH: [#13656] Bad rotation computing for manual rotation higher than 180 degrees
Martin Poirier
theeth at yahoo.com
Mon Jun 9 18:54:54 CEST 2008
Revision: 15175
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15175
Author: theeth
Date: 2008-06-09 18:54:54 +0200 (Mon, 09 Jun 2008)
Log Message:
-----------
PATCH: [#13656] Bad rotation computing for manual rotation higher than 180 degrees
By Fabrice Tiercelin
This enables rotation angles of more than 180 degrees to result in the same rotation applied to the object (the result used to be clamps between -180 - 180 of the initial rotation).
The patch had to be modified to deal with IPO keys properly
Modified Paths:
--------------
trunk/blender/source/blender/src/transform.c
Modified: trunk/blender/source/blender/src/transform.c
===================================================================
--- trunk/blender/source/blender/src/transform.c 2008-06-09 16:49:33 UTC (rev 15174)
+++ trunk/blender/source/blender/src/transform.c 2008-06-09 16:54:54 UTC (rev 15175)
@@ -2530,15 +2530,22 @@
/* are there ipo keys? */
if(td->tdi) {
TransDataIpokey *tdi= td->tdi;
+ float current_rot[3];
float rot[3];
+ /* current IPO value for compatible euler */
+ current_rot[0] = tdi->rotx[0];
+ current_rot[1] = tdi->roty[0];
+ current_rot[2] = tdi->rotz[0];
+ VecMulf(current_rot, (float)(M_PI_2 / 9.0));
+
/* calculate the total rotatation in eulers */
VecAddf(eul, td->ext->irot, td->ext->drot);
EulToMat3(eul, obmat);
/* mat = transform, obmat = object rotation */
Mat3MulMat3(fmat, mat, obmat);
- Mat3ToCompatibleEul(fmat, eul, td->ext->irot);
+ Mat3ToCompatibleEul(fmat, eul, current_rot);
/* correct back for delta rot */
if(tdi->flag & TOB_IPODROT) {
@@ -2567,7 +2574,7 @@
/* mat = transform, obmat = object rotation */
Mat3MulMat3(fmat, smat, obmat);
- Mat3ToCompatibleEul(fmat, eul, td->ext->irot);
+ Mat3ToCompatibleEul(fmat, eul, td->ext->rot);
/* correct back for delta rot */
VecSubf(eul, eul, td->ext->drot);
More information about the Bf-blender-cvs
mailing list