[Bf-blender-cvs] [06c5520bda4] master: Fix T70554: Snake Hook + Ctrl does not set the brush stroke in its normal direction

Pablo Dobarro noreply at git.blender.org
Wed Oct 9 15:42:57 CEST 2019


Commit: 06c5520bda40c9b5b8240eaf4c8d0a1de7d2ffec
Author: Pablo Dobarro
Date:   Mon Oct 7 22:07:29 2019 +0200
Branches: master
https://developer.blender.org/rB06c5520bda40c9b5b8240eaf4c8d0a1de7d2ffec

Fix T70554: Snake Hook + Ctrl does not set the brush stroke in its normal direction

This commit also fixes the same issue in elastic deform

Reviewed By: jbakker

Maniphest Tasks: T70554

Differential Revision: https://developer.blender.org/D6014

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

M	source/blender/blenkernel/intern/brush.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/makesdna/DNA_brush_types.h

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

diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 39a12a997ef..597a5c78a8d 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -935,6 +935,7 @@ void BKE_brush_sculpt_reset(Brush *br)
       break;
     case SCULPT_TOOL_SNAKE_HOOK:
       br->alpha = 1.0f;
+      br->rake_factor = 1.0f;
       break;
     case SCULPT_TOOL_THUMB:
       br->size = 75;
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 145bc77fb0f..cec323fd31f 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2107,7 +2107,10 @@ static void update_sculpt_normal(Sculpt *sd, Object *ob, PBVHNode **nodes, int t
   StrokeCache *cache = ob->sculpt->cache;
   /* Grab brush does not update the sculpt normal during a stroke */
   const bool update_normal = !(brush->flag & BRUSH_ORIGINAL_NORMAL) &&
-                             !(brush->sculpt_tool == SCULPT_TOOL_GRAB);
+                             !(brush->sculpt_tool == SCULPT_TOOL_GRAB) &&
+                             !(brush->sculpt_tool == SCULPT_TOOL_ELASTIC_DEFORM) &&
+                             !(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK &&
+                               cache->normal_weight > 0.0f);
 
   if (cache->mirror_symmetry_pass == 0 && cache->radial_symmetry_pass == 0 &&
       (cache->first_time || update_normal)) {
@@ -3591,6 +3594,10 @@ static void do_elastic_deform_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, in
 
   copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry);
 
+  if (ss->cache->normal_weight > 0.0f) {
+    sculpt_project_v3_normal_align(ss, ss->cache->normal_weight, grab_delta);
+  }
+
   SculptThreadedTaskData data = {
       .sd = sd,
       .ob = ob,
diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h
index aec28c0fe75..fc8763f1519 100644
--- a/source/blender/makesdna/DNA_brush_types.h
+++ b/source/blender/makesdna/DNA_brush_types.h
@@ -502,7 +502,8 @@ typedef enum eBrushUVSculptTool {
        SCULPT_TOOL_SCRAPE, \
        SCULPT_TOOL_FLATTEN)
 
-#define SCULPT_TOOL_HAS_NORMAL_WEIGHT(t) ELEM(t, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK)
+#define SCULPT_TOOL_HAS_NORMAL_WEIGHT(t) \
+  ELEM(t, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK, SCULPT_TOOL_ELASTIC_DEFORM)
 
 #define SCULPT_TOOL_HAS_RAKE(t) ELEM(t, SCULPT_TOOL_SNAKE_HOOK)



More information about the Bf-blender-cvs mailing list