[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