[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54398] trunk/blender/source/blender/ collada: [#33955] Collada Model Import Hangs Blender.

Gaia Clary gaia.clary at machinimatrix.org
Fri Feb 8 20:52:02 CET 2013


Revision: 54398
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54398
Author:   gaiaclary
Date:     2013-02-08 19:52:02 +0000 (Fri, 08 Feb 2013)
Log Message:
-----------
[#33955] Collada Model Import Hangs Blender. Optimized Object import for better performance. Added logging messages

Modified Paths:
--------------
    trunk/blender/source/blender/collada/DocumentImporter.cpp
    trunk/blender/source/blender/collada/collada_utils.cpp

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2013-02-08 17:28:39 UTC (rev 54397)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2013-02-08 19:52:02 UTC (rev 54398)
@@ -76,6 +76,9 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "WM_api.h"
+#include "WM_types.h"
+
 }
 
 #include "ExtraHandler.h"
@@ -207,6 +210,12 @@
 		for (unsigned int i = 0; i < roots.getCount(); i++) {
 			write_node(roots[i], NULL, sce, NULL, false);
 		}
+
+		Main *bmain = CTX_data_main(mContext);
+		DAG_scene_sort(bmain, sce);
+		DAG_ids_flush_update(bmain, 0);
+		WM_event_add_notifier(mContext, NC_OBJECT | ND_TRANSFORM, NULL);
+
 	}
 
 
@@ -424,9 +433,16 @@
 	Object *ob = NULL;
 	bool is_joint = node->getType() == COLLADAFW::Node::JOINT;
 	bool read_transform = true;
+	std::string id   = node->getOriginalId();
+	std::string name = node->getName();
 
 	std::vector<Object *> *objects_done = new std::vector<Object *>();
 
+	fprintf(stderr,
+			"Writing node id='%s', name='%s'\n",
+			id.c_str(),
+			name.c_str());
+
 	if (is_joint) {
 		armature_importer.add_joint(node, parent_node == NULL || parent_node->getType() != COLLADAFW::Node::JOINT, par, sce);
 	}
@@ -449,8 +465,6 @@
 			ob = mesh_importer.create_mesh_object(node, geom[geom_done], false, uid_material_map,
 			                                      material_texture_mapping_map);
 			if (ob == NULL) {
-				std::string id   = node->getOriginalId();
-				std::string name = node->getName();
 				fprintf(stderr,
 						"<node id=\"%s\", name=\"%s\" >...contains a reference to an unknown instance_mesh.\n",
 						id.c_str(),

Modified: trunk/blender/source/blender/collada/collada_utils.cpp
===================================================================
--- trunk/blender/source/blender/collada/collada_utils.cpp	2013-02-08 17:28:39 UTC (rev 54397)
+++ trunk/blender/source/blender/collada/collada_utils.cpp	2013-02-08 19:52:02 UTC (rev 54398)
@@ -116,10 +116,13 @@
 	ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA;
 	par->recalc |= OB_RECALC_OB;
 
+	/** done once after import
 	DAG_scene_sort(bmain, sce);
 	DAG_ids_flush_update(bmain, 0);
 	WM_event_add_notifier(C, NC_OBJECT | ND_TRANSFORM, NULL);
+    */
 
+
 	return true;
 }
 




More information about the Bf-blender-cvs mailing list