[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28994] branches/soc-2010-jwilkins/source/ blender: Tweaking Clay and Contrast Brush

Jason Wilkins Jason.A.Wilkins at gmail.com
Wed May 26 06:46:26 CEST 2010


Revision: 28994
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28994
Author:   jwilkins
Date:     2010-05-26 06:46:25 +0200 (Wed, 26 May 2010)

Log Message:
-----------
Tweaking Clay and Contrast Brush

Modified Paths:
--------------
    branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c
    branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h
    branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c

Modified: branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c	2010-05-26 02:00:55 UTC (rev 28993)
+++ branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c	2010-05-26 04:46:25 UTC (rev 28994)
@@ -542,36 +542,42 @@
    special multiplier found experimentally to scale the strength factor. */
 static float brush_strength(Sculpt *sd, StrokeCache *cache)
 {
-	Brush *brush = paint_brush(&sd->paint);
-	/* Primary strength input; square it to make lower values more sensitive */
-	float alpha = brush->alpha * brush->alpha;
+    Brush *brush = paint_brush(&sd->paint);
 
-	float dir= brush->flag & BRUSH_DIR_IN ? -1 : 1;
-	float pressure= 1;
-	float flip= cache->flip ? -1:1;
+    /* Primary strength input; square it to make lower values more sensitive */
+    float alpha = brush->alpha * brush->alpha;
 
-	if(brush->flag & BRUSH_ALPHA_PRESSURE)
-		pressure *= cache->pressure;
-	
-	switch(brush->sculpt_tool){
-	case SCULPT_TOOL_DRAW:
-	case SCULPT_TOOL_INFLATE:
-	case SCULPT_TOOL_CLAY:
-	case SCULPT_TOOL_FLATTEN:
-	case SCULPT_TOOL_LAYER:
+    float dir      = brush->flag & BRUSH_DIR_IN ? -1 : 1;
+    float pressure = 1;
+    float flip     = cache->flip ? -1:1;
+
+    if(brush->flag & BRUSH_ALPHA_PRESSURE) pressure *= cache->pressure;
+
+    switch(brush->sculpt_tool){
+        case SCULPT_TOOL_DRAW:
+        case SCULPT_TOOL_INFLATE:
+        case SCULPT_TOOL_CLAY:
+            return alpha * dir * pressure * flip;
+
+        case SCULPT_TOOL_FLATTEN:
+        case SCULPT_TOOL_LAYER:
         case SCULPT_TOOL_FILL:
         case SCULPT_TOOL_SCRAPE:
         case SCULPT_TOOL_CONTRAST:
-		return alpha * dir * pressure * flip; /*XXX: not sure why? was multiplied by G.vd->grid */;
-	case SCULPT_TOOL_SMOOTH:
-		return alpha * 4 * pressure;
-	case SCULPT_TOOL_PINCH:
-		return alpha / 2 * dir * pressure * flip;
-	case SCULPT_TOOL_GRAB:
-		return 1;
-	default:
-		return 0;
-	}
+            return alpha * pressure * flip;
+
+        case SCULPT_TOOL_SMOOTH:
+            return alpha * 4 * pressure;
+
+        case SCULPT_TOOL_PINCH:
+            return alpha / 2 * dir * pressure * flip;
+
+        case SCULPT_TOOL_GRAB:
+            return 1;
+
+        default:
+            return 0;
+    }
 }
 
 /* Uses symm to selectively flip any axis of a coordinate. */
@@ -1351,6 +1357,7 @@
     Brush *brush = paint_brush(&sd->paint);
 
     float bstrength = ss->cache->bstrength;
+    float displace;
 
     float area_normal[3];
     float center[3];
@@ -1365,8 +1372,12 @@
 
     calc_flatten_center(sd, ss, nodes, totnode, center);
 
+    displace = MAX_BRUSH_PIXEL_RADIUS/2.0f;
+
+    if (displace > ss->cache->radius/2.0f) displace = ss->cache->radius/2.0f;
+
     mul_v3_v3v3(temp, area_normal, ss->cache->scale);
-    mul_v3_fl(temp, ss->cache->radius * bstrength);
+    mul_v3_fl(temp, displace * bstrength);
     add_v3_v3(center, temp);
 
     flip = bstrength < 0;
@@ -1387,7 +1398,7 @@
                     float intr[3];
                     float val[3];
 
-                    const float fade = bstrength * tex_strength(ss, brush, vd.co, test.dist);
+                    const float fade = tex_strength(ss, brush, vd.co, test.dist);
 
                     point_plane_project(intr, vd.co, area_normal, center);
                     sub_v3_v3v3(val, intr, vd.co);

Modified: branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h
===================================================================
--- branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h	2010-05-26 02:00:55 UTC (rev 28993)
+++ branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h	2010-05-26 04:46:25 UTC (rev 28994)
@@ -107,5 +107,7 @@
 #define PAINT_TOOL_SMEAR	2
 #define PAINT_TOOL_CLONE	3
 
+#define MAX_BRUSH_PIXEL_RADIUS 200
+
 #endif
 

Modified: branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c	2010-05-26 02:00:55 UTC (rev 28993)
+++ branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c	2010-05-26 04:46:25 UTC (rev 28994)
@@ -166,7 +166,7 @@
 	
 	/* number values */
 	prop= RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
-	RNA_def_property_range(prop, 1, 200);
+	RNA_def_property_range(prop, 1, MAX_BRUSH_PIXEL_RADIUS);
 	RNA_def_property_ui_text(prop, "Size", "Diameter of the brush");
 	RNA_def_property_update(prop, 0, "rna_Brush_update");
 	





More information about the Bf-blender-cvs mailing list