Fix T89691: Solidify modifier simple/complex inconsistency
Maintain the sign when clamping non zero offset. Reviewed By: campbellbarton, weasel Ref D11832
This commit is contained in:
parent
c1a477b497
commit
a53feb0aff
Notes:
blender-bot
2023-02-14 11:34:30 +01:00
Referenced by issue #89691, Inconsistent behaviour in mod solidify simple vs. complex
|
@ -71,6 +71,15 @@ static float angle_signed_on_axis_normalized_v3v3_v3(const float n[3],
|
|||
return angle;
|
||||
}
|
||||
|
||||
static float clamp_nonzero(const float value, const float epsilon)
|
||||
{
|
||||
BLI_assert(!(epsilon < 0.0f));
|
||||
if (value < 0.0f) {
|
||||
return min_ff(value, -epsilon);
|
||||
}
|
||||
return max_ff(value, epsilon);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
@ -164,8 +173,8 @@ Mesh *MOD_solidify_nonmanifold_modifyMesh(ModifierData *md,
|
|||
|
||||
const float ofs_front = (smd->offset_fac + 1.0f) * 0.5f * smd->offset;
|
||||
const float ofs_back = ofs_front - smd->offset * smd->offset_fac;
|
||||
const float ofs_front_clamped = max_ff(1e-5f, fabsf(smd->offset > 0 ? ofs_front : ofs_back));
|
||||
const float ofs_back_clamped = max_ff(1e-5f, fabsf(smd->offset > 0 ? ofs_back : ofs_front));
|
||||
const float ofs_front_clamped = clamp_nonzero(smd->offset > 0 ? ofs_front : ofs_back, 1e-5f);
|
||||
const float ofs_back_clamped = clamp_nonzero(smd->offset > 0 ? ofs_back : ofs_front, 1e-5f);
|
||||
const float offset_fac_vg = smd->offset_fac_vg;
|
||||
const float offset_fac_vg_inv = 1.0f - smd->offset_fac_vg;
|
||||
const float offset = fabsf(smd->offset) * smd->offset_clamp;
|
||||
|
|
Loading…
Reference in New Issue