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:
authorPablo Dobarro <pablodp606@gmail.com>2021-05-14 04:07:18 +0300
committerPablo Dobarro <pablodp606@gmail.com>2021-05-14 04:08:01 +0300
commitbd76184966add88911c03986a59a42911e8663fa (patch)
tree51c15d7157fd86499e2856093805f325f6d51a7c /source/blender/editors/sculpt_paint
parent01718ad9524f4e998ed5e82c134fafea4692c13b (diff)
Fix sculpt neighbor iterator not taking visibility into account
Sculpting tools are designed to ignore hidden geometry and behave like hidden geometry does not exist. When getting the neighbors of a vertex, now this takes into account hidden geometry to avoid returing neighbors which connected edge is not visible. This should make corner cases of a lot of tools work properly, especially when working in low poly meshes when is common to have a single face loop hidden. Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D11007
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 7817257a98d..2e1dd928f96 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -780,6 +780,10 @@ static void sculpt_vertex_neighbors_get_faces(SculptSession *ss,
iter->neighbors = iter->neighbors_fixed;
for (int i = 0; i < ss->pmap[index].count; i++) {
+ if (ss->face_sets[vert_map->indices[i]] < 0) {
+ /* Skip connectivity from hidden faces. */
+ continue;
+ }
const MPoly *p = &ss->mpoly[vert_map->indices[i]];
uint f_adj_v[2];
if (poly_get_adj_loops_from_vert(p, ss->mloop, index, f_adj_v) != -1) {