Commit: 3b01edd52e8e28f425d76ae17ee50f3feed69d36 Author: Bastien Montagne Date: Wed Apr 11 17:27:23 2018 +0200 Branches: soc-2017-normal-tools https://developer.blender.org/rB3b01edd52e8e28f425d76ae17ee50f3feed69d36
Fix weighted normals modifier sometimes affecting actual mesh. Same issue & same fix as with edit normals modifier some times ago... =================================================================== M source/blender/modifiers/intern/MOD_weighted_normal.c =================================================================== diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.c b/source/blender/modifiers/intern/MOD_weighted_normal.c index 1f06803505a..7e339f0012d 100644 --- a/source/blender/modifiers/intern/MOD_weighted_normal.c +++ b/source/blender/modifiers/intern/MOD_weighted_normal.c @@ -491,9 +491,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, const int numLoops = dm->getNumLoops(dm); const int numPolys = dm->getNumPolys(dm); + MEdge *medge = dm->getEdgeArray(dm); + if (me->medge == medge) { + /* We need to duplicate data here, otherwise setting custom normals (which may also affect sharp edges) could + * modify org mesh. */ + dm = CDDM_copy(dm); + medge = dm->getEdgeArray(dm); + } MPoly *mpoly = dm->getPolyArray(dm); MVert *mvert = dm->getVertArray(dm); - MEdge *medge = dm->getEdgeArray(dm); MLoop *mloop = dm->getLoopArray(dm); bool free_polynors = false; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs