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
path: root/source
diff options
context:
space:
mode:
authorSukhitha Prabhath Jayathilake <pr.jayathilake@gmail.com>2011-06-28 23:30:00 +0400
committerSukhitha Prabhath Jayathilake <pr.jayathilake@gmail.com>2011-06-28 23:30:00 +0400
commitcaef67eb923e37accdbb0664f90c99fe928406c2 (patch)
tree62eb2929332b09983e0f55385a2630dd4c5a2b73 /source
parent0b41c479e46399a63d2cae5506325950842dc787 (diff)
Set Edit bone roll on Armature Import.
+ Light->Color Sid for testing.
Diffstat (limited to 'source')
-rw-r--r--source/blender/collada/AnimationImporter.cpp31
-rw-r--r--source/blender/collada/ArmatureExporter.cpp7
-rw-r--r--source/blender/collada/ArmatureImporter.cpp19
-rw-r--r--source/blender/collada/CameraExporter.cpp2
-rw-r--r--source/blender/collada/LightExporter.cpp2
5 files changed, 24 insertions, 37 deletions
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp
index 3b33ad0dee6..bb11f815b40 100644
--- a/source/blender/collada/AnimationImporter.cpp
+++ b/source/blender/collada/AnimationImporter.cpp
@@ -776,36 +776,7 @@ void AnimationImporter::translate_Animations_NEW ( COLLADAFW::Node * node ,
ob->rotmode = ROT_MODE_EUL;
}
}
- // if (is_joint)
- //{
- // float mat[4][4];
- // float obmat[4][4];
-
- // // object-space
- // get_node_mat(obmat, node, NULL, NULL);
- // bPoseChannel *chan = get_pose_channel(ob->pose, bone_name);
- //
- // bArmature * arm = (bArmature *) ob->data;
- //
- // Bone *cur = get_named_bone( arm , bone_name );
-
- // if (cur->parent){
- // COLLADAFW::Node * parent = armature_importer->joint_parent_map.find(node->getUniqueId());
- // float[4][4] parent_mat;
- // get_node_mat ( parent_mat, parent, NULL, NULL );
- // mul_m4_m4m4(mat, obmat, parent_mat);
- // bPoseChannel *parchan = get_pose_channel(ob->pose, cur->parent->name);
- // if ( parchan && chan)
- // mul_m4_m4m4(pchan->pose_mat, mat , parchan->pose_mat);
- // }
- // else {
- // copy_m4_m4(mat, obmat);
- // float invObmat[4][4];
- // invert_m4_m4(invObmat, ob->obmat);
- // if(pchan)
- // mul_m4_m4m4(pchan->pose_mat, mat, invObmat);
- // }
- //}
+
}
}
diff --git a/source/blender/collada/ArmatureExporter.cpp b/source/blender/collada/ArmatureExporter.cpp
index 90c3cfbb001..b98e750aa86 100644
--- a/source/blender/collada/ArmatureExporter.cpp
+++ b/source/blender/collada/ArmatureExporter.cpp
@@ -351,12 +351,17 @@ std::string ArmatureExporter::add_inv_bind_mats_source(Object *ob_arm, ListBase
bPoseChannel *pchan = get_pose_channel(pose, def->name);
+ float pose_mat[4][4];
float mat[4][4];
float world[4][4];
float inv_bind_mat[4][4];
+ // pose_mat is the same as pchan->pose_mat, but without the rotation
+ unit_m4(pose_mat);
+ translate_m4(pose_mat, pchan->pose_head[0], pchan->pose_head[1], pchan->pose_head[2]);
+
// make world-space matrix, pose_mat is armature-space
- mul_m4_m4m4(world, pchan->pose_mat, ob_arm->obmat);
+ mul_m4_m4m4(world, pose_mat, ob_arm->obmat);
invert_m4_m4(mat, world);
converter.mat4_to_dae(inv_bind_mat, mat);
diff --git a/source/blender/collada/ArmatureImporter.cpp b/source/blender/collada/ArmatureImporter.cpp
index ad8ad690ef5..4e330738026 100644
--- a/source/blender/collada/ArmatureImporter.cpp
+++ b/source/blender/collada/ArmatureImporter.cpp
@@ -96,13 +96,17 @@ void ArmatureImporter::create_unskinned_bone( COLLADAFW::Node *node, EditBone *p
bPoseChannel *pchan = get_pose_channel(ob_arm->pose, (char*)bc_get_joint_name(node));
if (parent) bone->parent = parent;
-
+ float ax[3];
+ float angle = NULL;
+
// get world-space
if (parent){
mul_m4_m4m4(mat, obmat, parent_mat);
bPoseChannel *parchan = get_pose_channel(ob_arm->pose, parent->name);
if ( parchan && pchan)
mul_m4_m4m4(pchan->pose_mat, mat , parchan->pose_mat);
+ mat4_to_axis_angle(ax,&angle,mat);
+ bone->roll = angle;
}
else {
copy_m4_m4(mat, obmat);
@@ -110,6 +114,8 @@ void ArmatureImporter::create_unskinned_bone( COLLADAFW::Node *node, EditBone *p
invert_m4_m4(invObmat, ob_arm->obmat);
if(pchan)
mul_m4_m4m4(pchan->pose_mat, mat, invObmat);
+ mat4_to_axis_angle(ax,&angle,mat);
+ bone->roll = angle;
}
@@ -545,7 +551,8 @@ void ArmatureImporter::set_pose ( Object * ob_arm , COLLADAFW::Node * root_node
float obmat[4][4];
bArmature * arm = (bArmature * ) ob_arm-> data ;
- EditBone *edbone = NULL ;
+ float ax[3];
+ float angle = NULL;
// object-space
get_node_mat(obmat, root_node, NULL, NULL);
@@ -560,15 +567,18 @@ void ArmatureImporter::set_pose ( Object * ob_arm , COLLADAFW::Node * root_node
bPoseChannel *parchan = get_pose_channel(ob_arm->pose, parentname);
mul_m4_m4m4(pchan->pose_mat, mat , parchan->pose_mat);
+
}
else {
copy_m4_m4(mat, obmat);
float invObmat[4][4];
invert_m4_m4(invObmat, ob_arm->obmat);
mul_m4_m4m4(pchan->pose_mat, mat, invObmat);
+
}
-
+ mat4_to_axis_angle(ax,&angle,mat);
+ pchan->bone->roll = angle;
COLLADAFW::NodePointerArray& children = root_node->getChildNodes();
@@ -632,7 +642,8 @@ void ArmatureImporter::make_armatures(bContext *C)
// free memory stolen from SkinControllerData
skin.free();
}
-
+
+ //for bones without skins
create_armature_bones();
}
diff --git a/source/blender/collada/CameraExporter.cpp b/source/blender/collada/CameraExporter.cpp
index f8fa0fd55c0..9d09f170776 100644
--- a/source/blender/collada/CameraExporter.cpp
+++ b/source/blender/collada/CameraExporter.cpp
@@ -73,7 +73,7 @@ void CamerasExporter::operator()(Object *ob, Scene *sce)
if (cam->type == CAM_PERSP) {
COLLADASW::PerspectiveOptic persp(mSW);
persp.setXFov(lens_to_angle(cam->lens)*(180.0f/M_PI));
- persp.setAspectRatio((float)(sce->r.xsch)/(float)(sce->r.ysch));
+ persp.setAspectRatio((float)(sce->r.xsch)/(float)(sce->r.ysch),false,cam_name);
persp.setZFar(cam->clipend);
persp.setZNear(cam->clipsta);
COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_name);
diff --git a/source/blender/collada/LightExporter.cpp b/source/blender/collada/LightExporter.cpp
index 13eb62ca969..ebcc70013b4 100644
--- a/source/blender/collada/LightExporter.cpp
+++ b/source/blender/collada/LightExporter.cpp
@@ -101,7 +101,7 @@ void LightsExporter::operator()(Object *ob)
// spot
else if (la->type == LA_SPOT) {
COLLADASW::SpotLight cla(mSW, la_id, la_name);
- cla.setColor(col);
+ cla.setColor(col,false,"Color");
cla.setFallOffAngle(la->spotsize);
cla.setFallOffExponent(la->spotblend);
cla.setConstantAttenuation(constatt);