[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39585] branches/soc-2011-pepper/source/ blender/collada: export animations if a bone is in a deform group.

Sukhitha Jayathilake pr.jayathilake at gmail.com
Sun Aug 21 15:51:04 CEST 2011


Revision: 39585
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39585
Author:   phabtar
Date:     2011-08-21 13:51:04 +0000 (Sun, 21 Aug 2011)
Log Message:
-----------
export animations if a bone is in a deform group. ( on hold )

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp
    branches/soc-2011-pepper/source/blender/collada/AnimationExporter.h
    branches/soc-2011-pepper/source/blender/collada/ArmatureExporter.cpp

Modified: branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp	2011-08-21 13:31:46 UTC (rev 39584)
+++ branches/soc-2011-pepper/source/blender/collada/AnimationExporter.cpp	2011-08-21 13:51:04 UTC (rev 39585)
@@ -352,13 +352,34 @@
 		if (!ob_arm->adt)
 			return;
 		
+		//This will only export animations of bones in deform group.
+		/*if(!is_bone_deform_group(bone))
+			return;*/
+		
 		sample_and_write_bone_animation_matrix(ob_arm, bone);
 
 		for (Bone *child = (Bone*)bone->childbase.first; child; child = child->next)
 			write_bone_animation_matrix(ob_arm, child);
 	}
 
-	
+	bool AnimationExporter::is_bone_deform_group(Bone * bone)
+	{   
+		bool is_def;
+		//Check if current bone is deform
+		if((bone->flag & BONE_NO_DEFORM) == 0 ) return true;
+		//Check child bones
+		else 
+		{   
+			for (Bone *child = (Bone*)bone->childbase.first; child; child = child->next){
+				//loop through all the children until deform bone is found, and then return
+				is_def = is_bone_deform_group(child);
+				if (is_def) return true;
+			}
+		}
+        //no deform bone found in children also
+		return false;
+	}
+
 	void AnimationExporter::sample_and_write_bone_animation_matrix(Object *ob_arm, Bone *bone)
 	{
 		bArmature *arm = (bArmature*)ob_arm->data;

Modified: branches/soc-2011-pepper/source/blender/collada/AnimationExporter.h
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/AnimationExporter.h	2011-08-21 13:31:46 UTC (rev 39584)
+++ branches/soc-2011-pepper/source/blender/collada/AnimationExporter.h	2011-08-21 13:51:04 UTC (rev 39585)
@@ -102,6 +102,8 @@
 
 	void sample_and_write_bone_animation(Object *ob_arm, Bone *bone, int transform_type);
 
+	bool is_bone_deform_group(Bone * bone);
+
 	void sample_and_write_bone_animation_matrix(Object *ob_arm, Bone *bone);
 
 	void sample_animation(float *v, std::vector<float> &frames, int type, Bone *bone, Object *ob_arm, bPoseChannel *pChan);

Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureExporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureExporter.cpp	2011-08-21 13:31:46 UTC (rev 39584)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureExporter.cpp	2011-08-21 13:51:04 UTC (rev 39585)
@@ -167,6 +167,7 @@
 // parent_mat is armature-space
 void ArmatureExporter::add_bone_node(Bone *bone, Object *ob_arm)
 {
+	/*if((bone->flag & BONE_NO_DEFORM) == 0 ){*/
 	std::string node_id = get_joint_id(bone, ob_arm);
 	std::string node_name = std::string(bone->name);
 	std::string node_sid = get_joint_sid(bone, ob_arm);




More information about the Bf-blender-cvs mailing list