[Bf-blender-cvs] [fbc2a8a6041] greasepencil-object: Interpolate weights when subdivide

Antonioya noreply at git.blender.org
Thu Aug 23 10:34:16 CEST 2018


Commit: fbc2a8a6041218f139949dcdbf64a8827157b0f6
Author: Antonioya
Date:   Mon Aug 20 15:59:17 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rBfbc2a8a6041218f139949dcdbf64a8827157b0f6

Interpolate weights when subdivide

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

M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c

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

diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index beef2cf7c94..87d85d9ae6c 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -2945,6 +2945,7 @@ static int gp_stroke_subdivide_exec(bContext *C, wmOperator *op)
 								}
 								/* Interpolate all values */
 								bGPDspoint *next = &temp_points[i + 1];
+								MDeformVert *dvert_next = &temp_dverts[i + 1];
 								interp_v3_v3v3(&pt_final->x, &pt->x, &next->x, 0.5f);
 								pt_final->pressure = interpf(pt->pressure, next->pressure, 0.5f);
 								pt_final->strength = interpf(pt->strength, next->strength, 0.5f);
@@ -2954,6 +2955,17 @@ static int gp_stroke_subdivide_exec(bContext *C, wmOperator *op)
 
 								dvert_final->totweight = dvert->totweight;
 								dvert_final->dw = MEM_dupallocN(dvert->dw);
+
+								/* interpolate weight values */
+								for (int d = 0; d < dvert->totweight; d++) {
+									MDeformWeight *dw_a = &dvert->dw[d];
+									if (dvert_next->totweight > d) {
+										MDeformWeight *dw_b = &dvert_next->dw[d];
+										MDeformWeight *dw_final = &dvert_final->dw[d];
+										dw_final->weight= interpf(dw_a->weight,dw_b->weight, 0.5f);
+									}
+								}
+
 								i2++;
 							}
 						}
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c
index 8f22633e982..d5a372a8ba5 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c
@@ -124,6 +124,8 @@ static void deformStroke(
 			MDeformVert *dvert = &temp_dverts[i];
 
 			bGPDspoint *next = &temp_points[i + 1];
+			MDeformVert *dvert_next = &temp_dverts[i + 1];
+
 			bGPDspoint *pt_final = &gps->points[i2];
 			MDeformVert *dvert_final = &gps->dvert[i2];
 
@@ -136,6 +138,17 @@ static void deformStroke(
 
 			dvert_final->totweight = dvert->totweight;
 			dvert_final->dw = MEM_dupallocN(dvert->dw);
+
+			/* interpolate weight values */
+			for (int d = 0; d < dvert->totweight; d++) {
+				MDeformWeight *dw_a = &dvert->dw[d];
+				if (dvert_next->totweight > d) {
+					MDeformWeight *dw_b = &dvert_next->dw[d];
+					MDeformWeight *dw_final = &dvert_final->dw[d];
+					dw_final->weight = interpf(dw_a->weight, dw_b->weight, 0.5f);
+				}
+			}
+
 			i2 += 2;
 		}



More information about the Bf-blender-cvs mailing list