diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-05-03 03:36:34 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-05-03 03:36:34 +0400 |
commit | 959a717d914c27d9b3f3030730bf4360ac3dcf1a (patch) | |
tree | aed329a5db7b46c582c8c7b057b7148732043ff6 /source/blender | |
parent | 893cd1b4fd13b3324f383363bebd466ba04b376e (diff) |
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.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 2 | ||||
-rw-r--r-- | source/blender/collada/DocumentImporter.cpp | 2 | ||||
-rw-r--r-- | source/blender/collada/MeshImporter.cpp | 14 | ||||
-rw-r--r-- | source/blender/collada/MeshImporter.h | 2 |
4 files changed, 5 insertions, 15 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index c7f6bf93831..fdeb212b561 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1783,7 +1783,7 @@ void mesh_calc_normals_mapping(MVert *mverts, int numVerts, { 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, diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index 947bedc2ff7..a1f69ef16bd 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -144,8 +144,6 @@ bool DocumentImporter::import() delete ehandler; - mesh_importer.bmeshConversion(); - return true; } diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp index d6cc35deca7..3fbd33bdd0b 100644 --- a/source/blender/collada/MeshImporter.cpp +++ b/source/blender/collada/MeshImporter.cpp @@ -727,16 +727,6 @@ bool MeshImporter::flat_face(unsigned int *nind, COLLADAFW::MeshVertexData& nor, 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 @@ bool MeshImporter::write_geometry(const COLLADAFW::Geometry* geom) 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 @@ bool MeshImporter::write_geometry(const COLLADAFW::Geometry* geom) 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; diff --git a/source/blender/collada/MeshImporter.h b/source/blender/collada/MeshImporter.h index 97ae4d99ad7..0c2e600121f 100644 --- a/source/blender/collada/MeshImporter.h +++ b/source/blender/collada/MeshImporter.h @@ -129,8 +129,6 @@ public: 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, |