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-05-13 11:42:13 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-05-13 13:11:27 +0300
commit23fd95458c264dc53f5ce94cd2c65404a69d0f6f (patch)
treeee16d30acb322b1b3decd413b2d2e59418695bb7 /source/blender/blenkernel/intern/multires_reshape_util.c
parent0790d90d027355c6f0d7ba157dec18dea131d4f2 (diff)
Multires: Fix wrong or missing mask propagation
Propagation when changing sculpt level was missing. In fact, the mask was simply completely removed when changing sculpt level. Subdivision worked for simple and linear subdivision, but Catmull-Clark was giving empty results. Fixes propagation part of T76386.
Diffstat (limited to 'source/blender/blenkernel/intern/multires_reshape_util.c')
-rw-r--r--source/blender/blenkernel/intern/multires_reshape_util.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/multires_reshape_util.c b/source/blender/blenkernel/intern/multires_reshape_util.c
index fcee98da1c5..e9a779dafeb 100644
--- a/source/blender/blenkernel/intern/multires_reshape_util.c
+++ b/source/blender/blenkernel/intern/multires_reshape_util.c
@@ -751,9 +751,9 @@ void multires_reshape_assign_final_coords_from_mdisps(
reshape_context, reshape_context->top.level, assign_final_coords_from_mdisps, NULL);
}
-static void assign_final_coords_from_orig_mdisps(const MultiresReshapeContext *reshape_context,
- const GridCoord *grid_coord,
- void *UNUSED(userdata_v))
+static void assign_final_elements_from_orig_mdisps(const MultiresReshapeContext *reshape_context,
+ const GridCoord *grid_coord,
+ void *UNUSED(userdata_v))
{
float P[3];
float tangent_matrix[3][3];
@@ -768,13 +768,17 @@ static void assign_final_coords_from_orig_mdisps(const MultiresReshapeContext *r
ReshapeGridElement grid_element = multires_reshape_grid_element_for_grid_coord(reshape_context,
grid_coord);
add_v3_v3v3(grid_element.displacement, P, D);
+
+ if (grid_element.mask != NULL) {
+ *grid_element.mask = orig_grid_element.mask;
+ }
}
-void multires_reshape_assign_final_coords_from_orig_mdisps(
+void multires_reshape_assign_final_elements_from_orig_mdisps(
const MultiresReshapeContext *reshape_context)
{
foreach_grid_coordinate(
- reshape_context, reshape_context->top.level, assign_final_coords_from_orig_mdisps, NULL);
+ reshape_context, reshape_context->top.level, assign_final_elements_from_orig_mdisps, NULL);
}
/** \} */