[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48933] trunk/blender: falloff option for mask layers

Campbell Barton ideasman42 at gmail.com
Sun Jul 15 05:11:12 CEST 2012


Revision: 48933
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48933
Author:   campbellbarton
Date:     2012-07-15 03:11:07 +0000 (Sun, 15 Jul 2012)
Log Message:
-----------
falloff option for mask layers

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_clip.py
    trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
    trunk/blender/source/blender/makesdna/DNA_mask_types.h
    trunk/blender/source/blender/makesrna/intern/rna_mask.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-07-15 00:29:56 UTC (rev 48932)
+++ trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-07-15 03:11:07 UTC (rev 48933)
@@ -707,6 +707,7 @@
             row.prop(active_layer, "invert", text="", icon='IMAGE_ALPHA')
 
             layout.prop(active_layer, "blend")
+            layout.prop(active_layer, "falloff")
 
 
 class CLIP_PT_active_mask_spline(Panel):

Modified: trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-15 00:29:56 UTC (rev 48932)
+++ trunk/blender/source/blender/blenkernel/intern/mask_rasterize.c	2012-07-15 03:11:07 UTC (rev 48933)
@@ -32,6 +32,7 @@
 
 #include "DNA_vec_types.h"
 #include "DNA_mask_types.h"
+#include "DNA_scene_types.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_scanfill.h"
@@ -93,6 +94,7 @@
 	float  alpha;
 	char   blend;
 	char   blend_flag;
+	char   falloff;
 
 } MaskRasterLayer;
 
@@ -832,6 +834,7 @@
 				layer->alpha = masklay->alpha;
 				layer->blend = masklay->blend;
 				layer->blend_flag = masklay->blend_flag;
+				layer->falloff = masklay->falloff;
 			}
 
 			/* printf("tris %d, feather tris %d\n", sf_tri_tot, tot_feather_quads); */
@@ -976,11 +979,29 @@
 		float value_layer;
 
 		if (BLI_in_rctf_v(&layer->bounds, xy)) {
-			const float dist = 1.0f - layer_bucket_depth_from_xy(layer, xy);
-			const float dist_ease = (3.0f * dist * dist - 2.0f * dist * dist * dist);
+			float val = 1.0f - layer_bucket_depth_from_xy(layer, xy);
 
-			/* apply alpha */
-			value_layer = dist_ease * layer->alpha;
+			switch (layer->falloff) {
+				case PROP_SMOOTH:
+					/* ease - gives less hard lines for dilate/erode feather */
+					val = (3.0f * val * val - 2.0f * val * val * val);
+					break;
+				case PROP_SPHERE:
+					val = sqrtf(2.0f * val - val * val);
+					break;
+				case PROP_ROOT:
+					val = sqrtf(val);
+					break;
+				case PROP_SHARP:
+					val = val * val;
+					break;
+				case PROP_LIN:
+				default:
+					/* nothing */
+					break;
+			}
+
+			value_layer = val * layer->alpha;
 		}
 		else {
 			value_layer = 0.0f;

Modified: trunk/blender/source/blender/makesdna/DNA_mask_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_mask_types.h	2012-07-15 00:29:56 UTC (rev 48932)
+++ trunk/blender/source/blender/makesdna/DNA_mask_types.h	2012-07-15 03:11:07 UTC (rev 48933)
@@ -127,6 +127,8 @@
 	float  alpha;
 	char   blend;
 	char   blend_flag;
+	char   falloff;
+	char   pad[7];
 
 	char   flag;             /* for animation */
 	char   restrictflag;     /* matching 'Object' flag of the same name - eventually use in the outliner  */

Modified: trunk/blender/source/blender/makesrna/intern/rna_mask.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_mask.c	2012-07-15 00:29:56 UTC (rev 48932)
+++ trunk/blender/source/blender/makesrna/intern/rna_mask.c	2012-07-15 03:11:07 UTC (rev 48933)
@@ -35,6 +35,7 @@
 #include "BKE_tracking.h"
 
 #include "RNA_define.h"
+#include "RNA_enum_types.h"
 
 #include "rna_internal.h"
 
@@ -653,6 +654,12 @@
 	RNA_def_property_ui_text(prop, "Restrict View", "Invert the mask black/white");
 	RNA_def_property_update(prop, NC_MASK | NA_EDITED, NULL);
 
+	prop = RNA_def_property(srna, "falloff", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "falloff");
+	RNA_def_property_enum_items(prop, proportional_falloff_curve_only_items);
+	RNA_def_property_ui_text(prop, "Falloff", "Falloff type the feather");
+	RNA_def_property_update(prop, NC_MASK | NA_EDITED, NULL);
+
 }
 
 static void rna_def_masklayers(BlenderRNA *brna, PropertyRNA *cprop)




More information about the Bf-blender-cvs mailing list