From 42980abf8d0d126b0f472601cc47a3929217e394 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Fri, 23 Oct 2020 22:27:46 +0200 Subject: Fix T81997: Subsurf Optimal Display sticks after object conversion When using Optimal Display, some edges are not flagged `ME_EDGEDRAW` | `ME_EDGERENDER`. When the modifier is applied through the UI in the modifier stack this is not an issue because the `modifyMesh` callback is run with `MOD_APPLY_TO_BASE_MESH` (this will effectively turn of Optimal Display). When converting to mesh though, this will just get an evaluated mesh (where the edge flags are still the same as with the subdivision modifier). Now ensure every edge is flagged to draw after conversion. Maniphest Tasks: T81997 Differential Revision: https://developer.blender.org/D9331 --- source/blender/editors/object/object_add.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source/blender/editors/object/object_add.c') diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 36e780f7472..d70e02cf3da 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -2686,6 +2686,8 @@ static int object_convert_exec(bContext *C, wmOperator *op) Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob); Mesh *me_eval = mesh_get_eval_final(depsgraph, scene_eval, ob_eval, &CD_MASK_MESH); me_eval = BKE_mesh_copy_for_eval(me_eval, false); + /* Full (edge-angle based) draw calculation should ideally be performed. */ + BKE_mesh_edges_set_draw_render(me_eval); BKE_mesh_nomain_to_mesh(me_eval, newob->data, newob, &CD_MASK_MESH, true); BKE_object_free_modifiers(newob, 0); /* after derivedmesh calls! */ } -- cgit v1.2.3