[Bf-blender-cvs] [bd74ae9ca56] soc-2017-normal-tools: Minor cleanup and silplification/optimizations...

Bastien Montagne noreply at git.blender.org
Fri Mar 9 18:50:40 CET 2018


Commit: bd74ae9ca56e496722fa0853eac34fe99fc05dda
Author: Bastien Montagne
Date:   Fri Mar 9 10:54:41 2018 +0100
Branches: soc-2017-normal-tools
https://developer.blender.org/rBbd74ae9ca56e496722fa0853eac34fe99fc05dda

Minor cleanup and silplification/optimizations...

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

M	release/datafiles/locale
M	release/scripts/addons
M	release/scripts/addons_contrib
M	source/blender/modifiers/intern/MOD_weighted_normal.c
M	source/tools

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

diff --git a/release/datafiles/locale b/release/datafiles/locale
index 59495b4b590..d3349b42856 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 59495b4b59077aa1cc68fffbdae1463af980f08e
+Subproject commit d3349b42856d00c278f72f2a5909a6c96b9cdb5e
diff --git a/release/scripts/addons b/release/scripts/addons
index 27970761a18..827c5e62e8f 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 27970761a18926abe1b0020aa350305e3109a537
+Subproject commit 827c5e62e8f121f8f946f1f5f514f7751b1d684a
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 6a4f93c9b8f..310578043de 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 6a4f93c9b8f36b19bd02087abf3d7f5983df035a
+Subproject commit 310578043dec1aae382eb6a447ae1d103792d7e6
diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.c b/source/blender/modifiers/intern/MOD_weighted_normal.c
index 3fb23a9fa03..e0951fbaed5 100644
--- a/source/blender/modifiers/intern/MOD_weighted_normal.c
+++ b/source/blender/modifiers/intern/MOD_weighted_normal.c
@@ -414,11 +414,15 @@ static void wn_face_area(
         MPoly *mpoly, const int numPoly, float (*polynors)[3],
         MDeformVert *dvert, int defgrp_index, const bool use_invert_vgroup, const float weight, int *strength)
 {
+	MPoly *mp;
+	int mp_index;
+
 	ModePair *face_area = MEM_mallocN(sizeof(*face_area) * numPoly, __func__);
 
-	for (int mp_index = 0; mp_index < numPoly; mp_index++) {
-		face_area[mp_index].val = BKE_mesh_calc_poly_area(&mpoly[mp_index], &mloop[mpoly[mp_index].loopstart], mvert);
-		face_area[mp_index].index = mp_index;
+	ModePair *f_area = face_area;
+	for (mp_index = 0, mp = mpoly; mp_index < numPoly; mp_index++, mp++, f_area++) {
+		f_area->val = BKE_mesh_calc_poly_area(mp, &mloop[mp->loopstart], mvert);
+		f_area->index = mp_index;
 	}
 
 	qsort(face_area, numPoly, sizeof(*face_area), modepair_cmp_by_val_inverse);
@@ -435,16 +439,22 @@ static void wn_corner_angle(
         MPoly *mpoly, const int numPoly, float (*polynors)[3],
         MDeformVert *dvert, int defgrp_index, const bool use_invert_vgroup, const float weight, int *strength)
 {
+	MPoly *mp;
+	int mp_index;
+
 	ModePair *corner_angle = MEM_mallocN(sizeof(*corner_angle) * numLoops, __func__);
 
-	for (int mp_index = 0; mp_index < numPoly; mp_index++) {
-		int l_start = mpoly[mp_index].loopstart;
-		float *index_angle = MEM_mallocN(sizeof(*index_angle) * mpoly[mp_index].totloop, __func__);
-		BKE_mesh_calc_poly_angles(&mpoly[mp_index], &mloop[l_start], mvert, index_angle);
+	for (mp_index = 0, mp = mpoly; mp_index < numPoly; mp_index++, mp++) {
+		MLoop *ml_start = &mloop[mp->loopstart];
+
+		float *index_angle = MEM_mallocN(sizeof(*index_angle) * mp->totloop, __func__);
+		BKE_mesh_calc_poly_angles(mp, ml_start, mvert, index_angle);
 
-		for (int i = l_start; i < l_start + mpoly[mp_index].totloop; i++) {
-			corner_angle[i].val = (float)M_PI - index_angle[i - l_start];
-			corner_angle[i].index = i; 
+		ModePair *c_angl = &corner_angle[mp->loopstart];
+		float *angl = index_angle;
+		for (int ml_index = mp->loopstart; ml_index < mp->loopstart + mp->totloop; ml_index++, c_angl++, angl++) {
+			c_angl->val = (float)M_PI - *angl;
+			c_angl->index = ml_index;
 		}
 		MEM_freeN(index_angle);
 	}
@@ -463,19 +473,24 @@ static void wn_face_with_angle(
         MPoly *mpoly, const int numPoly, float(*polynors)[3],
         MDeformVert *dvert, int defgrp_index, const bool use_invert_vgroup, const float weight, int *strength)
 {
+	MPoly *mp;
+	int mp_index;
+
 	ModePair *combined = MEM_mallocN(sizeof(*combined) * numLoops, __func__);
 
-	for (int mp_index = 0; mp_index < numPoly; mp_index++) {
-		int l_start = mpoly[mp_index].loopstart;
-		float face_area = BKE_mesh_calc_poly_area(&mpoly[mp_index], &mloop[l_start], mvert);
-		float *index_angle = MEM_mallocN(sizeof(*index_angle) * mpoly[mp_index].totloop, __func__);
+	for (mp_index = 0, mp = mpoly; mp_index < numPoly; mp_index++, mp++) {
+		MLoop *ml_start = &mloop[mp->loopstart];
 
-		BKE_mesh_calc_poly_angles(&mpoly[mp_index], &mloop[l_start], mvert, index_angle);
+		float face_area = BKE_mesh_calc_poly_area(mp, ml_start, mvert);
+		float *index_angle = MEM_mallocN(sizeof(*index_angle) * mp->totloop, __func__);
+		BKE_mesh_calc_poly_angles(mp, ml_start, mvert, index_angle);
 
-		for (int i = l_start; i < l_start + mpoly[mp_index].totloop; i++) {
+		ModePair *cmbnd = &combined[mp->loopstart];
+		float *angl = index_angle;
+		for (int ml_index = mp->loopstart; ml_index < mp->loopstart + mp->totloop; ml_index++, cmbnd++, angl++) {
 			/* In this case val is product of corner angle and face area. */
-			combined[i].val = ((float)M_PI - index_angle[i - l_start]) * face_area;
-			combined[i].index = i;
+			cmbnd->val = ((float)M_PI - *angl) * face_area;
+			cmbnd->index = ml_index;
 		}
 		MEM_freeN(index_angle);
 	}
@@ -515,7 +530,6 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm,
 	bool free_polynors = false;
 
 	float weight = ((float)wnmd->weight) / 50.0f;
-
 	if (wnmd->weight == 100) {
 		weight = (float)SHRT_MAX;
 	}
@@ -527,7 +541,6 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm,
 	}
 
 	float (*polynors)[3] = dm->getPolyDataArray(dm, CD_NORMAL);
-
 	if (!polynors) {
 		polynors = MEM_mallocN(sizeof(*polynors) * numPoly, __func__);
 		BKE_mesh_calc_normals_poly(mvert, NULL, numVerts, mloop, mpoly, numLoops, numPoly, polynors, false);
diff --git a/source/tools b/source/tools
index 88a1758d2d2..7695e14cfc5 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit 88a1758d2d2e862cc69c08b5b40a4e75f71592d3
+Subproject commit 7695e14cfc5820ac66546e0e515914d85ab81af3



More information about the Bf-blender-cvs mailing list