Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-04-23 19:20:18 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-04-24 11:29:26 +0300
commit4542b50afcfc9b797d5f3048393ba1f1836561a0 (patch)
treef9ba21556f6f2d71aa5c4dd065edce60640224c7 /source/blender/blenkernel/intern/multires_reshape.c
parent1625b7c37c2655d5405f7e6a8158950761e678fe (diff)
T75631: New multires shrinkage problem
The old Subdivide button was behaving as if subdivision modifier was applied on top of the multires. This was the source of shrinkage since the behavior of the limit surface: limit surface of a sparse point from another limit surface makes final result appear smaller. The new behavior is based on propagating delta against base mesh's limit surface to the top level. Effectively, this is as if we've sculpted on old top level and then propagated to the new top level. Differential Revision: https://developer.blender.org/D7505
Diffstat (limited to 'source/blender/blenkernel/intern/multires_reshape.c')
-rw-r--r--source/blender/blenkernel/intern/multires_reshape.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/multires_reshape.c b/source/blender/blenkernel/intern/multires_reshape.c
index 8674f5d2dbf..02cd5f094a6 100644
--- a/source/blender/blenkernel/intern/multires_reshape.c
+++ b/source/blender/blenkernel/intern/multires_reshape.c
@@ -202,7 +202,13 @@ void multiresModifier_subdivide_to_level(struct Object *object,
multires_reshape_store_original_grids(&reshape_context);
multires_reshape_ensure_grids(coarse_mesh, reshape_context.top.level);
multires_reshape_assign_final_coords_from_orig_mdisps(&reshape_context);
- multires_reshape_smooth_object_grids(&reshape_context);
+
+ /* Free original grids which makes it so smoothing with details thinks all the details were
+ * added against base mesh's limit surface. This is similar behavior to as if we've done all
+ * displacement in sculpt mode at the old top level and then propagated to the new top level. */
+ multires_reshape_free_original_grids(&reshape_context);
+
+ multires_reshape_smooth_object_grids_with_details(&reshape_context);
multires_reshape_object_grids_to_tangent_displacement(&reshape_context);
multires_reshape_context_free(&reshape_context);