[Bf-blender-cvs] [54c28e5bfb6] master: Merge branch 'blender-v2.92-release'
Commit: 54c28e5bfb6bb023e7fa352c6dda740a16159b2a Author: Campbell Barton Date: Sun Jan 17 18:30:10 2021 +1100 Branches: master https://developer.blender.org/rB54c28e5bfb6bb023e7fa352c6dda740a16159b2a Merge branch 'blender-v2.92-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [14bb9f09ab9] master: Merge branch 'blender-v2.92-release'
Commit: 14bb9f09ab985e44745f271608848c35babc62bc Author: Campbell Barton Date: Sun Jan 17 18:30:14 2021 +1100 Branches: master https://developer.blender.org/rB14bb9f09ab985e44745f271608848c35babc62bc Merge branch 'blender-v2.92-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ca476a638c8] blender-v2.92-release: RNA: report an error when the name property is set twice
Commit: ca476a638c89634c17a025eff184a81e92d13f50 Author: Campbell Barton Date: Sun Jan 17 18:21:27 2021 +1100 Branches: blender-v2.92-release https://developer.blender.org/rBca476a638c89634c17a025eff184a81e92d13f50 RNA: report an error when the name property is set twice This helps avoid copy-paste errors which have happened a few times, no functional changes. === M source/blender/makesrna/intern/rna_attribute.c M source/blender/makesrna/intern/rna_define.c M source/blender/makesrna/intern/rna_render.c === diff --git a/source/blender/makesrna/intern/rna_attribute.c b/source/blender/makesrna/intern/rna_attribute.c index 0d973e8e94e..7cd6e375a82 100644 --- a/source/blender/makesrna/intern/rna_attribute.c +++ b/source/blender/makesrna/intern/rna_attribute.c @@ -566,7 +566,6 @@ static void rna_def_attribute(BlenderRNA *brna) RNA_def_struct_path_func(srna, "rna_Attribute_path"); prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); - RNA_def_struct_name_property(srna, prop); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Attribute_name_set"); RNA_def_property_editable_func(prop, "rna_Attribute_name_editable"); RNA_def_property_ui_text(prop, "Name", "Name of the Attribute"); diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 44045dc5d2c..cec6a50d170 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1125,6 +1125,11 @@ void RNA_def_struct_name_property(struct StructRNA *srna, struct PropertyRNA *pr CLOG_ERROR(&LOG, "\"%s.%s\", must be a string property.", srna->identifier, prop->identifier); DefRNA.error = true; } + else if (srna->nameproperty != NULL) { +CLOG_ERROR( +&LOG, "\"%s.%s\", name property is already set.", srna->identifier, prop->identifier); +DefRNA.error = true; + } else { srna->nameproperty = prop; } diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 93459b63492..3126f3e11f4 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -1081,7 +1081,6 @@ static void rna_def_render_pass(BlenderRNA *brna) prop = RNA_def_property(srna, "fullname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "fullname"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_struct_name_property(srna, prop); prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "name"); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [66a87fc9f47] blender-v2.92-release: Fix workspace tool name property
Commit: 66a87fc9f47217d203b8aaa4e837d25737d0307a Author: Campbell Barton Date: Sun Jan 17 18:14:56 2021 +1100 Branches: blender-v2.92-release https://developer.blender.org/rB66a87fc9f47217d203b8aaa4e837d25737d0307a Fix workspace tool name property The fallback tool was used as the tool name. Regression in a8ce9a143abbb51eae28e5d0cae1fb310bd0c24c === M source/blender/makesrna/intern/rna_workspace.c === diff --git a/source/blender/makesrna/intern/rna_workspace.c b/source/blender/makesrna/intern/rna_workspace.c index 4a4ac758daf..6b52a38c2da 100644 --- a/source/blender/makesrna/intern/rna_workspace.c +++ b/source/blender/makesrna/intern/rna_workspace.c @@ -272,7 +272,6 @@ static void rna_def_workspace_tool(BlenderRNA *brna) prop = RNA_def_property(srna, "idname_fallback", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Identifier Fallback", ""); - RNA_def_struct_name_property(srna, prop); prop = RNA_def_property(srna, "index", PROP_INT, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [7a0d5e0c9e3] sculpt-dev: Sculpt Expand: Expand from face set boundary
Commit: 7a0d5e0c9e3131b2aff091bacc0b04bbc7342c87 Author: Pablo Dobarro Date: Sat Jan 16 21:05:16 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rB7a0d5e0c9e3131b2aff091bacc0b04bbc7342c87 Sculpt Expand: Expand from face set boundary === M source/blender/editors/sculpt_paint/sculpt_expand.c M source/blender/editors/sculpt_paint/sculpt_intern.h === diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index 524f0a8e6b4..18f0ca7c17c 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -95,7 +95,9 @@ static EnumPropertyItem prop_sculpt_expand_falloff_type_items[] = { {SCULPT_EXPAND_FALLOFF_TOPOLOGY, "TOPOLOGY", 0, "Topology", ""}, {SCULPT_EXPAND_FALLOFF_NORMALS, "NORMALS", 0, "Normals", ""}, {SCULPT_EXPAND_FALLOFF_SPHERICAL, "SPHERICAL", 0, "Spherical", ""}, -{SCULPT_EXPAND_FALLOFF_BOUNDARY_TOPOLOGY, "BOUNDARY_TOPOLOGY`", 0, "Boundary Topology", ""}, +{SCULPT_EXPAND_FALLOFF_BOUNDARY_TOPOLOGY, "BOUNDARY_TOPOLOGY", 0, "Boundary Topology", ""}, +{SCULPT_EXPAND_FALLOFF_BOUNDARY_FACE_SET, "BOUNDARY_FACE_SET", 0, "Boundary Face Set", ""}, +{SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET, "ACTIVE_FACE_SET", 0, "Active Face Set", ""}, {0, NULL, 0, NULL, NULL}, }; @@ -106,6 +108,55 @@ static EnumPropertyItem prop_sculpt_expand_target_type_items[] = { {0, NULL, 0, NULL, NULL}, }; +static bool sculpt_expand_state_get(SculptSession *ss, ExpandCache *expand_cache, const int i) +{ + + bool enabled = false; + + if (expand_cache->snap) { +const int face_set = SCULPT_vertex_face_set_get(ss, i); +enabled = BLI_gset_haskey(expand_cache->snap_enabled_face_sets, POINTER_FROM_INT(face_set)); + } + else { +enabled = expand_cache->falloff_factor[i] <= expand_cache->active_factor; + } + + if (expand_cache->invert) { +enabled = !enabled; + } + return enabled; +} + +static bool sculpt_expand_face_state_get(SculptSession *ss, ExpandCache *expand_cache, const int f) +{ + bool enabled = false; + if (expand_cache->snap_enabled_face_sets) { +const int face_set = ss->face_sets[f]; +enabled = BLI_gset_haskey(expand_cache->snap_enabled_face_sets, POINTER_FROM_INT(face_set)); + } + else { +enabled = expand_cache->face_falloff_factor[f] <= expand_cache->active_factor; + } + if (expand_cache->invert) { +enabled = !enabled; + } + return enabled; +} + +static float sculpt_expand_gradient_falloff_get(ExpandCache *expand_cache, const int i) +{ + if (!expand_cache->falloff_gradient) { +return 1.0f; + } + + if (expand_cache->invert) { +return (expand_cache->falloff_factor[i] - expand_cache->active_factor) / + (expand_cache->max_falloff_factor - expand_cache->active_factor); + } + + return 1.0f - (expand_cache->falloff_factor[i] / expand_cache->active_factor); +} + static float *sculpt_expand_geodesic_falloff_create(Sculpt *sd, Object *ob, const int vertex) { return SCULPT_geodesic_from_vertex_and_symm(sd, ob, vertex, FLT_MAX); @@ -367,6 +418,137 @@ static void sculpt_expand_mesh_face_falloff_from_vertex_falloff(Mesh *mesh, } } +static BLI_bitmap *sculpt_expand_bitmap_from_enabled(SculptSession *ss, ExpandCache *expand_cache) +{ + const int totvert = SCULPT_vertex_count_get(ss); + BLI_bitmap *enabled_vertices = BLI_BITMAP_NEW(totvert, "enabled vertices"); + for (int i = 0; i < totvert; i++) { +const bool enabled = sculpt_expand_state_get(ss, expand_cache, i); +BLI_BITMAP_SET(enabled_vertices, i, enabled); + } + return enabled_vertices; +} + +static void sculpt_expand_from_state_boundary(Object *ob, ExpandCache *expand_cache, BLI_bitmap *enabled_vertices) { + SculptSession *ss = ob->sculpt; + GSet *initial_vertices = BLI_gset_int_new("initial_vertices"); + + const int totvert = SCULPT_vertex_count_get(ss); + + SculptFloodFill flood; + SCULPT_floodfill_init(ss, &flood); + + for (int i = 0; i < totvert; i++) { +SculptVertexNeighborIter ni; +if (!BLI_BITMAP_TEST(enabled_vertices, i)) { + continue; +} + +bool is_expand_boundary = false; +SCULPT_VERTEX_NEIGHBORS_ITER_BEGIN (ss, i, ni) { + if (!BLI_BITMAP_TEST(enabled_vertices, ni.index)) { +is_expand_boundary = true; + } +} +SCULPT_VERTEX_NEIGHBORS_ITER_END(ni); +if (is_expand_boundary) { + BLI_gset_add(initial_vertices, POINTER_FROM_INT(i)); + SCULPT_floodfill_add_initial(&flood, i); +} + } + + MEM_SAFE_FREE(expand_cache->falloff_factor); + MEM_SAFE_FREE(expand_cache->face_falloff_factor); + + float *dists = MEM_calloc_arrayN(sizeof(float), totvert, "topology dist"); + ExpandFloodFillData fdata; + fdata.dists = dists; + + SCULPT_floodfill_execute(ss, &flood, mask_expand_topology_floodfil
[Bf-blender-cvs] [3d311fdaf1d] sculpt-dev: Sculpt Expand: Expand from active
Commit: 3d311fdaf1d1be6ce97c6bb746194bfc7b410195 Author: Pablo Dobarro Date: Sat Jan 16 21:21:16 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rB3d311fdaf1d1be6ce97c6bb746194bfc7b410195 Sculpt Expand: Expand from active === M source/blender/editors/sculpt_paint/sculpt_expand.c === diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index 18f0ca7c17c..f5ea384c66a 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -137,9 +137,17 @@ static bool sculpt_expand_face_state_get(SculptSession *ss, ExpandCache *expand_ else { enabled = expand_cache->face_falloff_factor[f] <= expand_cache->active_factor; } + if (expand_cache->invert) { enabled = !enabled; } + + if (expand_cache->falloff_factor_type == SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET) { + if (ss->face_sets[f] == expand_cache->initial_active_face_set) { + enabled = false; + } + } + return enabled; } @@ -429,7 +437,10 @@ static BLI_bitmap *sculpt_expand_bitmap_from_enabled(SculptSession *ss, ExpandCa return enabled_vertices; } -static void sculpt_expand_from_state_boundary(Object *ob, ExpandCache *expand_cache, BLI_bitmap *enabled_vertices) { +static void sculpt_expand_from_state_boundary(Object *ob, + ExpandCache *expand_cache, + BLI_bitmap *enabled_vertices) +{ SculptSession *ss = ob->sculpt; GSet *initial_vertices = BLI_gset_int_new("initial_vertices"); @@ -469,45 +480,56 @@ static void sculpt_expand_from_state_boundary(Object *ob, ExpandCache *expand_ca expand_cache->falloff_factor = SCULPT_geodesic_distances_create(ob, initial_vertices, FLT_MAX); - BLI_gset_free(initial_vertices, NULL); - } -static void sculpt_expand_finitialize_from_face_set_boundary(Object *ob, ExpandCache *expand_cache, const int active_face_set) +static void sculpt_expand_finitialize_from_face_set_boundary(Object *ob, + ExpandCache *expand_cache, + const int active_face_set, + const bool internal_falloff) { SculptSession *ss = ob->sculpt; const int totvert = SCULPT_vertex_count_get(ss); BLI_bitmap *enabled_vertices = BLI_BITMAP_NEW(totvert, "enabled vertices"); for (int i = 0; i < totvert; i++) { - if (!SCULPT_vertex_has_unique_face_set(ss, i)) { - continue; - } - if (!SCULPT_vertex_has_face_set(ss, i, active_face_set)) { - continue; - } - BLI_BITMAP_ENABLE(enabled_vertices, i); +if (!SCULPT_vertex_has_unique_face_set(ss, i)) { + continue; +} +if (!SCULPT_vertex_has_face_set(ss, i, active_face_set)) { + continue; +} +BLI_BITMAP_ENABLE(enabled_vertices, i); } sculpt_expand_from_state_boundary(ob, expand_cache, enabled_vertices); MEM_freeN(enabled_vertices); - for (int i = 0; i < totvert; i++) { + if (internal_falloff) { +for (int i = 0; i < totvert; i++) { if (!SCULPT_vertex_has_face_set(ss, i, active_face_set)) { - continue; +continue; } - expand_cache->falloff_factor[i] *= -1; - } + expand_cache->falloff_factor[i] *= -1.0f; +} - float min_factor = FLT_MAX; - for (int i = 0; i < totvert; i++) { +float min_factor = FLT_MAX; +for (int i = 0; i < totvert; i++) { min_factor = min_ff(expand_cache->falloff_factor[i], min_factor); - } +} - const float increase_factor = fabsf(min_factor); - for (int i = 0; i < totvert; i++) { +const float increase_factor = fabsf(min_factor); +for (int i = 0; i < totvert; i++) { expand_cache->falloff_factor[i] += increase_factor; +} + } + else { +for (int i = 0; i < totvert; i++) { + if (!SCULPT_vertex_has_face_set(ss, i, active_face_set)) { +continue; + } + expand_cache->falloff_factor[i] = 0.0f; +} } } @@ -577,7 +599,12 @@ static void sculpt_expand_falloff_factors_from_vertex_and_symm_create( expand_cache->falloff_factor = sculpt_expand_boundary_topology_falloff_create( sd, ob, vertex); case SCULPT_EXPAND_FALLOFF_BOUNDARY_FACE_SET: - sculpt_expand_finitialize_from_face_set_boundary(ob, expand_cache, expand_cache->initial_active_face_set); + sculpt_expand_finitialize_from_face_set_boundary( + ob, expand_cache, expand_cache->initial_active_face_set, true); + break; +case SCULPT_EXPAND_FALLOFF_ACTIVE_FACE_SET: + sculpt_expand_finitialize_from_face_set_boundary( + ob, expand_cache, expand_cache->initial_active_face_set,
[Bf-blender-cvs] [e2fb2315fd4] sculpt-dev: Cleanup: Clang Format
Commit: e2fb2315fd438f0d821eb033918172e1654cae4c Author: Pablo Dobarro Date: Sat Jan 16 20:41:33 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rBe2fb2315fd438f0d821eb033918172e1654cae4c Cleanup: Clang Format === M source/blender/editors/sculpt_paint/sculpt_expand.c === diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index 3473ebf10d5..524f0a8e6b4 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -1068,10 +1068,9 @@ static int sculpt_expand_modal(bContext *C, wmOperator *UNUSED(op), const wmEven return OPERATOR_RUNNING_MODAL; } - - - -static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int *face_sets, const int totface, const int delete_id) { +static void sculpt_expand_delete_face_set_id( +Mesh *mesh, MeshElemMap *pmap, int *face_sets, const int totface, const int delete_id) +{ BLI_LINKSTACK_DECLARE(queue, int); BLI_LINKSTACK_DECLARE(queue_next, int); @@ -1080,18 +1079,17 @@ static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int BLI_LINKSTACK_INIT(queue_next); for (int i = 0; i < totface; i++) { - if (face_sets[i] == delete_id) { - BLI_LINKSTACK_PUSH(queue, i); - } +if (face_sets[i] == delete_id) { + BLI_LINKSTACK_PUSH(queue, i); +} } - while (BLI_LINKSTACK_SIZE(queue)) { int f_index; while (f_index = BLI_LINKSTACK_POP(queue)) { -int other_id = delete_id; -const MPoly *c_poly = &mesh->mpoly[f_index]; + int other_id = delete_id; + const MPoly *c_poly = &mesh->mpoly[f_index]; for (int l = 0; l < c_poly->totloop; l++) { const MLoop *c_loop = &mesh->mloop[c_poly->loopstart + l]; const MeshElemMap *vert_map = &pmap[c_loop->v]; @@ -1099,7 +1097,7 @@ static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int const int neighbor_face_index = vert_map->indices[i]; if (face_sets[neighbor_face_index] != delete_id) { - other_id = face_sets[neighbor_face_index]; +other_id = face_sets[neighbor_face_index]; } } } @@ -1108,7 +1106,7 @@ static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int face_sets[f_index] = other_id; } else { - BLI_LINKSTACK_PUSH(queue_next, f_index); +BLI_LINKSTACK_PUSH(queue_next, f_index); } } @@ -1119,7 +1117,6 @@ static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int BLI_LINKSTACK_FREE(queue_next); } - static void sculpt_expand_cache_initial_config_set(Sculpt *sd, Object *ob, ExpandCache *expand_cache, @@ -1177,13 +1174,14 @@ static int sculpt_expand_invoke(bContext *C, wmOperator *op, const wmEvent *even /* Store initial state. */ sculpt_expand_initial_state_store(ob, ss->expand_cache); - if (ss->expand_cache->modify_active) { - sculpt_expand_delete_face_set_id(ob->data, ss->pmap, ss->expand_cache->initial_face_sets, ss->totfaces, ss->expand_cache->next_face_set); +sculpt_expand_delete_face_set_id(ob->data, + ss->pmap, + ss->expand_cache->initial_face_sets, + ss->totfaces, + ss->expand_cache->next_face_set); } - - /* Initialize the factors. */ eSculptExpandFalloffType falloff_type = SCULPT_EXPAND_FALLOFF_GEODESICS; if (SCULPT_vertex_is_boundary(ss, ss->expand_cache->initial_active_vertex)) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [fc1fc95b79c] sculpt-dev: Sculpt Expand: Modify Active Face Set
Commit: fc1fc95b79c98e7a656c58ad815bc4f689a6534a Author: Pablo Dobarro Date: Sat Jan 16 20:41:10 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rBfc1fc95b79c98e7a656c58ad815bc4f689a6534a Sculpt Expand: Modify Active Face Set === M source/blender/editors/sculpt_paint/sculpt_expand.c M source/blender/editors/sculpt_paint/sculpt_intern.h === diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index d460ca5c02e..3473ebf10d5 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -24,6 +24,7 @@ #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_linklist_stack.h" #include "BLI_math.h" #include "BLI_task.h" @@ -39,6 +40,7 @@ #include "BKE_colortools.h" #include "BKE_context.h" #include "BKE_mesh.h" +#include "BKE_mesh_mapping.h" #include "BKE_multires.h" #include "BKE_node.h" #include "BKE_object.h" @@ -887,7 +889,12 @@ static void sculpt_expand_set_initial_components_for_mouse(bContext *C, copy_v2_v2(ss->expand_cache->initial_mouse, mouse); expand_cache->initial_active_vertex = initial_vertex; expand_cache->initial_active_face_set = SCULPT_active_face_set_get(ss); - expand_cache->next_face_set = ED_sculpt_face_sets_find_next_available_id(ob->data); + if (expand_cache->modify_active) { +expand_cache->next_face_set = SCULPT_active_face_set_get(ss); + } + else { +expand_cache->next_face_set = ED_sculpt_face_sets_find_next_available_id(ob->data); + } } static void sculpt_expand_move_propagation_origin(bContext *C, @@ -1061,6 +1068,58 @@ static int sculpt_expand_modal(bContext *C, wmOperator *UNUSED(op), const wmEven return OPERATOR_RUNNING_MODAL; } + + + +static void sculpt_expand_delete_face_set_id(Mesh *mesh, MeshElemMap *pmap, int *face_sets, const int totface, const int delete_id) { + + BLI_LINKSTACK_DECLARE(queue, int); + BLI_LINKSTACK_DECLARE(queue_next, int); + + BLI_LINKSTACK_INIT(queue); + BLI_LINKSTACK_INIT(queue_next); + + for (int i = 0; i < totface; i++) { + if (face_sets[i] == delete_id) { + BLI_LINKSTACK_PUSH(queue, i); + } + } + + + while (BLI_LINKSTACK_SIZE(queue)) { +int f_index; +while (f_index = BLI_LINKSTACK_POP(queue)) { + +int other_id = delete_id; +const MPoly *c_poly = &mesh->mpoly[f_index]; + for (int l = 0; l < c_poly->totloop; l++) { +const MLoop *c_loop = &mesh->mloop[c_poly->loopstart + l]; +const MeshElemMap *vert_map = &pmap[c_loop->v]; +for (int i = 0; i < vert_map->count; i++) { + + const int neighbor_face_index = vert_map->indices[i]; + if (face_sets[neighbor_face_index] != delete_id) { + other_id = face_sets[neighbor_face_index]; + } +} + } + + if (other_id != delete_id) { +face_sets[f_index] = other_id; + } + else { + BLI_LINKSTACK_PUSH(queue_next, f_index); + } +} + +BLI_LINKSTACK_SWAP(queue, queue_next); + } + + BLI_LINKSTACK_FREE(queue); + BLI_LINKSTACK_FREE(queue_next); +} + + static void sculpt_expand_cache_initial_config_set(Sculpt *sd, Object *ob, ExpandCache *expand_cache, @@ -1071,6 +1130,8 @@ static void sculpt_expand_cache_initial_config_set(Sculpt *sd, expand_cache->preserve = RNA_boolean_get(op->ptr, "use_mask_preserve"); expand_cache->falloff_gradient = RNA_boolean_get(op->ptr, "use_falloff_gradient"); expand_cache->target = RNA_enum_get(op->ptr, "target"); + expand_cache->modify_active = RNA_boolean_get(op->ptr, "use_modify_active"); + expand_cache->expand_from_active = RNA_boolean_get(op->ptr, "use_expand_from_active"); SculptSession *ss = ob->sculpt; Brush *brush = BKE_paint_brush(&sd->paint); @@ -1116,6 +1177,13 @@ static int sculpt_expand_invoke(bContext *C, wmOperator *op, const wmEvent *even /* Store initial state. */ sculpt_expand_initial_state_store(ob, ss->expand_cache); + + if (ss->expand_cache->modify_active) { + sculpt_expand_delete_face_set_id(ob->data, ss->pmap, ss->expand_cache->initial_face_sets, ss->totfaces, ss->expand_cache->next_face_set); + } + + + /* Initialize the factors. */ eSculptExpandFalloffType falloff_type = SCULPT_EXPAND_FALLOFF_GEODESICS; if (SCULPT_vertex_is_boundary(ss, ss->expand_cache->initial_active_vertex)) { @@ -1213,4 +1281,10 @@ void SCULPT_OT_expand(wmOperatorType *ot) "Preserve the previous mask"); ot->prop = RNA_def_boolean( ot->srna, "use_falloff_gradient", false, "Falloff Gradient", "Expand Using a Falloff"); + + ot->prop = RNA_def_boolean( + ot->srna, "use_modify_active", true, "Modify Acti
[Bf-blender-cvs] [05703d630ef] sculpt-dev: Sculpt Expand: face set selection snapping
Commit: 05703d630efa06b58f00a806d5c6dd4f03849199 Author: Pablo Dobarro Date: Sat Jan 16 20:11:37 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rB05703d630efa06b58f00a806d5c6dd4f03849199 Sculpt Expand: face set selection snapping === M release/scripts/presets/keyconfig/keymap_data/blender_default.py M source/blender/editors/sculpt_paint/sculpt_expand.c M source/blender/editors/sculpt_paint/sculpt_intern.h === diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 74303aec546..79d5c9b301b 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5540,6 +5540,7 @@ def km_sculpt_expand_modal(_params): ("FALLOFF_GEODESICS", {"type": 'ONE', "value": 'PRESS', "any": True, "repeat" : False}, None), ("FALLOFF_TOPOLOGY", {"type": 'TWO', "value": 'PRESS', "any": True, "repeat" : False}, None), ("FALLOFF_SPHERICAL", {"type": 'THREE', "value": 'PRESS', "any": True, "repeat" : False}, None), +("SNAP_TOGGLE", {"type": 'Z', "value": 'ANY', "any": True, "repeat" : False}, None), ]) return keymap diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index 0ab8b22b184..d460ca5c02e 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -85,6 +85,7 @@ enum { SCULPT_EXPAND_MODAL_FALLOFF_GEODESICS, SCULPT_EXPAND_MODAL_FALLOFF_TOPOLOGY, SCULPT_EXPAND_MODAL_FALLOFF_SPHERICAL, + SCULPT_EXPAND_MODAL_SNAP_TOGGLE, }; static EnumPropertyItem prop_sculpt_expand_falloff_type_items[] = { @@ -407,6 +408,9 @@ static void sculpt_expand_falloff_factors_from_vertex_and_symm_create( static void sculpt_expand_cache_free(ExpandCache *expand_cache) { + if (expand_cache->snap_enabled_face_sets) { +BLI_gset_free(expand_cache->snap_enabled_face_sets, NULL); + } MEM_SAFE_FREE(expand_cache->nodes); MEM_SAFE_FREE(expand_cache->falloff_factor); MEM_SAFE_FREE(expand_cache->face_falloff_factor); @@ -461,18 +465,35 @@ static void sculpt_expand_cancel(bContext *C, wmOperator *op) ED_workspace_status_text(C, NULL); } -static bool sculpt_expand_state_get(ExpandCache *expand_cache, const int i) +static bool sculpt_expand_state_get(SculptSession *ss, ExpandCache *expand_cache, const int i) { - bool enabled = expand_cache->falloff_factor[i] <= expand_cache->active_factor; + + bool enabled = false; + + if (expand_cache->snap) { +const int face_set = SCULPT_vertex_face_set_get(ss, i); +enabled = BLI_gset_haskey(expand_cache->snap_enabled_face_sets, POINTER_FROM_INT(face_set)); + } + else { +enabled = expand_cache->falloff_factor[i] <= expand_cache->active_factor; + } + if (expand_cache->invert) { enabled = !enabled; } return enabled; } -static bool sculpt_expand_face_state_get(ExpandCache *expand_cache, const int f) +static bool sculpt_expand_face_state_get(SculptSession *ss, ExpandCache *expand_cache, const int f) { - bool enabled = expand_cache->face_falloff_factor[f] <= expand_cache->active_factor; + bool enabled = false; + if (expand_cache->snap_enabled_face_sets) { +const int face_set = ss->face_sets[f]; +enabled = BLI_gset_haskey(expand_cache->snap_enabled_face_sets, POINTER_FROM_INT(face_set)); + } + else { +enabled = expand_cache->face_falloff_factor[f] <= expand_cache->active_factor; + } if (expand_cache->invert) { enabled = !enabled; } @@ -508,7 +529,7 @@ static void sculpt_expand_mask_update_task_cb(void *__restrict userdata, BKE_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_ALL) { const float initial_mask = *vd.mask; -const bool enabled = sculpt_expand_state_get(expand_cache, vd.index); +const bool enabled = sculpt_expand_state_get(ss, expand_cache, vd.index); float new_mask; @@ -551,7 +572,7 @@ static void sculpt_expand_face_sets_update_task_cb(void *__restrict userdata, PBVHVertexIter vd; BKE_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_ALL) { -const bool enabled = sculpt_expand_state_get(expand_cache, vd.index); +const bool enabled = sculpt_expand_state_get(ss, expand_cache, vd.index); if (!enabled) { continue; @@ -577,7 +598,7 @@ static void sculpt_expand_face_sets_update(SculptSession *ss, ExpandCache *expan { const int totface = ss->totfaces; for (int f = 0; f < totface; f++) { -const bool enabled = sculpt_expand_face_state_get(expand_cache, f); +const bool enabled = sculpt_expand_face_state_get(ss, expand_cache, f); if (!enabled) { continue; } @@ -611,7 +632,7 @@ static void sculpt_expand
[Bf-blender-cvs] [65c358851dc] sculpt-dev: Sculpt Expand: Recursivity, move and falloff switching
Commit: 65c358851dc9ff2a72053b3218059d5940111410 Author: Pablo Dobarro Date: Sat Jan 16 18:38:05 2021 +0100 Branches: sculpt-dev https://developer.blender.org/rB65c358851dc9ff2a72053b3218059d5940111410 Sculpt Expand: Recursivity, move and falloff switching === M release/scripts/presets/keyconfig/keymap_data/blender_default.py M source/blender/editors/sculpt_paint/sculpt_expand.c M source/blender/editors/sculpt_paint/sculpt_intern.h === diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 8d9f1876980..74303aec546 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5533,8 +5533,13 @@ def km_sculpt_expand_modal(_params): ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), ("INVERT", {"type": 'F', "value": 'PRESS', "any": True, "repeat" : False}, None), -("MASK_PRESERVE", {"type": 'P', "value": 'PRESS', "any": True, "repeat" : False}, None), +("PRESERVE", {"type": 'E', "value": 'PRESS', "any": True, "repeat" : False}, None), ("GRADIENT", {"type": 'G', "value": 'PRESS', "any": True, "repeat" : False}, None), +("RECURSION_STEP", {"type": 'R', "value": 'PRESS', "any": True, "repeat" : False}, None), +("MOVE_TOGGLE", {"type": 'SPACE', "value": 'ANY', "any": True, "repeat" : False}, None), +("FALLOFF_GEODESICS", {"type": 'ONE', "value": 'PRESS', "any": True, "repeat" : False}, None), +("FALLOFF_TOPOLOGY", {"type": 'TWO', "value": 'PRESS', "any": True, "repeat" : False}, None), +("FALLOFF_SPHERICAL", {"type": 'THREE', "value": 'PRESS', "any": True, "repeat" : False}, None), ]) return keymap diff --git a/source/blender/editors/sculpt_paint/sculpt_expand.c b/source/blender/editors/sculpt_paint/sculpt_expand.c index 95d87b92c20..0ab8b22b184 100644 --- a/source/blender/editors/sculpt_paint/sculpt_expand.c +++ b/source/blender/editors/sculpt_paint/sculpt_expand.c @@ -77,9 +77,14 @@ enum { SCULPT_EXPAND_MODAL_CONFIRM = 1, SCULPT_EXPAND_MODAL_CANCEL, SCULPT_EXPAND_MODAL_INVERT, - SCULPT_EXPAND_MODAL_MASK_PRESERVE_TOGGLE, + SCULPT_EXPAND_MODAL_PRESERVE_TOGGLE, SCULPT_EXPAND_MODAL_GRADIENT_TOGGLE, SCULPT_EXPAND_MODAL_FALLOFF_CYCLE, + SCULPT_EXPAND_MODAL_RECURSION_STEP, + SCULPT_EXPAND_MODAL_MOVE_TOGGLE, + SCULPT_EXPAND_MODAL_FALLOFF_GEODESICS, + SCULPT_EXPAND_MODAL_FALLOFF_TOPOLOGY, + SCULPT_EXPAND_MODAL_FALLOFF_SPHERICAL, }; static EnumPropertyItem prop_sculpt_expand_falloff_type_items[] = { @@ -115,7 +120,7 @@ static bool mask_expand_topology_floodfill_cb( { ExpandFloodFillData *data = userdata; if (!is_duplicate) { -const int to_it = data->dists[from_v] + 1; +const float to_it = data->dists[from_v] + 1.0f; data->dists[to_v] = to_it; } else { @@ -128,7 +133,7 @@ static float *sculpt_expand_topology_falloff_create(Sculpt *sd, Object *ob, cons { SculptSession *ss = ob->sculpt; const int totvert = SCULPT_vertex_count_get(ss); - float *dists = MEM_malloc_arrayN(sizeof(float), totvert, "spherical dist"); + float *dists = MEM_calloc_arrayN(sizeof(float), totvert, "topology dist"); SculptFloodFill flood; SCULPT_floodfill_init(ss, &flood); @@ -366,11 +371,6 @@ static void sculpt_expand_falloff_factors_from_vertex_and_symm_create( const int vertex, eSculptExpandFalloffType falloff_type) { - if (expand_cache->falloff_factor && expand_cache->falloff_factor_type == falloff_type) { -/* Falloffs are already initialize with the current falloff type, nothing to do. */ -return; - } - if (expand_cache->falloff_factor) { MEM_freeN(expand_cache->falloff_factor); } @@ -519,7 +519,7 @@ static void sculpt_expand_mask_update_task_cb(void *__restrict userdata, new_mask = 0.0f; } -if (expand_cache->mask_preserve) { +if (expand_cache->preserve) { new_mask = max_ff(new_mask, expand_cache->initial_mask[vd.index]); } @@ -581,7 +581,7 @@ static void sculpt_expand_face_sets_update(SculptSession *ss, ExpandCache *expan if (!enabled) { continue; } -if (expand_cache->falloff_gradient) { +if (expand_cache->preserve) { ss->face_sets[f] += expand_cache->next_face_set; } else { @@ -754,11 +754,10 @@ static void sculpt_expand_update_for_vertex(bContext *C, Object *ob, const int v static int sculpt_expand_target_vertex_update_and_get(bContext *C, Object *ob, - const wmEvent *event) +
[Bf-blender-cvs] [1e8ed36a907] master: Merge branch 'blender-v2.92-release'
Commit: 1e8ed36a907c140f235ee312c1a66141f42060d3 Author: Hans Goudey Date: Sat Jan 16 13:11:33 2021 -0600 Branches: master https://developer.blender.org/rB1e8ed36a907c140f235ee312c1a66141f42060d3 Merge branch 'blender-v2.92-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [6fb7d0f5592] blender-v2.92-release: Fix T84713: Geometry nodes reroute sockets have incorrect type
Commit: 6fb7d0f5592793196c8100ef6cdbdf99ed695952 Author: Wannes Malfait Date: Sat Jan 16 13:09:19 2021 -0600 Branches: blender-v2.92-release https://developer.blender.org/rB6fb7d0f5592793196c8100ef6cdbdf99ed695952 Fix T84713: Geometry nodes reroute sockets have incorrect type This implements the node tree update function, which is needed so that the reroutes get updated to the correct type. It is based on the same code in the shader and compositor node trees. Differential Revision: https://developer.blender.org/D10123 === M source/blender/nodes/geometry/node_geometry_tree.cc === diff --git a/source/blender/nodes/geometry/node_geometry_tree.cc b/source/blender/nodes/geometry/node_geometry_tree.cc index da77e8896fb..87178c52ab9 100644 --- a/source/blender/nodes/geometry/node_geometry_tree.cc +++ b/source/blender/nodes/geometry/node_geometry_tree.cc @@ -32,6 +32,8 @@ #include "RNA_access.h" +#include "node_common.h" + bNodeTreeType *ntreeType_Geometry; static void geometry_node_tree_get_from_context(const bContext *C, @@ -63,6 +65,12 @@ static void geometry_node_tree_get_from_context(const bContext *C, } } +static void geometry_node_tree_update(bNodeTree *ntree) +{ + /* Needed to give correct types to reroutes. */ + ntree_update_reroute_nodes(ntree); +} + void register_node_tree_type_geo(void) { bNodeTreeType *tt = ntreeType_Geometry = static_cast( @@ -73,7 +81,7 @@ void register_node_tree_type_geo(void) tt->ui_icon = 0; /* defined in drawnode.c */ strcpy(tt->ui_description, N_("Geometry nodes")); tt->rna_ext.srna = &RNA_GeometryNodeTree; - + tt->update = geometry_node_tree_update; tt->get_from_context = geometry_node_tree_get_from_context; ntreeTypeAdd(tt); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [4e8c78245d3] master: GPencil: Hide layer if the scale is zero
Commit: 4e8c78245d3ec5e83be3cee00898be589ec0b24c Author: Antonio Vazquez Date: Sat Jan 16 19:36:00 2021 +0100 Branches: master https://developer.blender.org/rB4e8c78245d3ec5e83be3cee00898be589ec0b24c GPencil: Hide layer if the scale is zero When scale a layer to zero must be hidden. === M source/blender/blenkernel/intern/gpencil.c === diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 83b20e602c3..453960fbd61 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -2575,6 +2575,11 @@ void BKE_gpencil_visible_stroke_iter(ViewLayer *view_layer, continue; } +/* If scale to 0 the layer must be invisible. */ +if (is_zero_v3(gpl->scale)) { + continue; +} + /* Hide the layer if it's defined a view layer filter. This is used to * generate renders, putting only selected GP layers for each View Layer. * This is used only in final render and never in Viewport. */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [2c323dc875b] greasepencil-object: Merge branch 'master' into greasepencil-object
Commit: 2c323dc875b712d1208d53112f62754c1d8ae7bd Author: Antonio Vazquez Date: Sat Jan 16 17:01:03 2021 +0100 Branches: greasepencil-object https://developer.blender.org/rB2c323dc875b712d1208d53112f62754c1d8ae7bd Merge branch 'master' into greasepencil-object Conflicts: source/blender/editors/include/ED_gpencil.h === === diff --cc source/blender/editors/include/ED_gpencil.h index 7b324ae9554,acaa6495ba9..1e6cd18193e --- a/source/blender/editors/include/ED_gpencil.h +++ b/source/blender/editors/include/ED_gpencil.h @@@ -147,12 -147,9 +147,12 @@@ bool ED_gpencil_has_keyframe_v3d(struc bool ED_gpencil_stroke_can_use_direct(const struct ScrArea *area, const struct bGPDstroke *gps); bool ED_gpencil_stroke_can_use(const struct bContext *C, const struct bGPDstroke *gps); - bool ED_gpencil_stroke_color_use(struct Object *ob, - const struct bGPDlayer *gpl, - const struct bGPDstroke *gps); + bool ED_gpencil_stroke_material_editable(struct Object *ob, + const struct bGPDlayer *gpl, + const struct bGPDstroke *gps); +bool ED_gpencil_stroke_material_visible(struct Object *ob, +const struct bGPDlayer *gpl, +const struct bGPDstroke *gps); /* --- Grease Pencil Operators - */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [24cdffde555] master: GPencil: Cleanup - Rename ED_gpencil_stroke_color_use to ED_gpencil_stroke_material_editable
Commit: 24cdffde555bac873904d2fbfe9d57fc0feb8a54 Author: Antonio Vazquez Date: Sat Jan 16 16:44:49 2021 +0100 Branches: master https://developer.blender.org/rB24cdffde555bac873904d2fbfe9d57fc0feb8a54 GPencil: Cleanup - Rename ED_gpencil_stroke_color_use to ED_gpencil_stroke_material_editable === M source/blender/editors/gpencil/gpencil_data.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_intern.h M source/blender/editors/gpencil/gpencil_interpolate.c M source/blender/editors/gpencil/gpencil_paint.c M source/blender/editors/gpencil/gpencil_sculpt_paint.c M source/blender/editors/gpencil/gpencil_select.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/gpencil/gpencil_vertex_ops.c M source/blender/editors/gpencil/gpencil_vertex_paint.c M source/blender/editors/gpencil/gpencil_weight_paint.c M source/blender/editors/include/ED_gpencil.h M source/blender/editors/screen/screen_context.c M source/blender/editors/transform/transform_convert_gpencil.c === diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c index 7eac4af0cba..8f24ce0ddd8 100644 --- a/source/blender/editors/gpencil/gpencil_data.c +++ b/source/blender/editors/gpencil/gpencil_data.c @@ -1560,7 +1560,7 @@ static int gpencil_stroke_arrange_exec(bContext *C, wmOperator *op) continue; } /* check if the color is editable */ -if (ED_gpencil_stroke_color_use(ob, gpl, gps) == false) { +if (ED_gpencil_stroke_material_editable(ob, gpl, gps) == false) { continue; } /* some stroke is already at front*/ @@ -1725,7 +1725,7 @@ static int gpencil_stroke_change_color_exec(bContext *C, wmOperator *op) continue; } /* check if the color is editable */ -if (ED_gpencil_stroke_color_use(ob, gpl, gps) == false) { +if (ED_gpencil_stroke_material_editable(ob, gpl, gps) == false) { continue; } @@ -3388,7 +3388,7 @@ static int gpencil_material_select_exec(bContext *C, wmOperator *op) continue; } /* check if the color is editable */ - if (ED_gpencil_stroke_color_use(ob, gpl, gps) == false) { + if (ED_gpencil_stroke_material_editable(ob, gpl, gps) == false) { continue; } diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index 9628790f27e..b5269bbfacf 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -1867,7 +1867,7 @@ static int gpencil_move_to_layer_exec(bContext *C, wmOperator *op) } /* Check if the color is editable. */ - if (ED_gpencil_stroke_color_use(ob, gpl, gps) == false) { + if (ED_gpencil_stroke_material_editable(ob, gpl, gps) == false) { continue; } @@ -2610,7 +2610,7 @@ static int gpencil_delete_selected_points(bContext *C) continue; } /* check if the color is editable */ - if (ED_gpencil_stroke_color_use(ob, gpl, gps) == false) { + if (ED_gpencil_stroke_material_editable(ob, gpl, gps) == false) { continue; } @@ -2808,7 +2808,7 @@ static int gpencil_snap_to_grid(bContext *C, wmOperator *UNUSED(op)) continue; } /* check if the color is editable */ -if (ED_gpencil_stroke_color_use(obact, gpl, gps) == false) { +if (ED_gpencil_stroke_material_editable(obact, gpl, gps) == false) { continue; } @@ -2946,7 +2946,7 @@ static int gpencil_snap_to_cursor(bContext *C, wmOperator *op) continue; } /* check if the color is editable */ - if (ED_gpencil_stroke_color_use(obact, gpl, gps) == false) { + if (ED_gpencil_stroke_material_editable(obact, gpl, gps) == false) { continue; } /* only continue if this stroke is selected (editable doesn't guarantee this)... */ @@ -3050,7 +3050,7 @@ static bool gpencil_stroke_points_centroid(Depsgraph *depsgraph, continue; } /* check if the color is editable */ -if (ED_gpencil_stroke_color_use(obact, gpl, gps) == false) { +if (ED_gpencil_stroke_material_editable(obact, gpl, gps) == false) { continue; } /* only continue if this stroke is selected (editable doesn't guarantee this)... */ @@ -3565,7 +3565,7 @@ static int gpencil_stroke_join_exec(bContext *C, wmOperator *op) continue; } /* check if the color is editable. */ -if (ED_gp
[Bf-blender-cvs] [f5ec29023dc] master: GPencil: Fix initial value for fill factor after last changes
Commit: f5ec29023dcad11a7b4ced3d52d69d21b443ce02 Author: Antonio Vazquez Date: Sat Jan 16 16:36:49 2021 +0100 Branches: master https://developer.blender.org/rBf5ec29023dcad11a7b4ced3d52d69d21b443ce02 GPencil: Fix initial value for fill factor after last changes The value has changed due a previous commit and the minimum value cannot be 0. === M source/blender/blenloader/intern/versioning_290.c === diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c index 40481505e1c..24683351bfd 100644 --- a/source/blender/blenloader/intern/versioning_290.c +++ b/source/blender/blenloader/intern/versioning_290.c @@ -1595,5 +1595,11 @@ void blo_do_versions_290(FileData *fd, Library *UNUSED(lib), Main *bmain) } } } +/* Fix Fill factor for grease pencil fill brushes. */ +LISTBASE_FOREACH (Brush *, brush, &bmain->brushes) { + if ((brush->gpencil_settings) && (brush->gpencil_settings->fill_factor == 0.0f)) { +brush->gpencil_settings->fill_factor = 1.0f; + } +} } } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [236577f8f37] greasepencil-object: GPencil: Fix errors after merge
Commit: 236577f8f376950c9274da51d130dc1d59cec329 Author: Antonio Vazquez Date: Sat Jan 16 16:11:48 2021 +0100 Branches: greasepencil-object https://developer.blender.org/rB236577f8f376950c9274da51d130dc1d59cec329 GPencil: Fix errors after merge === M source/blender/io/gpencil/intern/gpencil_io_base.cc M source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc M source/blender/io/gpencil/intern/gpencil_io_export_svg.cc === diff --git a/source/blender/io/gpencil/intern/gpencil_io_base.cc b/source/blender/io/gpencil/intern/gpencil_io_base.cc index 588ee22847a..fbd300697bb 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_base.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_base.cc @@ -368,7 +368,7 @@ struct bGPDlayer *GpencilIO::gpl_current_get(void) void GpencilIO::gpl_current_set(struct bGPDlayer *gpl) { gpl_cur_ = gpl; - BKE_gpencil_parent_matrix_get(depsgraph_, params_.ob, gpl, diff_mat_); + BKE_gpencil_layer_transform_matrix_get(depsgraph_, params_.ob, gpl, diff_mat_); } struct bGPDframe *GpencilIO::gpf_current_get(void) @@ -464,7 +464,7 @@ void GpencilIO::selected_objects_boundbox_set(void) if (gpl->flag & GP_LAYER_HIDE) { continue; } - BKE_gpencil_parent_matrix_get(depsgraph_, ob_eval, gpl, diff_mat_); + BKE_gpencil_layer_transform_matrix_get(depsgraph_, ob_eval, gpl, diff_mat_); bGPDframe *gpf = gpl->actframe; if (gpf == nullptr) { diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc b/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc index 5e8e076dcf7..db2b139bc51 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc @@ -177,7 +177,7 @@ void GpencilExporterPDF::export_gpencil_layers(void) } gpf_current_set(gpf); - BKE_gpencil_parent_matrix_get(depsgraph_, ob, gpl, diff_mat_); + BKE_gpencil_layer_transform_matrix_get(depsgraph_, ob, gpl, diff_mat_); LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) { if (gps->totpoints == 0) { continue; diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc index a860b35d693..ae22f85a4ef 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc @@ -206,7 +206,7 @@ void GpencilExporterSVG::export_gpencil_layers(void) pugi::xml_node gpl_node = ob_node.append_child("g"); gpl_node.append_attribute("id").set_value(gpl->info); - BKE_gpencil_parent_matrix_get(depsgraph_, ob, gpl, diff_mat_); + BKE_gpencil_layer_transform_matrix_get(depsgraph_, ob, gpl, diff_mat_); LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) { if (gps->totpoints == 0) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [1df7b6a2f42] greasepencil-object: Merge branch 'master' into greasepencil-object
Commit: 1df7b6a2f424915381ceba5c36ff5588aca5bd56 Author: Antonio Vazquez Date: Sat Jan 16 16:06:03 2021 +0100 Branches: greasepencil-object https://developer.blender.org/rB1df7b6a2f424915381ceba5c36ff5588aca5bd56 Merge branch 'master' into greasepencil-object === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [e02d84eb3be] master: GPencil: Add new parameteres to transform layers
Commit: e02d84eb3bea710aa4a658629813bd7e4c67ce4c Author: Antonio Vazquez Date: Sat Jan 16 15:33:38 2021 +0100 Branches: master https://developer.blender.org/rBe02d84eb3bea710aa4a658629813bd7e4c67ce4c GPencil: Add new parameteres to transform layers When using grease pencil for drawing Storyboards, it's very common to require a transform of the layers. This transform can be done using the offset modifier, but in some cases, the scene requires a lot of modifiers and makes the file hard to work. This new feature adds a transforms Location, Rotation and Scale at Layer level, and allows to transform the layer without using a modifier, keeping the scene more clean. {F9480695} This feature was suggested by @pepeland after receiving feedback from several artists. Also, done some code cleanup and rename some functions to get a better naming. Maniphest Tasks: T83660 Differential Revision: https://developer.blender.org/D9761 === M release/scripts/startup/bl_ui/properties_grease_pencil_common.py M source/blender/blenkernel/BKE_gpencil.h M source/blender/blenkernel/intern/gpencil.c M source/blender/blenkernel/intern/gpencil_modifier.c M source/blender/blenkernel/intern/object_update.c M source/blender/blenloader/intern/versioning_290.c M source/blender/draw/engines/overlay/overlay_gpencil.c M source/blender/draw/intern/draw_cache_impl_gpencil.c M source/blender/editors/gpencil/gpencil_convert.c M source/blender/editors/gpencil/gpencil_data.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_fill.c M source/blender/editors/gpencil/gpencil_intern.h M source/blender/editors/gpencil/gpencil_paint.c M source/blender/editors/gpencil/gpencil_primitive.c M source/blender/editors/gpencil/gpencil_sculpt_paint.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/gpencil/gpencil_vertex_paint.c M source/blender/editors/gpencil/gpencil_weight_paint.c M source/blender/editors/include/ED_gpencil.h M source/blender/editors/object/object_transform.c M source/blender/editors/transform/transform_convert_gpencil.c M source/blender/editors/transform/transform_gizmo_3d.c M source/blender/makesdna/DNA_gpencil_types.h M source/blender/makesrna/intern/rna_gpencil.c === diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py index 8b404c4a306..fecc09da539 100644 --- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py +++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py @@ -759,6 +759,16 @@ class GreasePencilLayerAdjustmentsPanel: col = layout.row(align=True) col.prop(gpl, "lock_material") +# Transforms +row = layout.row(align=True) +row.prop(gpl, "location") + +row = layout.row(align=True) +row.prop(gpl, "rotation") + +row = layout.row(align=True) +row.prop(gpl, "scale") + class GPENCIL_UL_masks(UIList): def draw_item(self, _context, layout, _data, item, icon, _active_data, _active_propname, _index): diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h index df5711f5120..8903abee432 100644 --- a/source/blender/blenkernel/BKE_gpencil.h +++ b/source/blender/blenkernel/BKE_gpencil.h @@ -280,12 +280,12 @@ void BKE_gpencil_frame_original_pointers_update(const struct bGPDframe *gpf_orig const struct bGPDframe *gpf_eval); void BKE_gpencil_update_orig_pointers(const struct Object *ob_orig, const struct Object *ob_eval); -void BKE_gpencil_parent_matrix_get(const struct Depsgraph *depsgraph, - struct Object *obact, - struct bGPDlayer *gpl, - float diff_mat[4][4]); +void BKE_gpencil_layer_transform_matrix_get(const struct Depsgraph *depsgraph, +struct Object *obact, +struct bGPDlayer *gpl, +float diff_mat[4][4]); -void BKE_gpencil_update_layer_parent(const struct Depsgraph *depsgraph, struct Object *ob); +void BKE_gpencil_update_layer_transforms(const struct Depsgraph *depsgraph, struct Object *ob); int BKE_gpencil_material_find_index_by_name_prefix(struct Object *ob, const char *name_prefix); diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index c7ca82c92fc..83b20e602c3 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -95,6 +95,32 @@ static void grease
[Bf-blender-cvs] [0a44c4b5942] master: Merge branch 'blender-v2.92-release'
Commit: 0a44c4b5942e9bcad2269bd4a1339bac462728e0 Author: Jacques Lucke Date: Sat Jan 16 15:26:43 2021 +0100 Branches: master https://developer.blender.org/rB0a44c4b5942e9bcad2269bd4a1339bac462728e0 Merge branch 'blender-v2.92-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [1e193a0b564] blender-v2.92-release: Fix T84757: feedback loop with when modifying vertex group with nodes
Commit: 1e193a0b564c72c006203a1e349269e4bb004d0e Author: Jacques Lucke Date: Sat Jan 16 15:24:22 2021 +0100 Branches: blender-v2.92-release https://developer.blender.org/rB1e193a0b564c72c006203a1e349269e4bb004d0e Fix T84757: feedback loop with when modifying vertex group with nodes The issue was that the mesh shared its vertex weights with the original mesh (to reduce memory consumption). The solution is to make a local copy of the vertex weights in this case. === M source/blender/blenkernel/intern/attribute_access.cc === diff --git a/source/blender/blenkernel/intern/attribute_access.cc b/source/blender/blenkernel/intern/attribute_access.cc index a7939beae90..2e1094364fd 100644 --- a/source/blender/blenkernel/intern/attribute_access.cc +++ b/source/blender/blenkernel/intern/attribute_access.cc @@ -1191,6 +1191,11 @@ WriteAttributePtr MeshComponent::attribute_try_get_for_write(const StringRef att if (mesh_->dvert == nullptr) { BKE_object_defgroup_data_create(&mesh_->id); } +else { + /* Copy the data layer if it is shared with some other mesh. */ + mesh_->dvert = (MDeformVert *)CustomData_duplicate_referenced_layer( + &mesh_->vdata, CD_MDEFORMVERT, mesh_->totvert); +} return std::make_unique( mesh_->dvert, mesh_->totvert, vertex_group_index); } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [fbd9cff2adb] greasepencil-object: GPencil: Filter hidden materials when export to SVG or PDF
Commit: fbd9cff2adb8a90e569fd6e2dc6064c247196745 Author: Antonio Vazquez Date: Sat Jan 16 13:04:09 2021 +0100 Branches: greasepencil-object https://developer.blender.org/rBfbd9cff2adb8a90e569fd6e2dc6064c247196745 GPencil: Filter hidden materials when export to SVG or PDF === M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/include/ED_gpencil.h M source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc M source/blender/io/gpencil/intern/gpencil_io_export_svg.cc === diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c index 9bc6661c2e0..501d0b1ff4d 100644 --- a/source/blender/editors/gpencil/gpencil_utils.c +++ b/source/blender/editors/gpencil/gpencil_utils.c @@ -596,6 +596,21 @@ bool ED_gpencil_stroke_color_use(Object *ob, const bGPDlayer *gpl, const bGPDstr return true; } +/* Check whether given stroke is visible for the current material. */ +bool ED_gpencil_stroke_material_visible(Object *ob, const bGPDlayer *gpl, const bGPDstroke *gps) +{ + /* check if the color is editable */ + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(ob, gps->mat_nr + 1); + + if (gp_style != NULL) { +if (gp_style->flag & GP_MATERIAL_HIDE) { + return false; +} + } + + return true; +} + /* */ /* Space Conversion */ diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h index 19cec4c0f62..41d739dc091 100644 --- a/source/blender/editors/include/ED_gpencil.h +++ b/source/blender/editors/include/ED_gpencil.h @@ -150,6 +150,9 @@ bool ED_gpencil_stroke_can_use(const struct bContext *C, const struct bGPDstroke bool ED_gpencil_stroke_color_use(struct Object *ob, const struct bGPDlayer *gpl, const struct bGPDstroke *gps); +bool ED_gpencil_stroke_material_visible(struct Object *ob, +const struct bGPDlayer *gpl, +const struct bGPDstroke *gps); /* --- Grease Pencil Operators - */ diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc b/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc index 36b5f91a4cc..5e8e076dcf7 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_export_pdf.cc @@ -182,6 +182,9 @@ void GpencilExporterPDF::export_gpencil_layers(void) if (gps->totpoints == 0) { continue; } +if (!ED_gpencil_stroke_material_visible(ob, gpl, gps)) { + continue; +} /* Duplicate the stroke to apply any layer thickness change. */ bGPDstroke *gps_duplicate = BKE_gpencil_stroke_duplicate(gps, true, false); diff --git a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc index 31f4bf1e033..a860b35d693 100644 --- a/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc +++ b/source/blender/io/gpencil/intern/gpencil_io_export_svg.cc @@ -212,6 +212,10 @@ void GpencilExporterSVG::export_gpencil_layers(void) if (gps->totpoints == 0) { continue; } +if (!ED_gpencil_stroke_material_visible(ob, gpl, gps)) { + continue; +} + /* Duplicate the stroke to apply any layer thickness change. */ bGPDstroke *gps_duplicate = BKE_gpencil_stroke_duplicate(gps, true, false); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [79dd9fedb24] master: Fix T84758: Revert "LibOverride: Also consider regular embedded IDs as virtual overrides."
Commit: 79dd9fedb242c34646df1af951b8d810ec30c787 Author: Bastien Montagne Date: Sat Jan 16 10:28:47 2021 +0100 Branches: master https://developer.blender.org/rB79dd9fedb242c34646df1af951b8d810ec30c787 Fix T84758: Revert "LibOverride: Also consider regular embedded IDs as virtual overrides." This made Blender considers all materials to be overridden. This reverts commit 2aa7bc06e7a6adb196e552fca3289ed7b7a18f3f. === M source/blender/makesdna/DNA_ID.h === diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index 840b9e23edf..263ce2203e9 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -515,7 +515,7 @@ typedef enum ID_Type { ((const ID *)(_id))->override_library->reference != NULL) #define ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id) \ - const ID *)(_id))->flag & (LIB_EMBEDDED_DATA_LIB_OVERRIDE | LIB_EMBEDDED_DATA)) != 0) + const ID *)(_id))->flag & LIB_EMBEDDED_DATA_LIB_OVERRIDE) != 0) #define ID_IS_OVERRIDE_LIBRARY(_id) \ (ID_IS_OVERRIDE_LIBRARY_REAL(_id) || ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id)) ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs