[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33500] trunk/blender/source: bugfix [ #24995] Object rotation seems to be applied incorrectly
Campbell Barton
ideasman42 at gmail.com
Mon Dec 6 08:45:08 CET 2010
Revision: 33500
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33500
Author: campbellbarton
Date: 2010-12-06 08:45:07 +0100 (Mon, 06 Dec 2010)
Log Message:
-----------
bugfix [#24995] Object rotation seems to be applied incorrectly
- Object actuator rotation was being scaled by: (1/0.02)*2*PI/360 == 0.872, since revision 2.
- Remove scaling and use do_versions to adjust existing files.
Revision Links:
--------------
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=2
Modified Paths:
--------------
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesdna/DNA_actuator_types.h
trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-12-06 06:26:47 UTC (rev 33499)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-12-06 07:45:07 UTC (rev 33500)
@@ -11155,24 +11155,22 @@
}
/* put compatibility code here until next subversion bump */
- {
+ if (main->versionfile < 255 || (main->versionfile == 255 && main->subversionfile < 1)) {
Brush *br;
+ ParticleSettings *part;
+ bScreen *sc;
+ Object *ob;
+
for(br= main->brush.first; br; br= br->id.next) {
if(br->ob_mode==0)
br->ob_mode= OB_MODE_ALL_PAINT;
}
-
- }
- {
- ParticleSettings *part;
+
for(part = main->particle.first; part; part = part->id.next) {
if(part->boids)
part->boids->pitch = 1.0f;
}
- }
- {
- bScreen *sc;
for (sc= main->screen.first; sc; sc= sc->id.next) {
ScrArea *sa;
for (sa= sc->areabase.first; sa; sa= sa->next) {
@@ -11198,8 +11196,22 @@
}
}
}
+
+ /* fix rotation actuators for objects so they use real angles (radians)
+ * since before blender went opensource this strange scalar was used: (1 / 0.02) * 2 * math.pi/360 */
+ for(ob= main->object.first; ob; ob= ob->id.next) {
+ bActuator *act= ob->actuators.first;
+ while(act) {
+ if (act->type==ACT_OBJECT) {
+ /* multiply velocity with 50 in old files */
+ bObjectActuator *oa= act->data;
+ mul_v3_fl(oa->drot, 0.8726646259971648f);
+ }
+ act= act->next;
+ }
+ }
}
-
+
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
Modified: trunk/blender/source/blender/makesdna/DNA_actuator_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2010-12-06 06:26:47 UTC (rev 33499)
+++ trunk/blender/source/blender/makesdna/DNA_actuator_types.h 2010-12-06 07:45:07 UTC (rev 33500)
@@ -112,7 +112,7 @@
short damping;
float forceloc[3], forcerot[3];
float pad[3], pad1[3];
- float dloc[3], drot[3];
+ float dloc[3], drot[3]; /* angle in radians */
float linearvelocity[3], angularvelocity[3];
struct Object *reference;
} bObjectActuator;
Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2010-12-06 06:26:47 UTC (rev 33499)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp 2010-12-06 07:45:07 UTC (rev 33500)
@@ -32,8 +32,6 @@
#pragma warning (disable : 4786)
#endif //WIN32
-#define BLENDER_HACK_DTIME 0.02
-
#include "MEM_guardedalloc.h"
#include "KX_BlenderSceneConverter.h"
@@ -151,13 +149,6 @@
KX_BLENDERTRUNC(obact->angularvelocity[2]));
short damping = obact->damping;
- drotvec /= BLENDER_HACK_DTIME;
- //drotvec /= BLENDER_HACK_DTIME;
- drotvec *= MT_2_PI/360.0;
- //dlocvec /= BLENDER_HACK_DTIME;
- //linvelvec /= BLENDER_HACK_DTIME;
- //angvelvec /= BLENDER_HACK_DTIME;
-
/* Blender uses a bit vector internally for the local-flags. In */
/* KX, we have four bools. The compiler should be smart enough */
/* to do the right thing. We need to explicitly convert here! */
More information about the Bf-blender-cvs
mailing list