[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26258] trunk/blender/source/blender: More fixes for radians-degrees, wasn't converting pose channel constraints
Brecht Van Lommel
brecht at blender.org
Mon Jan 25 19:38:09 CET 2010
Revision: 26258
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26258
Author: blendix
Date: 2010-01-25 19:38:09 +0100 (Mon, 25 Jan 2010)
Log Message:
-----------
More fixes for radians-degrees, wasn't converting pose channel constraints
properly yet, also did conversion ik min/max limits.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/makesrna/intern/rna_pose.c
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2010-01-25 18:09:46 UTC (rev 26257)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2010-01-25 18:38:09 UTC (rev 26258)
@@ -43,7 +43,7 @@
struct ReportList;
#define BLENDER_VERSION 250
-#define BLENDER_SUBVERSION 12
+#define BLENDER_SUBVERSION 13
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-01-25 18:09:46 UTC (rev 26257)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-01-25 18:38:09 UTC (rev 26258)
@@ -6497,7 +6497,36 @@
}
}
}
+
+static void do_version_constraints_radians_degrees_250(ListBase *lb)
+{
+ bConstraint *con;
+ /* fcurves for this are not converted, assumption is these were unlikely to be used */
+ for (con=lb->first; con; con=con->next) {
+ if(con->type==CONSTRAINT_TYPE_RIGIDBODYJOINT) {
+ bRigidBodyJointConstraint *data = con->data;
+ data->axX *= M_PI/180.0;
+ data->axY *= M_PI/180.0;
+ data->axZ *= M_PI/180.0;
+ }
+ else if(con->type==CONSTRAINT_TYPE_KINEMATIC) {
+ bKinematicConstraint *data = con->data;
+ data->poleangle *= M_PI/180.0;
+ }
+ else if(con->type==CONSTRAINT_TYPE_ROTLIMIT) {
+ bRotLimitConstraint *data = con->data;
+
+ data->xmin *= M_PI/180.0;
+ data->xmax *= M_PI/180.0;
+ data->ymin *= M_PI/180.0;
+ data->ymax *= M_PI/180.0;
+ data->zmin *= M_PI/180.0;
+ data->zmax *= M_PI/180.0;
+ }
+ }
+}
+
static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -10552,56 +10581,34 @@
/* put 2.50 compatibility code here until next subversion bump */
if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 13)) {
- /* still missing: - Pose channel IK (min x/y/z, max x/y/z)
- NOTE: if you do more conversion, be sure to do it outside of this and
+ /* NOTE: if you do more conversion, be sure to do it outside of this and
increase subversion again, otherwise it will not be correct */
+ Object *ob;
bAction *act;
- Object *ob;
- float rads_per_deg = M_PI / 180.0;
-
/* convert degrees to radians for internal use */
for (ob=main->object.first; ob; ob=ob->id.next) {
AnimData *adt = BKE_animdata_from_id((ID *)ob);
- bConstraint *con;
+ bPoseChannel *pchan;
- if(adt) {
+ if (adt) {
do_version_fcurves_radians_degrees_250(&adt->drivers, "rotation_euler");
do_version_fcurves_radians_degrees_250(&adt->drivers, "delta_rotation_euler");
do_version_fcurves_radians_degrees_250(&adt->drivers, "pole_angle");
}
-
- for (con=ob->constraints.first; con; con=con->next) {
-
- if(con->type==CONSTRAINT_TYPE_RIGIDBODYJOINT) {
- bRigidBodyJointConstraint *data = con->data;
- data->axX *= rads_per_deg;
- data->axY *= rads_per_deg;
- data->axZ *= rads_per_deg;
- }
- else if(con->type==CONSTRAINT_TYPE_KINEMATIC) {
- bKinematicConstraint *data = con->data;
- data->poleangle *= rads_per_deg;
- }
- else if(con->type==CONSTRAINT_TYPE_ROTLIMIT) {
- bRotLimitConstraint *data = con->data;
- if(adt) {
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "minimum_x");
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "minimum_y");
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "minimum_z");
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "maximum_x");
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "maximum_y");
- do_version_fcurves_radians_degrees_250(&adt->action->curves, "maximum_z");
- }
+ do_version_constraints_radians_degrees_250(&ob->constraints);
- data->xmin *= rads_per_deg;
- data->xmax *= rads_per_deg;
- data->ymin *= rads_per_deg;
- data->ymax *= rads_per_deg;
- data->zmin *= rads_per_deg;
- data->zmax *= rads_per_deg;
+ if (ob->pose) {
+ for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) {
+ pchan->limitmin[0] *= M_PI/180.0;
+ pchan->limitmin[1] *= M_PI/180.0;
+ pchan->limitmin[2] *= M_PI/180.0;
+ pchan->limitmax[0] *= M_PI/180.0;
+ pchan->limitmax[1] *= M_PI/180.0;
+ pchan->limitmax[2] *= M_PI/180.0;
+ do_version_constraints_radians_degrees_250(&pchan->constraints);
}
}
}
Modified: trunk/blender/source/blender/makesrna/intern/rna_pose.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_pose.c 2010-01-25 18:09:46 UTC (rev 26257)
+++ trunk/blender/source/blender/makesrna/intern/rna_pose.c 2010-01-25 18:38:09 UTC (rev 26258)
@@ -37,6 +37,8 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "BLI_math.h"
+
#include "WM_types.h"
#ifdef RNA_RUNTIME
@@ -44,7 +46,6 @@
#include "BIK_api.h"
#include "BKE_action.h"
#include "BKE_armature.h"
-#include "BLI_math.h"
#include "DNA_userdef_types.h"
@@ -860,44 +861,44 @@
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_min_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_min_x", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmin[0]");
- RNA_def_property_range(prop, -180.0f, 0.0f);
+ RNA_def_property_range(prop, -M_PI, 0.0f);
RNA_def_property_ui_text(prop, "IK X Minimum", "Minimum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_max_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_max_x", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmax[0]");
- RNA_def_property_range(prop, 0.0f, 180.0f);
+ RNA_def_property_range(prop, 0.0f, M_PI);
RNA_def_property_ui_text(prop, "IK X Maximum", "Maximum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_min_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_min_y", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmin[1]");
- RNA_def_property_range(prop, -180.0f, 0.0f);
+ RNA_def_property_range(prop, -M_PI, 0.0f);
RNA_def_property_ui_text(prop, "IK Y Minimum", "Minimum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_max_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_max_y", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmax[1]");
- RNA_def_property_range(prop, 0.0f, 180.0f);
+ RNA_def_property_range(prop, 0.0f, M_PI);
RNA_def_property_ui_text(prop, "IK Y Maximum", "Maximum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_min_z", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_min_z", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmin[2]");
- RNA_def_property_range(prop, -180.0f, 0.0f);
+ RNA_def_property_range(prop, -M_PI, 0.0f);
RNA_def_property_ui_text(prop, "IK Z Minimum", "Minimum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_max_z", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_max_z", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "limitmax[2]");
- RNA_def_property_range(prop, 0.0f, 180.0f);
+ RNA_def_property_range(prop, 0.0f, M_PI);
RNA_def_property_ui_text(prop, "IK Z Maximum", "Maximum angles for IK Limit");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
More information about the Bf-blender-cvs
mailing list