[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