Fix sculpt pen tilt support changing the brush strength
SCULPT_tilt_apply_to_normal expects a normal, and offset was already scaled by radius. The funcion returns a normalized vector, so the strength of the brush was changed. Reviewed By: sergey Differential Revision: https://developer.blender.org/D9275
This commit is contained in:
parent
98540511b1
commit
3e5a354333
|
@ -2810,6 +2810,12 @@ void SCULPT_tilt_apply_to_normal(float r_normal[3], StrokeCache *cache, const fl
|
|||
normalize_v3(r_normal);
|
||||
}
|
||||
|
||||
void SCULPT_tilt_effective_normal_get(const SculptSession *ss, const Brush *brush, float r_no[3])
|
||||
{
|
||||
copy_v3_v3(r_no, ss->cache->sculpt_normal_symm);
|
||||
SCULPT_tilt_apply_to_normal(r_no, ss->cache, brush->tilt_strength_factor);
|
||||
}
|
||||
|
||||
static void update_brush_local_mat(Sculpt *sd, Object *ob)
|
||||
{
|
||||
StrokeCache *cache = ob->sculpt->cache;
|
||||
|
@ -3119,8 +3125,9 @@ static void do_draw_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode)
|
|||
const float bstrength = ss->cache->bstrength;
|
||||
|
||||
/* Offset with as much as possible factored in already. */
|
||||
mul_v3_v3fl(offset, ss->cache->sculpt_normal_symm, ss->cache->radius);
|
||||
SCULPT_tilt_apply_to_normal(offset, ss->cache, brush->tilt_strength_factor);
|
||||
float effective_normal[3];
|
||||
SCULPT_tilt_effective_normal_get(ss, brush, effective_normal);
|
||||
mul_v3_v3fl(offset, effective_normal, ss->cache->radius);
|
||||
mul_v3_v3(offset, ss->cache->scale);
|
||||
mul_v3_fl(offset, bstrength);
|
||||
|
||||
|
@ -3197,8 +3204,9 @@ static void do_draw_sharp_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int to
|
|||
const float bstrength = ss->cache->bstrength;
|
||||
|
||||
/* Offset with as much as possible factored in already. */
|
||||
mul_v3_v3fl(offset, ss->cache->sculpt_normal_symm, ss->cache->radius);
|
||||
SCULPT_tilt_apply_to_normal(offset, ss->cache, brush->tilt_strength_factor);
|
||||
float effective_normal[3];
|
||||
SCULPT_tilt_effective_normal_get(ss, brush, effective_normal);
|
||||
mul_v3_v3fl(offset, effective_normal, ss->cache->radius);
|
||||
mul_v3_v3(offset, ss->cache->scale);
|
||||
mul_v3_fl(offset, bstrength);
|
||||
|
||||
|
|
|
@ -814,6 +814,9 @@ void SCULPT_tilt_apply_to_normal(float r_normal[3],
|
|||
struct StrokeCache *cache,
|
||||
const float tilt_strength);
|
||||
|
||||
/* Get effective surface normal with pen tilt and tilt strength applied to it. */
|
||||
void SCULPT_tilt_effective_normal_get(const SculptSession *ss, const Brush *brush, float r_no[3]);
|
||||
|
||||
/* just for vertex paint. */
|
||||
bool SCULPT_pbvh_calc_area_normal(const struct Brush *brush,
|
||||
Object *ob,
|
||||
|
|
Loading…
Reference in New Issue