[Bf-blender-cvs] [28afe63fb71] soc-2017-normal-tools: changed weight calculation in modifier

Rohan Rathi noreply at git.blender.org
Sat Aug 12 18:05:48 CEST 2017


Commit: 28afe63fb71af94757039ddf5d9867c8757e2956
Author: Rohan Rathi
Date:   Fri Aug 11 16:39:41 2017 +0530
Branches: soc-2017-normal-tools
https://developer.blender.org/rB28afe63fb71af94757039ddf5d9867c8757e2956

changed weight calculation in modifier

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

M	source/blender/modifiers/intern/MOD_weighted_normal.c

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

diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.c b/source/blender/modifiers/intern/MOD_weighted_normal.c
index 9933e692acd..8a286737ef3 100644
--- a/source/blender/modifiers/intern/MOD_weighted_normal.c
+++ b/source/blender/modifiers/intern/MOD_weighted_normal.c
@@ -110,10 +110,8 @@ static void loop_manifold_fan_around_vert_next(
 }
 
 static void apply_weights_sharp_loops(WeightedNormalModifierData *wnmd, int *loop_index, int size, pair *mode_pair,
-	float(*loop_normal)[3], int *loops_to_poly, float(*polynors)[3])
+	float(*loop_normal)[3], int *loops_to_poly, float(*polynors)[3], int weight)
 {
-	float weight = (float)wnmd->weight / 10.0f;
-
 	for (int i = 0; i < size - 1; i++) {
 		for (int j = 0; j < size - i - 1; j++) {
 			if (wnmd->mode == MOD_WEIGHTEDNORMAL_MODE_FACE
@@ -172,7 +170,7 @@ static void apply_weights_sharp_loops(WeightedNormalModifierData *wnmd, int *loo
    Used only to work on sharp edges */
 static void loop_split_worker(WeightedNormalModifierData *wnmd, pair *mode_pair, MLoop *ml_curr, MLoop *ml_prev, int ml_curr_index,
 		int ml_prev_index, int *e2l_prev, int mp_index, float (*loop_normal)[3], int *loops_to_poly, float (*polynors)[3], MEdge *medge,
-		MLoop *mloop, MPoly *mpoly, int (*edge_to_loops)[2])
+		MLoop *mloop, MPoly *mpoly, int (*edge_to_loops)[2], int weight)
 {
 	if (e2l_prev) {
 		int *e2lfan_curr = e2l_prev;
@@ -207,7 +205,7 @@ static void loop_split_worker(WeightedNormalModifierData *wnmd, pair *mode_pair,
 			BLI_stack_pop(loop_index, &index[cur]);
 			cur++;
 		}
-		apply_weights_sharp_loops(wnmd, index, cur, mode_pair, loop_normal, loops_to_poly, polynors);
+		apply_weights_sharp_loops(wnmd, index, cur, mode_pair, loop_normal, loops_to_poly, polynors, weight);
 		MEM_freeN(index);
 		BLI_stack_free(loop_index);
 	}
@@ -359,11 +357,11 @@ static void apply_weights_vertex_normal(WeightedNormalModifierData *wnmd, Object
 					if (IS_EDGE_SHARP(e2l_curr)) {
 						if (IS_EDGE_SHARP(e2l_curr) && IS_EDGE_SHARP(e2l_prev)) {
 							loop_split_worker(wnmd, mode_pair, ml_curr, ml_prev, ml_curr_index, -1, NULL, mp_index, loop_normal,
-								loops_to_poly, polynors, medge,	mloop, mpoly, edge_to_loops);
+								loops_to_poly, polynors, medge,	mloop, mpoly, edge_to_loops, weight);
 						}
 						else {
 							loop_split_worker(wnmd, mode_pair, ml_curr, ml_prev, ml_curr_index, ml_prev_index, e2l_prev, mp_index,
-								loop_normal, loops_to_poly, polynors, medge, mloop, mpoly, edge_to_loops);
+								loop_normal, loops_to_poly, polynors, medge, mloop, mpoly, edge_to_loops, weight);
 						}
 					}
 					ml_prev = ml_curr;
@@ -500,7 +498,12 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm,
 
 	const bool use_invert_vgroup = (wnmd->flag & MOD_WEIGHTEDNORMAL_INVERT_VGROUP) != 0;
 	bool free_polynors = false;
+
 	float weight = ((float)wnmd->weight) / 10.0f;
+	if (weight > 1) {
+		weight = (weight - 1) * 10;
+	}
+
 	float (*polynors)[3] = dm->getPolyDataArray(dm, CD_NORMAL);
 
 	if (!polynors) {




More information about the Bf-blender-cvs mailing list