[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33111] trunk/blender/source/blender/ collada: Apply patch [#24722] COLLADA exporter: handle instancing

Nathan Letwory nathan at letworyinteractive.com
Tue Nov 16 23:27:33 CET 2010


Revision: 33111
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33111
Author:   jesterking
Date:     2010-11-16 23:27:31 +0100 (Tue, 16 Nov 2010)

Log Message:
-----------
Apply patch [#24722] COLLADA exporter: handle instancing
Submitted by Wenzel Jakob

Patch adds handling of linked meshes: instead of generating separate geometry objects, use instances.

Modified Paths:
--------------
    trunk/blender/source/blender/collada/GeometryExporter.cpp
    trunk/blender/source/blender/collada/GeometryExporter.h
    trunk/blender/source/blender/collada/collada_internal.cpp

Modified: trunk/blender/source/blender/collada/GeometryExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.cpp	2010-11-16 17:37:26 UTC (rev 33110)
+++ trunk/blender/source/blender/collada/GeometryExporter.cpp	2010-11-16 22:27:31 UTC (rev 33111)
@@ -63,6 +63,11 @@
 	std::vector<Normal> nor;
 	std::vector<Face> norind;
 
+	// Skip if linked geometry was already exported from another reference
+	if (exportedGeometry.find(geom_id) != exportedGeometry.end())
+		return;
+	exportedGeometry.insert(geom_id);
+
 	bool has_color = (bool)CustomData_has_layer(&me->fdata, CD_MCOL);
 
 	create_normals(nor, norind, me);

Modified: trunk/blender/source/blender/collada/GeometryExporter.h
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.h	2010-11-16 17:37:26 UTC (rev 33110)
+++ trunk/blender/source/blender/collada/GeometryExporter.h	2010-11-16 22:27:31 UTC (rev 33111)
@@ -28,6 +28,7 @@
 
 #include <string>
 #include <vector>
+#include <set>
 
 #include "COLLADASWStreamWriter.h"
 #include "COLLADASWLibraryGeometries.h"
@@ -89,6 +90,8 @@
 	COLLADASW::URI makeUrl(std::string id);
 	
 	/* int getTriCount(MFace *faces, int totface);*/
+private:
+	std::set<std::string> exportedGeometry;
 };
 
 struct GeometryFunctor {

Modified: trunk/blender/source/blender/collada/collada_internal.cpp
===================================================================
--- trunk/blender/source/blender/collada/collada_internal.cpp	2010-11-16 17:37:26 UTC (rev 33110)
+++ trunk/blender/source/blender/collada/collada_internal.cpp	2010-11-16 22:27:31 UTC (rev 33111)
@@ -247,7 +247,7 @@
 
 std::string get_geometry_id(Object *ob)
 {
-	return translate_id(id_name(ob)) + "-mesh";
+	return translate_id(id_name(ob->data)) + "-mesh";
 }
 
 std::string get_light_id(Object *ob)





More information about the Bf-blender-cvs mailing list