Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPablo Dobarro <pablodp606@gmail.com>2021-01-26 20:12:38 +0300
committerPablo Dobarro <pablodp606@gmail.com>2021-02-10 03:09:25 +0300
commit8fcf3e96fedc3641d44e8b3e230149f935f901f0 (patch)
tree0d4b01f44c1062e6a733d3ab842744263ed2559b /source/blender/editors/sculpt_paint/sculpt.c
parent10f44a413573089e132a411aa003ea3d9d634059 (diff)
Fix T85079: Thumb brush unstable when producing larger displacements
The thumb brush was updating the area normal per brush sample, which was making unstable sampled normals for setting the displacement direction when the vertices are moved too much from their original positions. Now it always uses the original normal except when using anchored strokes. In those cases, the normal always needs to be updated. Reviewed By: JacquesLucke Maniphest Tasks: T85079 Differential Revision: https://developer.blender.org/D10214
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt.c')
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 410b83217b4..cb5d708908b 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -2721,11 +2721,11 @@ static void update_sculpt_normal(Sculpt *sd, Object *ob, PBVHNode **nodes, int t
const Brush *brush = BKE_paint_brush(&sd->paint);
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_ELASTIC_DEFORM) &&
- !(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK &&
- cache->normal_weight > 0.0f);
+ const bool update_normal =
+ !(brush->flag & BRUSH_ORIGINAL_NORMAL) && !(brush->sculpt_tool == SCULPT_TOOL_GRAB) &&
+ !(brush->sculpt_tool == SCULPT_TOOL_THUMB && !(brush->flag & BRUSH_ANCHORED)) &&
+ !(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 &&
(SCULPT_stroke_is_first_brush_step_of_symmetry_pass(cache) || update_normal)) {