[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