diff options
author | Hans Goudey <h.goudey@me.com> | 2022-01-27 20:02:10 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-01-27 20:02:10 +0300 |
commit | 834b966b419ca50f0675e49720dff36822838acb (patch) | |
tree | efad35d666a2551c4f12fb4d04da0d033fbaf45c | |
parent | d7ac659e02327ceb433bf69a624d76fa7c65b129 (diff) |
Fix T95212: Mirror modifier normals crash
The vertex and face normals from the input mesh
were used to calculate the normals on the result,
which could cause a crash because the result should
be about twice as large.
Also remove an unnecessary dirty tag, since it is handled
automatically when creating a new mesh or in the case
of the mirror modifier, when calculating the new custom
face corner normals.
-rw-r--r-- | source/blender/blenkernel/intern/mesh_mirror.c | 4 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_mirror.c | 3 |
2 files changed, 2 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c index abc0b518d92..ec3655ac491 100644 --- a/source/blender/blenkernel/intern/mesh_mirror.c +++ b/source/blender/blenkernel/intern/mesh_mirror.c @@ -420,7 +420,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd, /* calculate custom normals into loop_normals, then mirror first half into second half */ BKE_mesh_normals_loop_split(result->mvert, - BKE_mesh_vertex_normals_ensure(mesh), + BKE_mesh_vertex_normals_ensure(result), result->totvert, result->medge, result->totedge, @@ -428,7 +428,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd, loop_normals, totloop, result->mpoly, - BKE_mesh_poly_normals_ensure(mesh), + BKE_mesh_poly_normals_ensure(result), totpoly, true, mesh->smoothresh, diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c index bbac6589577..1bdc97f0a8b 100644 --- a/source/blender/modifiers/intern/MOD_mirror.c +++ b/source/blender/modifiers/intern/MOD_mirror.c @@ -120,9 +120,6 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * result = mirrorModifier__doMirror(mmd, ctx->object, mesh); - if (result != mesh) { - BKE_mesh_normals_tag_dirty(result); - } return result; } |