diff options
author | Jeroen Bakker <jbakker> | 2020-03-26 16:36:39 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2020-03-26 17:34:53 +0300 |
commit | 7ed3ebbc6e1f95203c050e683a140b7ac1e7b705 (patch) | |
tree | c784d8cc1e1e0954c6193e930228ba32fea29615 /source/blender/blenkernel/intern | |
parent | 2e8fb95e7c69274944ecb44b2b51f8b4307f88ae (diff) |
Fix T67888: Incorrect Wireframe After Applying SubSurf/MultiRes
Show control edges stores the control edges in the mesh which is
picked up by the draw manager. When applyng a subsurf (or multires) we
don't want that data present in the base mesh. Any rebuilding of the mesh
would overwrite the data anyway.
This patch introduces a new flag for applying modifiers
that can be checked to ignore storing display specific data in
the base mesh.
Reviewed By: Brecht van Lommel
Differential Revision: https://developer.blender.org/D7163
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_convert.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/multires_subdiv.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c index 955f1aca110..74b79490d67 100644 --- a/source/blender/blenkernel/intern/mesh_convert.c +++ b/source/blender/blenkernel/intern/mesh_convert.c @@ -1304,7 +1304,7 @@ Mesh *BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph, const ModifierTypeInfo *mti = modifierType_getInfo(md_eval->type); Mesh *result; KeyBlock *kb; - ModifierEvalContext mectx = {depsgraph, ob_eval, 0}; + ModifierEvalContext mectx = {depsgraph, ob_eval, MOD_APPLY_TO_BASE_MESH}; if (!(md_eval->mode & eModifierMode_Realtime)) { return NULL; diff --git a/source/blender/blenkernel/intern/multires_subdiv.c b/source/blender/blenkernel/intern/multires_subdiv.c index 2ea02ab6974..f7e42942f3e 100644 --- a/source/blender/blenkernel/intern/multires_subdiv.c +++ b/source/blender/blenkernel/intern/multires_subdiv.c @@ -50,9 +50,11 @@ void BKE_multires_subdiv_mesh_settings_init(SubdivToMeshSettings *mesh_settings, const Object *object, const MultiresModifierData *mmd, const bool use_render_params, - const bool ignore_simplify) + const bool ignore_simplify, + const bool ignore_control_edges) { const int level = multires_get_level(scene, object, mmd, use_render_params, ignore_simplify); mesh_settings->resolution = (1 << level) + 1; - mesh_settings->use_optimal_display = (mmd->flags & eMultiresModifierFlag_ControlEdges); + mesh_settings->use_optimal_display = (mmd->flags & eMultiresModifierFlag_ControlEdges) && + !ignore_control_edges; } |