diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-07 01:10:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-07 01:10:33 +0300 |
commit | f1e0ef1d1281cc63d092a144ddbe3b1140104cd5 (patch) | |
tree | 12e55bed18280846e31a5960239931e4638cbac8 /source/blender/modifiers | |
parent | d49bafe9572d33ac05a949f78e468267f4d9ecea (diff) |
fix [#26368] Solidify breaks EdgeCrease
Make edge crease additive rather then overwriting existing values.
There are other problems pointed out in this report but they are unrelated to solidify.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_solidify.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 8e44cd1ec37..f7a55720a5e 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -593,11 +593,18 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, mf->mat_nr += mat_ofs_rim; CLAMP(mf->mat_nr, 0, mat_nr_max); } - if(crease_outer) - ed->crease= crease_outer; + if(crease_outer) { + /* crease += crease_outer; without wrapping */ + unsigned char *cr= (unsigned char *)&(ed->crease); + int tcr= *cr + crease_outer; + *cr= tcr > 255 ? 255 : tcr; + } if(crease_inner) { - medge[numEdges + eidx].crease= crease_inner; + /* crease += crease_inner; without wrapping */ + unsigned char *cr= (unsigned char *)&(medge[numEdges + eidx].crease); + int tcr= *cr + crease_inner; + *cr= tcr > 255 ? 255 : tcr; } #ifdef SOLIDIFY_SIDE_NORMALS |