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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to