[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46214] trunk/blender/source/blender: Fix #31250, #31248: wrong vertex normals after transform apply, collada import,

Brecht Van Lommel brechtvanlommel at pandora.be
Thu May 3 01:36:34 CEST 2012


Revision: 46214
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46214
Author:   blendix
Date:     2012-05-02 23:36:34 +0000 (Wed, 02 May 2012)
Log Message:
-----------
Fix #31250, #31248: wrong vertex normals after transform apply, collada import,
sculpt shape key switch. All cases that called this function needed parameter
only_face_normals set to false, so changed it now.

Also fixed wrong user count for imported mesh from collada and simplified
previous fix for tesselated faces to polygons conversion.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    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/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-05-02 23:36:31 UTC (rev 46213)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2012-05-02 23:36:34 UTC (rev 46214)
@@ -1783,7 +1783,7 @@
 {
 	mesh_calc_normals_mapping_ex(mverts, numVerts, mloop, mpolys,
 	                              numLoops, numPolys, polyNors_r, mfaces, numFaces,
-	                              origIndexFace, faceNors_r, TRUE);
+	                              origIndexFace, faceNors_r, FALSE);
 }
 
 void mesh_calc_normals_mapping_ex(MVert *mverts, int numVerts,

Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-05-02 23:36:31 UTC (rev 46213)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp	2012-05-02 23:36:34 UTC (rev 46214)
@@ -144,8 +144,6 @@
 	
 	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 23:36:31 UTC (rev 46213)
+++ trunk/blender/source/blender/collada/MeshImporter.cpp	2012-05-02 23:36:34 UTC (rev 46214)
@@ -727,16 +727,6 @@
 
 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())
@@ -958,6 +948,7 @@
 	
 	const std::string& str_geom_id = mesh->getName().size() ? mesh->getName() : mesh->getOriginalId();
 	Mesh *me = add_mesh((char*)str_geom_id.c_str());
+	me->id.us--; // is already 1 here, but will be set later in set_mesh
 
 	// store the Mesh pointer to link it later with an Object
 	this->uid_mesh_map[mesh->getUniqueId()] = me;
@@ -972,6 +963,9 @@
 
 	make_edges(me, 0);
 
+	BKE_mesh_convert_mfaces_to_mpolys(me);
+	BKE_mesh_tessface_clear(me);
+
 	mesh_calc_normals_mapping(me->mvert, me->totvert, me->mloop, me->mpoly, me->totloop, me->totpoly, NULL, NULL, 0, NULL, NULL);
 
 	return true;

Modified: trunk/blender/source/blender/collada/MeshImporter.h
===================================================================
--- trunk/blender/source/blender/collada/MeshImporter.h	2012-05-02 23:36:31 UTC (rev 46213)
+++ trunk/blender/source/blender/collada/MeshImporter.h	2012-05-02 23:36:34 UTC (rev 46214)
@@ -129,8 +129,6 @@
 
 	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