[Bf-blender-cvs] [68596950550] master: Fix T52649: missing custom (split) normals from FBX exporter.

Bastien Montagne noreply at git.blender.org
Mon Sep 4 21:04:34 CEST 2017


Commit: 68596950550d6cc29a9c89ca0f415dd8df80561f
Author: Bastien Montagne
Date:   Mon Sep 4 21:02:46 2017 +0200
Branches: master
https://developer.blender.org/rB68596950550d6cc29a9c89ca0f415dd8df80561f

Fix T52649: missing custom (split) normals from FBX exporter.

Own mistake in recent rB25c5928b2b6 (this DOES NOT affect 2.79 release).

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

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

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

diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 2e725cbfbfd..0d01fe77453 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -2072,6 +2072,11 @@ void BKE_mesh_calc_normals_split_ex(Mesh *mesh, MLoopNorSpaceArray *r_lnors_spac
 	short (*clnors)[2] = NULL;
 	bool free_polynors = false;
 
+	/* Note that we enforce computing clnors when the clnor space array is requested by caller here.
+	 * However, we obviously only use the autosmooth angle threshold only in case autosmooth is enabled. */
+	const bool use_split_normals = (r_lnors_spacearr != NULL) || ((mesh->flag & ME_AUTOSMOOTH) != 0);
+	const float split_angle = (mesh->flag & ME_AUTOSMOOTH) != 0 ? mesh->smoothresh : (float)M_PI;
+
 	if (CustomData_has_layer(&mesh->ldata, CD_NORMAL)) {
 		r_loopnors = CustomData_get_layer(&mesh->ldata, CD_NORMAL);
 		memset(r_loopnors, 0, sizeof(float[3]) * mesh->totloop);
@@ -2100,10 +2105,7 @@ void BKE_mesh_calc_normals_split_ex(Mesh *mesh, MLoopNorSpaceArray *r_lnors_spac
 	BKE_mesh_normals_loop_split(
 	        mesh->mvert, mesh->totvert, mesh->medge, mesh->totedge,
 	        mesh->mloop, r_loopnors, mesh->totloop, mesh->mpoly, (const float (*)[3])polynors, mesh->totpoly,
-	        /* Note that we enforce computing clnors when the clnor space array is requested by caller here.
-	         * However, we obviously only use the autosmooth angle threshold only in case autosmooth is enabled. */
-	        r_lnors_spacearr != NULL, (mesh->flag & ME_AUTOSMOOTH) != 0 ? mesh->smoothresh : (float)M_PI,
-	        r_lnors_spacearr, clnors, NULL);
+	        use_split_normals, split_angle, r_lnors_spacearr, clnors, NULL);
 
 	if (free_polynors) {
 		MEM_freeN(polynors);



More information about the Bf-blender-cvs mailing list