[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47914] trunk/blender/source/blender/ collada/SceneExporter.cpp: fix for exporting armature, when it is explicitly selected

Gaia Clary gaia.clary at machinimatrix.org
Thu Jun 14 20:29:40 CEST 2012


Revision: 47914
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47914
Author:   gaiaclary
Date:     2012-06-14 18:29:29 +0000 (Thu, 14 Jun 2012)
Log Message:
-----------
fix for exporting armature, when it is explicitly selected

Modified Paths:
--------------
    trunk/blender/source/blender/collada/SceneExporter.cpp

Modified: trunk/blender/source/blender/collada/SceneExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/SceneExporter.cpp	2012-06-14 18:04:26 UTC (rev 47913)
+++ trunk/blender/source/blender/collada/SceneExporter.cpp	2012-06-14 18:29:29 UTC (rev 47914)
@@ -84,10 +84,16 @@
 void SceneExporter::writeNodes(Object *ob, Scene *sce)
 {
 	// Add associated armature first if available
+	bool armature_exported = false;
 	Object *ob_arm = bc_get_assigned_armature(ob);
-	if (ob_arm != NULL && bc_is_marked(ob_arm)) {
-		bc_remove_mark(ob_arm);
-		writeNodes(ob_arm, sce);
+	if (ob_arm != NULL)
+	{
+		armature_exported = bc_is_in_Export_set(this->export_settings->export_set, ob_arm);
+		if (armature_exported && bc_is_marked(ob_arm)) {
+			bc_remove_mark(ob_arm);
+			writeNodes(ob_arm, sce);
+			armature_exported = true;
+		}
 	}
 
 	COLLADASW::Node colladaNode(mSW);
@@ -97,12 +103,11 @@
 
 	colladaNode.start();
 
-	bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob);
 	std::list<Object *> child_objects;
 
 	// list child objects
-	LinkNode *node = this->export_settings->export_set;
-	while (node) {
+	LinkNode *node;
+	for (node=this->export_settings->export_set; node; node=node->next) {
 		// cob - child object
 		Object *cob = (Object *)node->link;
 
@@ -118,10 +123,9 @@
 					break;
 			}
 		}
-		node = node->next;
 	}
 
-	if (ob->type == OB_MESH && this->export_settings->include_armatures && is_skinned_mesh)
+	if (ob->type == OB_MESH && armature_exported)
 		// for skinned mesh we write obmat in <bind_shape_matrix>
 		TransformWriter::add_node_transform_identity(colladaNode);
 	else
@@ -130,7 +134,7 @@
 	// <instance_geometry>
 	if (ob->type == OB_MESH) {
 		bool instance_controller_created = false;
-		if (this->export_settings->include_armatures && is_skinned_mesh) {
+		if (armature_exported) {
 			instance_controller_created = arm_exporter->add_instance_controller(ob);
 		}
 		if (!instance_controller_created) {




More information about the Bf-blender-cvs mailing list