[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23330] trunk/blender: - jitter for painting (image and projection painting, others can be added)

Campbell Barton ideasman42 at gmail.com
Fri Sep 18 13:25:53 CEST 2009


Revision: 23330
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23330
Author:   campbellbarton
Date:     2009-09-18 13:25:52 +0200 (Fri, 18 Sep 2009)

Log Message:
-----------
- jitter for painting (image and projection painting, others can be added)
- remove falloff setting now the curve is used.
- bugfix for airbrush & tablet, with no movement it would assume 1.0 pressure.
- rna, use the use_* prefix for brush options.

Modified Paths:
--------------
    trunk/blender/release/ui/space_image.py
    trunk/blender/release/ui/space_view3d.py
    trunk/blender/release/ui/space_view3d_toolbar.py
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/makesdna/DNA_brush_types.h
    trunk/blender/source/blender/makesrna/intern/rna_brush.c

Modified: trunk/blender/release/ui/space_image.py
===================================================================
--- trunk/blender/release/ui/space_image.py	2009-09-18 07:44:52 UTC (rev 23329)
+++ trunk/blender/release/ui/space_image.py	2009-09-18 11:25:52 UTC (rev 23330)
@@ -412,7 +412,7 @@
 		row.template_list(settings, "brushes", settings, "active_brush_index", rows=2)
 			
 		col.template_ID(settings, "brush", new="brush.add")
-                
+
 		row = layout.row(align=True)
 		row.item_enumR(settings, "tool", 'DRAW')
 		row.item_enumR(settings, "tool", 'SOFTEN')
@@ -424,12 +424,16 @@
 
 		row = col.row(align=True)
 		row.itemR(brush, "size", slider=True)
-		row.itemR(brush, "size_pressure", toggle=True, text="")
+		row.itemR(brush, "use_size_pressure", toggle=True, text="")
 		
 		row = col.row(align=True)
 		row.itemR(brush, "strength", slider=True)
-		row.itemR(brush, "strength_pressure", toggle=True, text="")
-		
+		row.itemR(brush, "use_strength_pressure", toggle=True, text="")
+
+		row = col.row(align=True)
+		row.itemR(brush, "jitter", slider=True)
+		row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
+
 		col.itemR(brush, "blend", text="Blend")
 
 class IMAGE_PT_paint_stroke(bpy.types.Panel):
@@ -448,16 +452,16 @@
 		settings = context.tool_settings.image_paint
 		brush = settings.brush
 
-		layout.itemR(brush, "airbrush")
+		layout.itemR(brush, "use_airbrush")
 		col = layout.column()
-		col.active = brush.airbrush
+		col.active = brush.use_airbrush
 		col.itemR(brush, "rate", slider=True)
 
-		layout.itemR(brush, "space")
+		layout.itemR(brush, "use_space")
 		row = layout.row(align=True)
-		row.active = brush.space
+		row.active = brush.use_space
 		row.itemR(brush, "spacing", text="Distance", slider=True)
-		row.itemR(brush, "spacing_pressure", toggle=True, text="")	
+		row.itemR(brush, "use_spacing_pressure", toggle=True, text="")	
 
 class IMAGE_PT_paint_curve(bpy.types.Panel):
 	__space_type__ = 'IMAGE_EDITOR'

Modified: trunk/blender/release/ui/space_view3d.py
===================================================================
--- trunk/blender/release/ui/space_view3d.py	2009-09-18 07:44:52 UTC (rev 23329)
+++ trunk/blender/release/ui/space_view3d.py	2009-09-18 11:25:52 UTC (rev 23330)
@@ -539,16 +539,16 @@
 		layout.itemS()
 		
 		if brush.sculpt_tool != 'GRAB':
-			layout.itemR(brush, "airbrush")
+			layout.itemR(brush, "use_airbrush")
 			
 			if brush.sculpt_tool != 'LAYER':
-				layout.itemR(brush, "anchored")
+				layout.itemR(brush, "use_anchor")
 			
 			if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
 				layout.itemR(brush, "flip_direction")
 
 			if brush.sculpt_tool == 'LAYER':
-				layout.itemR(brush, "persistent")
+				layout.itemR(brush, "use_persistent")
 				layout.itemO("sculpt.set_persistent_base")
 
 # ********** Particle menu **********	

Modified: trunk/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/ui/space_view3d_toolbar.py	2009-09-18 07:44:52 UTC (rev 23329)
+++ trunk/blender/release/ui/space_view3d_toolbar.py	2009-09-18 11:25:52 UTC (rev 23330)
@@ -387,13 +387,18 @@
 			
 			row = col.row(align=True)
 			row.itemR(brush, "size", slider=True)
-			row.itemR(brush, "size_pressure", toggle=True, text="")
+			row.itemR(brush, "use_size_pressure", toggle=True, text="")
 			
 			if brush.sculpt_tool != 'GRAB':
 				row = col.row(align=True)
 				row.itemR(brush, "strength", slider=True)
-				row.itemR(brush, "strength_pressure", text="")
-			
+				row.itemR(brush, "use_strength_pressure", text="")
+				
+				''' # XXX - TODO
+				row = col.row(align=True)
+				row.itemR(brush, "jitter", slider=True)
+				row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
+				'''
 				col = layout.column()
 
 				if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'):
@@ -419,12 +424,16 @@
 
 			row = col.row(align=True)
 			row.itemR(brush, "size", slider=True)
-			row.itemR(brush, "size_pressure", toggle=True, text="")
+			row.itemR(brush, "use_size_pressure", toggle=True, text="")
 			
 			row = col.row(align=True)
 			row.itemR(brush, "strength", slider=True)
-			row.itemR(brush, "strength_pressure", toggle=True, text="")
+			row.itemR(brush, "use_strength_pressure", toggle=True, text="")
 			
+			row = col.row(align=True)
+			row.itemR(brush, "jitter", slider=True)
+			row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
+			
 			col.itemR(brush, "blend", text="Blend")
 		
 		# Weight Paint Mode #
@@ -435,11 +444,15 @@
 			col = layout.column()
 			row = col.row(align=True)
 			row.itemR(brush, "size", slider=True)
-			row.itemR(brush, "size_pressure", toggle=True, text="")
+			row.itemR(brush, "use_size_pressure", toggle=True, text="")
 			
 			row = col.row(align=True)
 			row.itemR(brush, "strength", slider=True)
-			row.itemR(brush, "strength_pressure", toggle=True, text="")
+			row.itemR(brush, "use_strength_pressure", toggle=True, text="")
+			
+			row = col.row(align=True)
+			row.itemR(brush, "jitter", slider=True)
+			row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
 		
 		# Vertex Paint Mode #
 		
@@ -449,11 +462,17 @@
 			
 			row = col.row(align=True)
 			row.itemR(brush, "size", slider=True)
-			row.itemR(brush, "size_pressure", toggle=True, text="")
+			row.itemR(brush, "use_size_pressure", toggle=True, text="")
 			
 			row = col.row(align=True)
 			row.itemR(brush, "strength", slider=True)
-			row.itemR(brush, "strength_pressure", toggle=True, text="")
+			row.itemR(brush, "use_strength_pressure", toggle=True, text="")
+			
+			''' # XXX - TODO
+			row = col.row(align=True)
+			row.itemR(brush, "jitter", slider=True)
+			row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
+			'''
 
 class VIEW3D_PT_tools_brush_stroke(PaintPanel):
 	__label__ = "Stroke"
@@ -475,27 +494,27 @@
 
 		if context.sculpt_object:
 			if brush.sculpt_tool != 'LAYER':
-				layout.itemR(brush, "anchored")
-			layout.itemR(brush, "rake")
+				layout.itemR(brush, "use_anchor")
+			layout.itemR(brush, "use_rake")
 
-		layout.itemR(brush, "airbrush")
+		layout.itemR(brush, "use_airbrush")
 		col = layout.column()
-		col.active = brush.airbrush
+		col.active = brush.use_airbrush
 		col.itemR(brush, "rate", slider=True)
 
 		if not texture_paint:
-			layout.itemR(brush, "smooth_stroke")
+			layout.itemR(brush, "use_smooth_stroke")
 			col = layout.column()
-			col.active = brush.smooth_stroke
+			col.active = brush.use_smooth_stroke
 			col.itemR(brush, "smooth_stroke_radius", text="Radius", slider=True)
 			col.itemR(brush, "smooth_stroke_factor", text="Factor", slider=True)
 
-		layout.itemR(brush, "space")
+		layout.itemR(brush, "use_space")
 		row = layout.row(align=True)
-		row.active = brush.space
+		row.active = brush.use_space
 		row.itemR(brush, "spacing", text="Distance", slider=True)
 		if texture_paint:
-			row.itemR(brush, "spacing_pressure", toggle=True, text="")	
+			row.itemR(brush, "use_spacing_pressure", toggle=True, text="")	
 
 class VIEW3D_PT_tools_brush_curve(PaintPanel):
 	__label__ = "Curve"

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2009-09-18 07:44:52 UTC (rev 23329)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2009-09-18 11:25:52 UTC (rev 23330)
@@ -44,6 +44,7 @@
 
 #include "BLI_arithb.h"
 #include "BLI_blenlib.h"
+#include "BLI_rand.h"
 
 #include "BKE_brush.h"
 #include "BKE_colortools.h"
@@ -78,7 +79,7 @@
 	brush->smooth_stroke_radius= 75;
 	brush->smooth_stroke_factor= 0.9;
 	brush->rate= 0.1f;
-	brush->innerradius= 0.5f;
+	brush->jitter= 0.0f;
 	brush->clone.alpha= 0.5;
 	brush->sculpt_tool = SCULPT_TOOL_DRAW;
 
@@ -513,7 +514,7 @@
 
 	int lastsize;
 	float lastalpha;
-	float lastinnerradius;
+	float lastjitter;
 
 	ImBuf *ibuf;
 	ImBuf *texibuf;
@@ -538,7 +539,7 @@
 
 	float startsize;
 	float startalpha;
-	float startinnerradius;
+	float startjitter;
 	float startspacing;
 
 	BrushPainterCache cache;
@@ -554,7 +555,7 @@
 
 	painter->startsize = brush->size;
 	painter->startalpha = brush->alpha;
-	painter->startinnerradius = brush->innerradius;
+	painter->startjitter = brush->jitter;
 	painter->startspacing = brush->spacing;
 
 	return painter;
@@ -588,7 +589,7 @@
 
 	brush->size = painter->startsize;
 	brush->alpha = painter->startalpha;
-	brush->innerradius = painter->startinnerradius;
+	brush->jitter = painter->startjitter;
 	brush->spacing = painter->startspacing;
 
 	if (painter->cache.ibuf) IMB_freeImBuf(painter->cache.ibuf);
@@ -744,7 +745,7 @@
 	short flt;
 
 	if ((brush->size != cache->lastsize) || (brush->alpha != cache->lastalpha)
-	    || (brush->innerradius != cache->lastinnerradius)) {
+	    || (brush->jitter != cache->lastjitter)) {
 		if (cache->ibuf) {
 			IMB_freeImBuf(cache->ibuf);
 			cache->ibuf= NULL;
@@ -769,7 +770,7 @@
 
 		cache->lastsize= brush->size;
 		cache->lastalpha= brush->alpha;
-		cache->lastinnerradius= brush->innerradius;
+		cache->lastjitter= brush->jitter;
 	}
 	else if ((brush->flag & BRUSH_FIXED_TEX) && mtex && mtex->tex) {
 		int dx = (int)painter->lastpaintpos[0] - (int)pos[0];
@@ -791,20 +792,34 @@
 		brush->alpha = MAX2(0.0, painter->startalpha*pressure);
 	if (brush->flag & BRUSH_SIZE_PRESSURE)
 		brush->size = MAX2(1.0, painter->startsize*pressure);
-	if (brush->flag & BRUSH_RAD_PRESSURE)
-		brush->innerradius = MAX2(0.0, painter->startinnerradius*pressure);
+	if (brush->flag & BRUSH_JITTER_PRESSURE)
+		brush->jitter = MAX2(0.0, painter->startjitter*pressure);
 	if (brush->flag & BRUSH_SPACING_PRESSURE)
 		brush->spacing = MAX2(1.0, painter->startspacing*(1.5f-pressure));
 }
 
+static void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos)
+{
+	if(brush->jitter){
+		jitterpos[0] = pos[0] + ((BLI_frand()-0.5f) * brush->size * brush->jitter * 2);
+		jitterpos[1] = pos[1] + ((BLI_frand()-0.5f) * brush->size * brush->jitter * 2);
+	}
+	else {
+		VECCOPY2D(jitterpos, pos);
+	}
+}
+
 int brush_painter_paint(BrushPainter *painter, BrushFunc func, float *pos, double time, float pressure, void *user)
 {
 	Brush *brush= painter->brush;
 	int totpaintops= 0;
 
-	if (pressure == 0.0f)
-		pressure = 1.0f;	/* zero pressure == not using tablet */
-
+	if (pressure == 0.0f) {
+		if(painter->lastpressure) // XXX - hack, operator misses
+			pressure= painter->lastpressure;
+		else

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list