[Bf-blender-cvs] [b3179410dc4] PSketch-279: BBone fixes for "Restore" Brush

Joshua Leung noreply at git.blender.org
Tue May 8 18:03:45 CEST 2018


Commit: b3179410dc43c0d2acbd7d98a9523262d89cd563
Author: Joshua Leung
Date:   Tue Jan 2 16:24:45 2018 +1300
Branches: PSketch-279
https://developer.blender.org/rBb3179410dc43c0d2acbd7d98a9523262d89cd563

BBone fixes for "Restore" Brush

* Blend between current pose and pre-sculpt versions, instead of just resetting
* Respect the head/tail logic

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

M	source/blender/editors/armature/pose_sculpt.c

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

diff --git a/source/blender/editors/armature/pose_sculpt.c b/source/blender/editors/armature/pose_sculpt.c
index 310bab5d12d..9d3d7f73a37 100644
--- a/source/blender/editors/armature/pose_sculpt.c
+++ b/source/blender/editors/armature/pose_sculpt.c
@@ -1541,17 +1541,27 @@ static void psculpt_brush_restore_apply(tPoseSculptingOp *pso, bPoseChannel *pch
 		pchan->size[2] = interpf(tab->oldscale[2], pchan->size[2], fac);
 	
 	/* bendy bones */
-	// TODO: 1) Blend, 2) Head/Tail control
-	pchan->curveInX = tab->bbcurvein[0];
-	pchan->curveInY = tab->bbcurvein[1];
-	pchan->curveOutX = tab->bbcurveout[0];
-	pchan->curveOutY = tab->bbcurveout[1];
-	pchan->roll1 = tab->bbroll[0];
-	pchan->roll2 = tab->bbroll[1];
-	pchan->ease1 = tab->bbease[0];
-	pchan->ease2 = tab->bbease[1];
-	pchan->scaleIn = tab->bbscale[0];
-	pchan->scaleOut = tab->bbscale[1];
+	if ((pchan->bone) && (pchan->bone->segments > 1)) {
+		bool do_head = false, do_tail = false;
+		float bb_fac = psculpt_brush_calc_bendybone_influence(pso, dist, sco1, sco2, &do_head, &do_tail);
+		
+		if (do_head) {
+			pchan->curveInX = interpf(tab->bbcurvein[0], pchan->curveInX, bb_fac);
+			pchan->curveInY = interpf(tab->bbcurvein[1], pchan->curveInY, bb_fac);
+			
+			pchan->roll1 = interpf(tab->bbroll[0], pchan->roll1, bb_fac);
+			pchan->ease1 = interpf(tab->bbease[0], pchan->ease1, bb_fac);
+			pchan->scaleIn = interpf(tab->bbscale[0], pchan->scaleIn, bb_fac);
+		}
+		if (do_tail) {
+			pchan->curveOutX = interpf(tab->bbcurveout[0], pchan->curveOutX, bb_fac);
+			pchan->curveOutY = interpf(tab->bbcurveout[1], pchan->curveOutY, bb_fac);
+			
+			pchan->roll2 = interpf(tab->bbroll[1], pchan->roll2, bb_fac);
+			pchan->ease2 = interpf(tab->bbease[1], pchan->ease2, bb_fac);
+			pchan->scaleOut = inteprf(tab->bbscale[1], pchan->scaleOut, bb_fac);
+		}
+	}
 }
 
 /* Push -------------------------------------------------- */



More information about the Bf-blender-cvs mailing list