[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31052] branches/soc-2010-jwilkins: == Gravity Tool ==
Jason Wilkins
Jason.A.Wilkins at gmail.com
Thu Aug 5 02:06:12 CEST 2010
Revision: 31052
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31052
Author: jwilkins
Date: 2010-08-05 02:06:05 +0200 (Thu, 05 Aug 2010)
Log Message:
-----------
== Gravity Tool ==
preliminary gravity tool
Modified Paths:
--------------
branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py
branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_stroke.c
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/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py 2010-08-04 19:35:27 UTC (rev 31051)
+++ branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py 2010-08-05 00:06:05 UTC (rev 31052)
@@ -651,7 +651,7 @@
col.separator()
col.row().prop(brush, "direction", expand=True)
- if brush.sculpt_tool in ('DRAW', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY', 'CLAY_STRIP'):
+ if brush.sculpt_tool in ('DRAW', 'GRAVITY', 'CREASE', 'BLOB', 'INFLATE', 'LAYER', 'CLAY', 'CLAY_STRIP'):
col.separator()
col.prop(brush, "use_accumulate")
@@ -1080,7 +1080,7 @@
col = layout.column();
if context.sculpt_object and context.tool_settings.sculpt:
- if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'CLAY_STRIPS', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'):
+ if brush.sculpt_tool in ('DRAW', 'GRAVITY', 'INFLATE', 'CLAY', 'CLAY_STRIPS', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'):
col.prop(brush, "add_col", text="Add Color")
col.prop(brush, "sub_col", text="Subtract Color")
else:
Modified: branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_stroke.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_stroke.c 2010-08-04 19:35:27 UTC (rev 31051)
+++ branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_stroke.c 2010-08-05 00:06:05 UTC (rev 31052)
@@ -1301,7 +1301,7 @@
sign = flip * ((brush->flag & BRUSH_DIR_IN)? -1 : 1);
- if (sign < 0 && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH))
+ if (sign < 0 && ELEM5(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_GRAVITY, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH))
col = brush->sub_col;
else
col = brush->add_col;
Modified: branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c 2010-08-04 19:35:27 UTC (rev 31051)
+++ branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/sculpt.c 2010-08-05 00:06:05 UTC (rev 31052)
@@ -658,6 +658,7 @@
case SCULPT_TOOL_CLAY:
case SCULPT_TOOL_CLAY_STRIPS:
case SCULPT_TOOL_DRAW:
+ case SCULPT_TOOL_GRAVITY:
case SCULPT_TOOL_LAYER:
return alpha * flip * pressure * overlap * feather;
@@ -1411,6 +1412,60 @@
}
}
+static void do_gravity_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
+{
+ Brush *brush = paint_brush(&sd->paint);
+ float offset[3], an[3];
+ float bstrength= ss->cache->bstrength;
+ int n;
+ float gravity[3];
+
+ gravity[0]= gravity[1]= 0;
+ gravity[2]= -ss->cache->radius / 2;
+
+ calc_sculpt_normal(sd, ss, an, nodes, totnode, brush->sculpt_plane_range);
+
+ set_brush_local_mat(sd, ss, brush, NULL, 0, an);
+
+ set_adaptive_space_factor(sd, ss, NULL, 0, an);
+
+ /* offset with as much as possible factored in already */
+ mul_v3_v3fl(offset, gravity, ss->cache->radius);
+ mul_v3_v3(offset, ss->cache->scale);
+ mul_v3_fl(offset, bstrength);
+
+ /* threaded loop over nodes */
+ #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP)
+ for(n=0; n<totnode; n++) {
+ PBVHVertexIter vd;
+ SculptBrushTest test;
+ float (*proxy)[3];
+ short (*origno)[3];
+ SculptUndoNode *unode;
+
+ unode= sculpt_undo_push_node(ss, nodes[n]);
+ origno= unode->no;
+
+ proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co;
+
+ sculpt_brush_test_init(ss, &test);
+
+ BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) {
+ if (sculpt_brush_test(&test, vd.co)) {
+ //if(sculpt_brush_test_cyl(&test, vd.co, ss->cache->location, an)) {
+ /* offset vertex */
+ float fade = tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->frontface_start, ss->cache->frontface_range, an, origno[vd.i]);
+
+ mul_v3_v3fl(proxy[vd.i], offset, fade);
+
+ if(vd.mvert)
+ vd.mvert->flag |= ME_VERT_PBVH_UPDATE;
+ }
+ }
+ BLI_pbvh_vertex_iter_end;
+ }
+}
+
static void do_crease_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode)
{
Brush *brush = paint_brush(&sd->paint);
@@ -2671,6 +2726,9 @@
case SCULPT_TOOL_DRAW:
do_draw_brush(sd, ss, nodes, totnode);
break;
+ case SCULPT_TOOL_GRAVITY:
+ do_gravity_brush(sd, ss, nodes, totnode);
+ break;
case SCULPT_TOOL_SMOOTH:
do_smooth_brush(sd, ss, nodes, totnode);
break;
@@ -2786,6 +2844,7 @@
break;
case SCULPT_TOOL_DRAW:
+ case SCULPT_TOOL_GRAVITY:
case SCULPT_TOOL_CLAY:
case SCULPT_TOOL_CLAY_STRIPS:
case SCULPT_TOOL_CREASE:
@@ -3009,6 +3068,8 @@
switch(brush->sculpt_tool) {
case SCULPT_TOOL_DRAW:
return "Draw Brush"; break;
+ case SCULPT_TOOL_GRAVITY:
+ return "Gravity Brush"; break;
case SCULPT_TOOL_SMOOTH:
return "Smooth Brush"; break;
case SCULPT_TOOL_CREASE:
@@ -3222,7 +3283,7 @@
cache->original = 1;
}
- if(ELEM7(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_CREASE, SCULPT_TOOL_BLOB, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_STRIPS))
+ if(ELEM8(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_GRAVITY, SCULPT_TOOL_CREASE, SCULPT_TOOL_BLOB, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_STRIPS))
if(!(brush->flag & BRUSH_ACCUMULATE))
cache->original = 1;
Modified: branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h
===================================================================
--- branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h 2010-08-04 19:35:27 UTC (rev 31051)
+++ branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h 2010-08-05 00:06:05 UTC (rev 31052)
@@ -133,24 +133,25 @@
#define BRUSH_SYMMETRY_FEATHER (1<<29)
/* Brush.sculpt_tool */
-#define SCULPT_TOOL_DRAW 1
-#define SCULPT_TOOL_SMOOTH 2
-#define SCULPT_TOOL_PINCH 3
-#define SCULPT_TOOL_INFLATE 4
-#define SCULPT_TOOL_GRAB 5
-#define SCULPT_TOOL_LAYER 6
-#define SCULPT_TOOL_FLATTEN 7
-#define SCULPT_TOOL_CLAY 8
-#define SCULPT_TOOL_FILL 9
-#define SCULPT_TOOL_SCRAPE 10
-#define SCULPT_TOOL_NUDGE 11
-#define SCULPT_TOOL_THUMB 12
-#define SCULPT_TOOL_SNAKE_HOOK 13
-#define SCULPT_TOOL_ROTATE 14
-//#define SCULPT_TOOL_WAX 15 // XXX: reuse this slot later
-#define SCULPT_TOOL_CREASE 16
-#define SCULPT_TOOL_BLOB 17
+#define SCULPT_TOOL_DRAW 1
+#define SCULPT_TOOL_SMOOTH 2
+#define SCULPT_TOOL_PINCH 3
+#define SCULPT_TOOL_INFLATE 4
+#define SCULPT_TOOL_GRAB 5
+#define SCULPT_TOOL_LAYER 6
+#define SCULPT_TOOL_FLATTEN 7
+#define SCULPT_TOOL_CLAY 8
+#define SCULPT_TOOL_FILL 9
+#define SCULPT_TOOL_SCRAPE 10
+#define SCULPT_TOOL_NUDGE 11
+#define SCULPT_TOOL_THUMB 12
+#define SCULPT_TOOL_SNAKE_HOOK 13
+#define SCULPT_TOOL_ROTATE 14
+//#define SCULPT_TOOL_WAX 15 // XXX: reuse this slot later
+#define SCULPT_TOOL_CREASE 16
+#define SCULPT_TOOL_BLOB 17
#define SCULPT_TOOL_CLAY_STRIPS 18
+#define SCULPT_TOOL_GRAVITY 19
/* ImagePaintSettings.tool */
#define PAINT_TOOL_DRAW 0
Modified: branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c 2010-08-04 19:35:27 UTC (rev 31051)
+++ branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c 2010-08-05 00:06:05 UTC (rev 31052)
@@ -56,6 +56,7 @@
{SCULPT_TOOL_CLAY_STRIPS, "CLAY_STRIPS", ICON_BRUSH_CLAY, "Clay Strips", ""},
{SCULPT_TOOL_CREASE, "CREASE",ICON_BRUSH_CREASE, "Crease", ""},
{SCULPT_TOOL_DRAW, "DRAW", ICON_BRUSH_SCULPT_DRAW, "Draw", ""},
+ {SCULPT_TOOL_GRAVITY, "GRAVITY", ICON_BRUSH_SCULPT_DRAW, "Gravity", ""},
{SCULPT_TOOL_FILL, "FILL", ICON_BRUSH_FILL, "Fill", ""},
{SCULPT_TOOL_FLATTEN, "FLATTEN", ICON_BRUSH_FLATTEN, "Flatten", ""},
{SCULPT_TOOL_GRAB, "GRAB", ICON_BRUSH_GRAB, "Grab", ""},
More information about the Bf-blender-cvs
mailing list