[Bf-blender-cvs] [432fa09d6f9] temp-sculpt-cavity-mask: temp-sculpt-cavity-mask: Make requested changes

Joseph Eagar noreply at git.blender.org
Fri Sep 23 03:38:45 CEST 2022


Commit: 432fa09d6f94645e8cf4c16ce46226c77f403519
Author: Joseph Eagar
Date:   Thu Sep 22 17:00:12 2022 -0700
Branches: temp-sculpt-cavity-mask
https://developer.blender.org/rB432fa09d6f94645e8cf4c16ce46226c77f403519

temp-sculpt-cavity-mask: Make requested changes

* Brush now has its own cavity mask settings
 - I modified the UI a bit to make it clearer when
   a brush automasking setting is overriding a scene one.

* Merge remote-tracking branch 'origin' into temp-sculpt-cavity-mask

===================================================================



===================================================================

diff --cc release/scripts/addons
index 7a8502871c3,67f1fbca148..3908254f093
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 7a8502871c34db0343cc7de52d6b49b15a84238a
 -Subproject commit 67f1fbca1482d9d9362a4001332e785c3fd5d230
++Subproject commit 3908254f0938a3c4c29189a455c8e356771e6ce1
diff --cc release/scripts/startup/bl_ui/properties_paint_common.py
index 953d8c33fdb,9b1cf11f6e7..a68b3e208fc
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@@ -943,21 -943,6 +943,19 @@@ def brush_settings_advanced(layout, con
          # boundary edges/face sets automasking
          col.prop(brush, "use_automasking_boundary_edges", text="Mesh Boundary")
          col.prop(brush, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
 +        col.prop(brush, "use_automasking_cavity", text="Cavity")
 +        col.prop(brush, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
 +
 +        col.separator()
 +
 +        if brush.use_automasking_cavity or brush.use_automasking_cavity_inverted:
-             sculpt = context.tool_settings.sculpt
++            col.prop(brush, "automasking_cavity_factor", text="Cavity Factor")
++            col.prop(brush, "automasking_cavity_blur_steps", text="Cavity Blur")
++            col.prop(brush, "use_automasking_custom_cavity_curve", text="Use Curve")
 +
-             col.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor")
-             col.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur")
-             col.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve")
- 
-             if sculpt.use_automasking_custom_cavity_curve:
-                 col.template_curve_mapping(sculpt, "automasking_cavity_curve")
++            if brush.use_automasking_custom_cavity_curve:
++                col.template_curve_mapping(brush, "automasking_cavity_curve")
 +
          col.prop(brush, "automasking_boundary_edges_propagation_steps")
  
          layout.separator()
diff --cc release/scripts/startup/bl_ui/space_view3d.py
index 5f3ea41d850,a687f3c937f..2311532535c
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@@ -5491,12 -5489,10 +5490,22 @@@ class VIEW3D_MT_sculpt_automasking_pie(
          tool_settings = context.tool_settings
          sculpt = tool_settings.sculpt
  
--        pie.prop(sculpt, "use_automasking_topology", text="Topology")
--        pie.prop(sculpt, "use_automasking_face_sets", text="Face Sets")
--        pie.prop(sculpt, "use_automasking_boundary_edges", text="Mesh Boundary")
--        pie.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
-         pie.prop(sculpt, "use_automasking_cavity", text="Cavity")
-         pie.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
++        def doprop(key, text):
++            if sculpt.brush and getattr(sculpt.brush, key):
++                pie.prop(sculpt, key, text=text + "(overridden by brush)")
++            else:
++                pie.prop(sculpt, key, text=text)
++
++        doprop("use_automasking_topology", "Topology")
++        doprop("use_automasking_topology", "Topology")
++        doprop("use_automasking_face_sets", "Face Sets")
++        doprop("use_automasking_boundary_edges", "Mesh Boundary")
++        doprop("use_automasking_boundary_face_sets", "Face Sets Boundary")
++
++        if sculpt.brush and (sculpt.brush.use_automasking_cavity or sculpt.brush.use_automasking_cavity_inverted):
++            pie.prop(sculpt, "use_automasking_cavity", text="Cavity (overridden by brush)")
++        else:
++            pie.prop(sculpt, "use_automasking_cavity", text="Cavity")
  
  
  class VIEW3D_MT_sculpt_face_sets_edit_pie(Menu):
diff --cc release/scripts/startup/bl_ui/space_view3d_toolbar.py
index aa121112eb6,ecc72e1bbb8..8ff03ae5a84
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@@ -966,25 -967,10 +966,40 @@@ class VIEW3D_PT_sculpt_options(Panel, V
          col.separator()
  
          col = layout.column(heading="Auto-Masking", align=True)
--        col.prop(sculpt, "use_automasking_topology", text="Topology")
--        col.prop(sculpt, "use_automasking_face_sets", text="Face Sets")
--        col.prop(sculpt, "use_automasking_boundary_edges", text="Mesh Boundary")
--        col.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary")
-         col.prop(sculpt, "use_automasking_cavity", text="Cavity")
-         col.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (Inverted)")
++
++        def doprop(key, text):
++            col2 = col.column()
++            col2.enabled = not sculpt.brush or not getattr(sculpt.brush, key)
++
++            if not col2.enabled:
++                text += " - overridden by brush"
++            col2.prop(sculpt, key, text=text)
++
++        doprop("use_automasking_topology", "Topology")
++        doprop("use_automasking_face_sets", "Face Sets")
++        doprop("use_automasking_boundary_edges", "Mesh Boundary")
++        doprop("use_automasking_boundary_face_sets", "Face Sets Boundary")
++        doprop("use_automasking_cavity", "Cavity")
++        doprop("use_automasking_cavity_inverted", "Cavity (Inverted)")
 +
 +        col.separator()
 +
 +        if sculpt.use_automasking_cavity or sculpt.use_automasking_cavity_inverted:
-             col.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor")
-             col.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur")
++            col2 = col.column()
++            col2.enabled = not (sculpt.brush and sculpt.brush.use_automasking_cavity or sculpt.brush.use_automasking_cavity_inverted)
++
++            if not col2.enabled:
++                col2.label(text="Overridden by brush")
++
++            col2.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor")
++            col2.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur")
 +            
-             col.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve")
++            col2.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve")
 +
 +            if sculpt.use_automasking_custom_cavity_curve:
-                 col.template_curve_mapping(sculpt, "automasking_cavity_curve")
++                col2.template_curve_mapping(sculpt, "automasking_cavity_curve")
 +
-         col.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps")
++        col2.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps")
  
  
  class VIEW3D_PT_sculpt_options_gravity(Panel, View3DPaintPanel):
diff --cc source/blender/blenkernel/BKE_paint.h
index 7612c6ca7ca,ed0969a6306..c41f5f68c17
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@@ -781,7 -900,6 +909,8 @@@ bool BKE_paint_canvas_image_get(struct 
                                  struct ImageUser **r_image_user);
  int BKE_paint_canvas_uvmap_layer_index_get(const struct PaintModeSettings *settings,
                                             struct Object *ob);
 +void BKE_sculpt_check_cavity_curves(struct Sculpt *sd);
++struct CurveMapping *BKE_sculpt_default_cavity_curve();
  
  #ifdef __cplusplus
  }
diff --cc source/blender/blenkernel/intern/brush.cc
index 597b5ea17fa,a998fc0a75f..7ab8088823b
--- a/source/blender/blenkernel/intern/brush.cc
+++ b/source/blender/blenkernel/intern/brush.cc
@@@ -72,6 -72,6 +72,8 @@@ static void brush_copy_data(Main *UNUSE
    }
  
    brush_dst->curve = BKE_curvemapping_copy(brush_src->curve);
++  brush_dst->automasking_cavity_curve = BKE_curvemapping_copy(brush_src->automasking_cavity_curve);
++
    if (brush_src->gpencil_settings != nullptr) {
      brush_dst->gpencil_settings = MEM_cnew(__func__, *(brush_src->gpencil_settings));
      brush_dst->gpencil_settings->curve_sensitivity = BKE_curvemapping_copy(
@@@ -109,6 -109,6 +111,7 @@@ static void brush_free_data(ID *id
      IMB_freeImBuf(brush->icon_imbuf);
    }
    BKE_curvemapping_free(brush->curve);
++  BKE_curvemapping_free(brush->automasking_cavity_curve);
  
    if (brush->gpencil_settings != nullptr) {
      BKE_curvemapping_free(brush->gpencil_settings->curve_sensitivity);
@@@ -212,6 -212,6 +215,10 @@@ static void brush_blend_write(BlendWrit
      BKE_curvemapping_blend_write(writer, brush->curve);
    }
  
++  if (brush->automasking_cavity_curve) {
++    BKE_curvemapping_blend_write(writer, brush->automasking_cavity_curve);
++  }
++
    if (brush->gpencil_settings) {
      BLO_write_struct(writer, BrushGpencilSettings, brush->gpencil_settings);
  
@@@ -267,6 -267,6 +274,14 @@@ static void brush_blend_read_data(Blend
      BKE_brush_curve_preset(brush, CURVE_PRESET_SHARP);
    }
  
++  BLO_read_data_address(reader, &brush->automasking_cavity_curve);
++  if (brush->automasking_cavity_curve) {
++    BKE_curvemapping_blend_read(reader, brush->automasking_cavity_curve);
++  }
++  else {
++    brush->automasking_cavity_curve = BKE_sculpt_default_cavity_curve();
++  }
++
    /* grease pencil */
    BLO_read_data_address(reader, &brush->gpencil_settings);
    if (brush->gpencil_settings != nullptr) {
diff --cc source/blender/blenkernel/intern/scene.cc
index 510b4cff194,9c0e5a5534e..2c9bedd6cc2
--- a/source/blender/blenkernel/intern/scene.cc
+++ b/source/blender/blenkernel/intern/scene.cc
@@@ -114,32 -114,6 +114,32 @@@
  
  #include "bmesh.h"
  
- static CurveMapping *sculpt_init_cavity_curves()
++CurveMapping *BKE_sculpt_default_cavity_curve()
 +
 +{
 +  CurveMapping *cumap = BKE_curvemapping_add(1, 0, 0, 1, 1);
 +
 +  cumap->flag &= ~CUMA_EXTEND_EXTRAPOLATE;
 +  cumap->preset = CURVE_PRESET_LINE;
 +
 +  BKE_curvemap_reset(cumap->cm, &cumap->clipr, cumap->preset, CURVEMAP_SLOPE_POSITIVE);
 +  BKE_curvemapping_changed(cumap, false);
 +  BKE_curvemapping_init(cumap);
 +
 +  return cumap;
 +}
 +
 +void BKE_sculpt_check_cavity_curves(Sculpt *sd)
 +{
 +  if (!sd->automasking_cavity_curve) {
-     sd->automasking_cavity_curve = sculpt_init_cavity_curves();
++    sd->automasking_cavity_curve = BKE_sculpt_de

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list