[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35711] trunk/blender/source/blender/ collada: Fix [#26475] <instance_material> wrong in COLLADA export.

Nathan Letwory nathan at letworyinteractive.com
Tue Mar 22 23:51:03 CET 2011


Revision: 35711
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35711
Author:   jesterking
Date:     2011-03-22 22:51:02 +0000 (Tue, 22 Mar 2011)
Log Message:
-----------
Fix [#26475] <instance_material> wrong in COLLADA export.
reported by Juan Linietsky
fix by Imran Syed (freakabcd)

Use material index suffixed to material name to create symbolic name.

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

Modified: trunk/blender/source/blender/collada/GeometryExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/GeometryExporter.cpp	2011-03-22 22:00:26 UTC (rev 35710)
+++ trunk/blender/source/blender/collada/GeometryExporter.cpp	2011-03-22 22:51:02 UTC (rev 35711)
@@ -28,6 +28,8 @@
  */
 
 
+#include <sstream>
+
 #include "COLLADASWPrimitves.h"
 #include "COLLADASWSource.h"
 #include "COLLADASWVertices.h"
@@ -167,7 +169,9 @@
 		
 	// sets material name
 	if (ma) {
-		polylist.setMaterial(translate_id(id_name(ma)));
+		std::ostringstream ostr;
+		ostr << translate_id(id_name(ma)) << material_index+1;
+		polylist.setMaterial(ostr.str());
 	}
 			
 	COLLADASW::InputList &til = polylist.getInputList();

Modified: trunk/blender/source/blender/collada/InstanceWriter.cpp
===================================================================
--- trunk/blender/source/blender/collada/InstanceWriter.cpp	2011-03-22 22:00:26 UTC (rev 35710)
+++ trunk/blender/source/blender/collada/InstanceWriter.cpp	2011-03-22 22:51:02 UTC (rev 35711)
@@ -29,6 +29,7 @@
 
 
 #include <string>
+#include <sstream>
 
 #include "COLLADASWInstanceMaterial.h"
 
@@ -52,7 +53,9 @@
 		if (ma) {
 			std::string matid(get_material_id(ma));
 			matid = translate_id(matid);
-			COLLADASW::InstanceMaterial im(matid, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid));
+			std::ostringstream ostr;
+			ostr << translate_id(id_name(ma)) << a+1;
+			COLLADASW::InstanceMaterial im(ostr.str(), COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid));
 			
 			// create <bind_vertex_input> for each uv layer
 			Mesh *me = (Mesh*)ob->data;




More information about the Bf-blender-cvs mailing list