diff options
author | Sergey Sharybin <sergey@blender.org> | 2020-10-26 14:32:22 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2020-10-27 12:31:48 +0300 |
commit | 17381c7b90eb3acde53eca013ae5a5a55699f17d (patch) | |
tree | 403a988cb4a5698c4ebcfdb0e34e45e0c799987e /source/blender/blenkernel/intern/multires_reshape_util.c | |
parent | 09139e41ed4eaf4d9b8943e92b8604d979dbbc92 (diff) |
Multires: Remove simple subdivision type
The simple subdivision as a type only causes issues like no-continuous
normals across edges, inability to reliably switch the type and things
like this.
The new subdivision operators supports wider variety of how to add
details to the model, which are more powerful than a single one-time
decision on the subdivision type.
The versioning code is adjusting topology converter to specify all
edges as infinitely sharp. The reason for this (instead of using
settings.is_simple) is because in a longer term the simple subdivision
will be removed from Subsurf modifier as well, and will be replaced
with more efficient bmesh-based modifier.
This is finished up version of D8436.
Differential Revision: https://developer.blender.org/D9350
Diffstat (limited to 'source/blender/blenkernel/intern/multires_reshape_util.c')
-rw-r--r-- | source/blender/blenkernel/intern/multires_reshape_util.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/multires_reshape_util.c b/source/blender/blenkernel/intern/multires_reshape_util.c index f3b19961e29..8fb406e54a5 100644 --- a/source/blender/blenkernel/intern/multires_reshape_util.c +++ b/source/blender/blenkernel/intern/multires_reshape_util.c @@ -247,6 +247,22 @@ bool multires_reshape_context_create_from_modifier(MultiresReshapeContext *resha struct MultiresModifierData *mmd, int top_level) { + Subdiv *subdiv = multires_reshape_create_subdiv(NULL, object, mmd); + + const bool result = multires_reshape_context_create_from_subdiv( + reshape_context, object, mmd, subdiv, top_level); + + reshape_context->need_free_subdiv = true; + + return result; +} + +bool multires_reshape_context_create_from_subdiv(MultiresReshapeContext *reshape_context, + struct Object *object, + struct MultiresModifierData *mmd, + struct Subdiv *subdiv, + int top_level) +{ context_zero(reshape_context); Mesh *base_mesh = (Mesh *)object->data; @@ -254,8 +270,8 @@ bool multires_reshape_context_create_from_modifier(MultiresReshapeContext *resha reshape_context->mmd = mmd; reshape_context->base_mesh = base_mesh; - reshape_context->subdiv = multires_reshape_create_subdiv(NULL, object, mmd); - reshape_context->need_free_subdiv = true; + reshape_context->subdiv = subdiv; + reshape_context->need_free_subdiv = false; reshape_context->reshape.level = mmd->totlvl; reshape_context->reshape.grid_size = BKE_subdiv_grid_size_from_level( |