[Bf-blender-cvs] [472b3c5] master: We do need to transform lnors in BKE_mesh_transform(), much handy for scripts.

Bastien Montagne noreply at git.blender.org
Sun May 3 12:01:03 CEST 2015


Commit: 472b3c582820d32ac39be91a6a884ed09285fe4f
Author: Bastien Montagne
Date:   Sun May 3 11:55:58 2015 +0200
Branches: master
https://developer.blender.org/rB472b3c582820d32ac39be91a6a884ed09285fe4f

We do need to transform lnors in BKE_mesh_transform(), much handy for scripts.

===================================================================

M	source/blender/blenkernel/intern/mesh.c

===================================================================

diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 12379be..e66a4d4 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -1920,6 +1920,7 @@ void BKE_mesh_transform(Mesh *me, float mat[4][4], bool do_keys)
 {
 	int i;
 	MVert *mvert = me->mvert;
+	float (*lnors)[3] = CustomData_get_layer(&me->ldata, CD_NORMAL);
 
 	for (i = 0; i < me->totvert; i++, mvert++)
 		mul_m4_v3(mat, mvert->co);
@@ -1934,7 +1935,17 @@ void BKE_mesh_transform(Mesh *me, float mat[4][4], bool do_keys)
 		}
 	}
 
-	/* don't update normals, caller can do this explicitly */
+	/* don't update normals, caller can do this explicitly.
+	 * We do update loop normals though, those may not be auto-generated (see e.g. STL import script)! */
+	if (lnors) {
+		float m3[3][3];
+
+		copy_m3_m4(m3, mat);
+		normalize_m3(m3);
+		for (i = 0; i < me->totloop; i++, lnors++) {
+			mul_m3_v3(m3, *lnors);
+		}
+	}
 }
 
 void BKE_mesh_translate(Mesh *me, const float offset[3], const bool do_keys)




More information about the Bf-blender-cvs mailing list