[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37832] branches/soc-2011-pepper/source/ blender/collada: set_pose function completed.
Sukhitha Jayathilake
pr.jayathilake at gmail.com
Sun Jun 26 20:56:07 CEST 2011
Revision: 37832
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37832
Author: phabtar
Date: 2011-06-26 18:56:06 +0000 (Sun, 26 Jun 2011)
Log Message:
-----------
set_pose function completed. Algorithms to be checked.
(Still not the desired results )
Modified Paths:
--------------
branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp
branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h
Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp 2011-06-26 17:18:37 UTC (rev 37831)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp 2011-06-26 18:56:06 UTC (rev 37832)
@@ -405,11 +405,12 @@
// exit armature edit mode
- // set_pose(ob_arm , *ri, NULL, NULL );
-
unskinned_armature_map[(*ri)->getUniqueId()] = ob_arm;
ED_armature_from_edit(ob_arm);
+
+ set_pose(ob_arm , *ri, NULL, NULL );
+
ED_armature_edit_free(ob_arm);
DAG_id_tag_update(&ob_arm->id, OB_RECALC_OB|OB_RECALC_DATA);
}
@@ -537,51 +538,46 @@
// is a child of a node (not joint), root should be true since
// this is where we build armature bones from
-//void ArmatureImporter::set_pose ( Object * ob_arm , COLLADAFW::Node * root_node , EditBone *parent, float parent_mat[][4])
-//{
-// char * bone_name = (char *) bc_get_joint_name ( root_node);
-// float mat[4][4];
-// float obmat[4][4];
-//
-// bArmature * arm = (bArmature * ) ob_arm-> data ;
-// EditBone *edbone = NULL ;
-// for (edBone=arm->edbo->first; edBone; edBone=edBone->next){
-// bone = get_named_bone_bonechildren (curBone, name);
-// if (bone)
-// return bone;
-// }
-//
-// // object-space
-// get_node_mat(obmat, root_node, NULL, NULL);
-//
-// //if(*edbone)
-// bPoseChannel * pchan = get_pose_channel(ob_arm -> pose , bone_name);
-// //else fprintf ( "",
-//
-// // get world-space
-// if (parent){
-// mul_m4_m4m4(mat, obmat, parent_mat);
-// bPoseChannel *parchan = get_pose_channel(ob_arm->pose, parent->name);
-//
-// 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);
-// }
-//
-//
-//
-//
-// COLLADAFW::NodePointerArray& children = root_node->getChildNodes();
-// for (unsigned int i = 0; i < children.getCount(); i++) {
-// set_pose(ob_arm, children[i], edbone, mat);
-// }
-//
-//}
+void ArmatureImporter::set_pose ( Object * ob_arm , COLLADAFW::Node * root_node , char *parentname, float parent_mat[][4])
+{
+ char * bone_name = (char *) bc_get_joint_name ( root_node);
+ float mat[4][4];
+ float obmat[4][4];
+ bArmature * arm = (bArmature * ) ob_arm-> data ;
+ EditBone *edbone = NULL ;
+
+ // object-space
+ get_node_mat(obmat, root_node, NULL, NULL);
+
+ //if(*edbone)
+ bPoseChannel * pchan = get_pose_channel(ob_arm -> pose , bone_name);
+ //else fprintf ( "",
+
+ // get world-space
+ if (parentname){
+ mul_m4_m4m4(mat, obmat, parent_mat);
+ 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);
+ }
+
+
+
+
+ COLLADAFW::NodePointerArray& children = root_node->getChildNodes();
+ for (unsigned int i = 0; i < children.getCount(); i++) {
+ set_pose(ob_arm, children[i], bone_name, mat);
+ }
+
+}
+
void ArmatureImporter::add_joint(COLLADAFW::Node *node, bool root, Object *parent, Scene *sce)
{
joint_by_uid[node->getUniqueId()] = node;
Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h 2011-06-26 17:18:37 UTC (rev 37831)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h 2011-06-26 18:56:06 UTC (rev 37832)
@@ -113,7 +113,7 @@
void fix_leaf_bones();
-// void set_pose ( Object * ob_arm , COLLADAFW::Node * root_node , EditBone *parent, float parent_mat[][4]);
+ void set_pose ( Object * ob_arm , COLLADAFW::Node * root_node ,char * parentname, float parent_mat[][4]);
#if 0
More information about the Bf-blender-cvs
mailing list