[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46197] trunk/blender/source/blender/ collada: Fix #31176: Collada model shows weird textures in editmode

Juha Mäki-Kanto kiskosika at gmail.com
Wed May 2 18:18:20 CEST 2012


Revision: 46197
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46197
Author:   kanttori
Date:     2012-05-02 16:18:20 +0000 (Wed, 02 May 2012)
Log Message:
-----------
Fix #31176: Collada model shows weird textures in editmode

Issue with multimaterial meshes and mface to mpoly conversion being before assignment of materials (which is done on meshobject instancing?).
Added explicit bmesh conversion to MeshImporter which is called from DocumentImporter::import.

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

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-05-02 16:17:04 UTC (rev 46196)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-05-02 16:18:20 UTC (rev 46197)
@@ -144,6 +144,8 @@
 	
 	delete ehandler;
 
+	mesh_importer.bmeshConversion();
+
 	return true;
 }
 

Modified: trunk/blender/source/blender/collada/MeshImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/MeshImporter.cpp	2012-05-02 16:17:04 UTC (rev 46196)
+++ trunk/blender/source/blender/collada/MeshImporter.cpp	2012-05-02 16:18:20 UTC (rev 46197)
@@ -727,6 +727,16 @@
 
 MeshImporter::MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce) : unitconverter(unitconv), scene(sce), armature_importer(arm) {}
 
+void MeshImporter::bmeshConversion()
+{
+	for (std::map<COLLADAFW::UniqueId, Mesh*>::iterator m = uid_mesh_map.begin();
+			m != uid_mesh_map.end(); ++m)
+	{
+		if ((*m).second) BKE_mesh_convert_mfaces_to_mpolys((*m).second);
+	}
+}
+
+
 Object *MeshImporter::get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid)
 {
 	if (uid_object_map.find(geom_uid) != uid_object_map.end())
@@ -921,7 +931,7 @@
 			fprintf(stderr, "invalid referenced material for %s\n", mat_array[i].getName().c_str());
 		}
 	}
-		
+
 	return ob;
 }
 
@@ -964,6 +974,5 @@
 
 	mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL);
 
-	BKE_mesh_convert_mfaces_to_mpolys(me);
 	return true;
 }

Modified: trunk/blender/source/blender/collada/MeshImporter.h
===================================================================
--- trunk/blender/source/blender/collada/MeshImporter.h	2012-05-02 16:17:04 UTC (rev 46196)
+++ trunk/blender/source/blender/collada/MeshImporter.h	2012-05-02 16:18:20 UTC (rev 46197)
@@ -129,6 +129,8 @@
 
 	MeshImporter(UnitConverter *unitconv, ArmatureImporter *arm, Scene *sce);
 
+	void bmeshConversion();
+
 	virtual Object *get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid);
 	
 	MTex *assign_textures_to_uvlayer(COLLADAFW::TextureCoordinateBinding &ctexture,




More information about the Bf-blender-cvs mailing list