Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArystanbek Dyussenov <arystan.d@gmail.com>2009-11-04 18:25:57 +0300
committerArystanbek Dyussenov <arystan.d@gmail.com>2009-11-04 18:25:57 +0300
commitb36c4f39878eb90788c8d9bdda74ccd6eebcf41b (patch)
treef866e65e38821b3cb64e39c39de0b022f7b38382 /source/blender/collada
parent3ac98f1abd2f22acf3128b9564c4309b4b129ef9 (diff)
Merging change 24311 from COLLADA branch into trunk which should fix object-based rotation import/export. Bone rotation animation not fixed yet.
Diffstat (limited to 'source/blender/collada')
-rw-r--r--source/blender/collada/DocumentExporter.cpp4
-rw-r--r--source/blender/collada/DocumentImporter.cpp21
2 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index 09db4ba062f..b10a95e6418 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -1832,7 +1832,7 @@ public:
std::string new_rna_path;
if (strstr(rna_path, "rotation")) {
- new_rna_path = strstr(rna_path, "rotation");
+ new_rna_path = "rotation";
return new_rna_path + axis_name;
}
else if (strstr(rna_path, "location")) {
@@ -2058,7 +2058,7 @@ public:
if (!strcmp(fcu->rna_path, "location") ||
!strcmp(fcu->rna_path, "scale") ||
- !strcmp(fcu->rna_path, "rotation")) {
+ !strcmp(fcu->rna_path, "rotation_euler")) {
add_animation(fcu, id_name(ob));
}
diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp
index f31ac7d5b0b..0aa69d11949 100644
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@ -1721,6 +1721,8 @@ public:
new_tris = count_new_tris(mesh, me, new_tris);
read_faces(mesh, me, new_tris);
+
+ // make_edges(me, 0);
mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL);
@@ -1858,6 +1860,9 @@ private:
FCurve *fcu;
std::vector<FCurve*>::iterator it;
int i = 0;
+
+ char *p = strstr(rna_path, "rotation_euler");
+ bool is_rotation = p && *(p + strlen("rotation_euler")) == '\0';
for (it = curves.begin(); it != curves.end(); it++) {
fcu = *it;
@@ -1867,8 +1872,7 @@ private:
else fcu->array_index = array_index;
// convert degrees to radians for rotation
- char *p = strstr(rna_path, "rotation");
- if (p && *(p + strlen("rotation")) == '\0') {
+ if (is_rotation) {
for(int j = 0; j < fcu->totvert; j++) {
float rot_intan = fcu->bezt[j].vec[0][1];
float rot_output = fcu->bezt[j].vec[1][1];
@@ -1903,7 +1907,7 @@ private:
action_groups_add_channel(act, grp, fcu);
}
- if (p && *(p + strlen("rotation")) == '\0') {
+ if (is_rotation) {
fcurves_actionGroup_map[grp].push_back(fcu);
}
}
@@ -2051,9 +2055,9 @@ public:
case COLLADAFW::Transformation::ROTATE:
{
if (is_joint)
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.euler_rotation", joint_path);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path);
else
- BLI_strncpy(rna_path, "rotation", sizeof(rna_path));
+ BLI_strncpy(rna_path, "rotation_euler", sizeof(rna_path));
COLLADAFW::Rotate* rot = (COLLADAFW::Rotate*)animated.tm;
COLLADABU::Math::Vector3& axis = rot->getRotationAxis();
@@ -2082,8 +2086,7 @@ public:
}
break;
case COLLADAFW::AnimationList::AXISANGLE:
- // convert axis-angle to quat? or XYZ?
- break;
+ // TODO convert axis-angle to quat? or XYZ?
default:
fprintf(stderr, "AnimationClass %d is not supported for ROTATE transformation.\n",
binding.animationClass);
@@ -2124,7 +2127,7 @@ public:
add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated);
break;
default:
- fprintf(stderr, "AnimationClass %d is not supported for TRANSLATE transformation.\n",
+ fprintf(stderr, "AnimationClass %d is not supported for SCALE transformation.\n",
binding.animationClass);
}
}
@@ -2171,7 +2174,7 @@ public:
char rna_path[100];
BLI_snprintf(joint_path, sizeof(joint_path), "pose.pose_channels[\"%s\"]", grp->name);
- BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation", joint_path);
+ BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path);
FCurve *quatcu[4] = {
create_fcurve(0, rna_path),