[Bf-blender-cvs] [6f311ef57ec] blender2.8: GP: New Fade no active layer overlay option

Antonioya noreply at git.blender.org
Tue Oct 30 17:54:09 CET 2018


Commit: 6f311ef57ec8760d020b6745be87a6770e5c58ce
Author: Antonioya
Date:   Tue Oct 30 17:53:30 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB6f311ef57ec8760d020b6745be87a6770e5c58ce

GP: New Fade no active layer overlay option

This option allows to fade all layers except active one. This can help in very crowded scenes with a lot of layers, to verify you are working in the right one.

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

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/gpencil/gpencil_draw_utils.c
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_gpencil.c
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 8b61737fd5b..6af4f366c87 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -4937,18 +4937,24 @@ class VIEW3D_PT_overlay_gpencil_options(Panel):
         layout.prop(overlay, "use_gpencil_onion_skin", text="Onion Skin")
 
         col = layout.column()
+        row = col.row()
+        row.prop(overlay, "use_gpencil_grid", text="")
+        sub = row.row()
+        sub.active = overlay.use_gpencil_grid
+        sub.prop(overlay, "gpencil_grid_opacity", text="Canvas", slider=True)
+
         row = col.row()
         row.prop(overlay, "use_gpencil_paper", text="")
         sub = row.row()
         sub.active = overlay.use_gpencil_paper
         sub.prop(overlay, "gpencil_paper_opacity", text="Fade 3D Objects", slider=True)
 
-        col = layout.column()
-        row = col.row()
-        row.prop(overlay, "use_gpencil_grid", text="")
-        sub = row.row()
-        sub.active = overlay.use_gpencil_grid
-        sub.prop(overlay, "gpencil_grid_opacity", text="Canvas", slider=True)
+        if context.object.mode == 'GPENCIL_PAINT':
+            row = col.row()
+            row.prop(overlay, "use_gpencil_fade_layers", text="")
+            sub = row.row()
+            sub.active = overlay.use_gpencil_fade_layers
+            sub.prop(overlay, "gpencil_fade_layer", text="Fade Layers", slider=True)
 
         if context.object.mode in {'GPENCIL_EDIT', 'GPENCIL_SCULPT', 'GPENCIL_WEIGHT'}:
             layout.prop(overlay, "use_gpencil_edit_lines", text="Edit Lines")
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 7ae445ab476..75818a30751 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2205,5 +2205,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 				}
 			}
 		}
+
+		/* grease pencil fade layer opacity */
+		if (!DNA_struct_elem_find(fd->filesdna, "View3DOverlay", "float", "gpencil_fade_layer")) {
+			for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
+				for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
+					for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
+						if (sl->spacetype == SPACE_VIEW3D) {
+							View3D *v3d = (View3D *)sl;
+							v3d->overlay.gpencil_fade_layer = 0.5f;
+						}
+					}
+				}
+			}
+		}
+
 	}
 }
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index c980e1791db..e0e69e0de91 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1262,6 +1262,7 @@ void DRW_gpencil_populate_datablock(
 	float opacity;
 	bGPDframe *p = NULL;
 	bGPDframe *gpf = NULL;
+	bGPDlayer *gpl_active = BKE_gpencil_layer_getactive(gpd);
 
 	/* check if playing animation */
 	bool playing = stl->storage->is_playing;
@@ -1301,14 +1302,20 @@ void DRW_gpencil_populate_datablock(
 		if (gpf == NULL)
 			continue;
 
+		opacity = gpl->opacity;
 		/* if pose mode, maybe the overlay to fade geometry is enabled */
 		if ((draw_ctx->obact) && (draw_ctx->object_mode == OB_MODE_POSE) &&
 		    (v3d->overlay.flag & V3D_OVERLAY_BONE_SELECT))
 		{
-			opacity = gpl->opacity * v3d->overlay.bone_select_alpha;
+			opacity = opacity * v3d->overlay.bone_select_alpha;
 		}
-		else {
-			opacity = gpl->opacity;
+		/* fade no active layers */
+		if ((overlay) && (draw_ctx->object_mode == OB_MODE_GPENCIL_PAINT) &&
+			(v3d->gp_flag & V3D_GP_FADE_NOACTIVE_LAYERS) &&
+			(draw_ctx->obact) && (draw_ctx->obact == ob) &&
+			(gpl != gpl_active))
+		{
+			opacity = opacity * v3d->overlay.gpencil_fade_layer;
 		}
 
 		/* create derived array data or expand */
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index d9628dabd74..d5bacd1f4a4 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -196,7 +196,7 @@ typedef struct View3DOverlay {
 	/* grease pencil settings */
 	float gpencil_paper_opacity;
 	float gpencil_grid_opacity;
-	char _pad1[4];
+	float gpencil_fade_layer;
 
 } View3DOverlay;
 
@@ -370,6 +370,7 @@ typedef struct View3D {
 #define V3D_GP_SHOW_EDIT_LINES       (1 << 2)
 #define V3D_GP_SHOW_MULTIEDIT_LINES  (1 << 3)
 #define V3D_GP_SHOW_ONION_SKIN       (1 << 4) /* main switch at view level */
+#define V3D_GP_FADE_NOACTIVE_LAYERS  (1 << 5) /* fade layers not active */
 
 /* View3DShading->light */
 enum {
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 33100c21180..c2aaa550229 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -340,6 +340,10 @@ static void rna_GPencil_active_layer_index_set(PointerRNA *ptr, int value)
 	bGPDlayer *gpl = BLI_findlink(&gpd->layers, value);
 
 	BKE_gpencil_layer_setactive(gpd, gpl);
+
+	/* Now do standard updates... */
+	DEG_id_tag_update(&gpd->id, OB_RECALC_DATA);
+	WM_main_add_notifier(NC_GPENCIL | NA_EDITED, NULL);
 }
 
 static void rna_GPencil_active_layer_index_range(PointerRNA *ptr, int *min, int *max, int *softmin, int *softmax)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 53aad570c2b..112b51dc038 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2959,6 +2959,12 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna)
 		"Display a grid over grease pencil paper");
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
+	prop = RNA_def_property(srna, "use_gpencil_fade_layers", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "gp_flag", V3D_GP_FADE_NOACTIVE_LAYERS);
+	RNA_def_property_ui_text(prop, "Fade Layers",
+		"Toggle fading of Grease Pencil layers except the active one");
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_GPencil_update");
+
 	prop = RNA_def_property(srna, "gpencil_grid_opacity", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "overlay.gpencil_grid_opacity");
 	RNA_def_property_range(prop, 0.1f, 1.0f);
@@ -2974,6 +2980,15 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Opacity", "Paper opacity");
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
+	/* Paper opacity factor */
+	prop = RNA_def_property(srna, "gpencil_fade_layer", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_sdna(prop, NULL, "overlay.gpencil_fade_layer");
+	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_float_default(prop, 0.5f);
+	RNA_def_property_ui_text(prop, "Opacity",
+		"Fade layer opacity for Grease Pencil layers except the active one");
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_GPencil_update");
+
 	/* show edit lines */
 	prop = RNA_def_property(srna, "use_gpencil_edit_lines", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "gp_flag", V3D_GP_SHOW_EDIT_LINES);



More information about the Bf-blender-cvs mailing list