2.5/Sculpt:
Added a clay brush. It behaves like a combination of the flatten and draw brushes. Credit to Fredrik Hannson for the original patch (#18666)
This commit is contained in:
parent
a42b436a98
commit
001dab25d4
|
@ -248,8 +248,9 @@ static float brush_strength(Sculpt *sd, StrokeCache *cache)
|
|||
switch(sd->brush->sculpt_tool){
|
||||
case SCULPT_TOOL_DRAW:
|
||||
case SCULPT_TOOL_INFLATE:
|
||||
return alpha * dir * pressure * flip; /*XXX: not sure why? was multiplied by G.vd->grid */;
|
||||
case SCULPT_TOOL_CLAY:
|
||||
case SCULPT_TOOL_FLATTEN:
|
||||
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:
|
||||
|
@ -552,7 +553,7 @@ static void calc_flatten_center(SculptSession *ss, ActiveData *node, float co[3]
|
|||
VecMulf(co, 1.0f / FLATTEN_SAMPLE_SIZE);
|
||||
}
|
||||
|
||||
static void do_flatten_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts)
|
||||
static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, const ListBase *active_verts, int clay)
|
||||
{
|
||||
ActiveData *node= active_verts->first;
|
||||
/* area_normal and cntr define the plane towards which vertices are squashed */
|
||||
|
@ -575,16 +576,23 @@ static void do_flatten_brush(Sculpt *sd, SculptSession *ss, const ListBase *acti
|
|||
VecAddf(intr, intr, p1);
|
||||
|
||||
VecSubf(val, intr, co);
|
||||
VecMulf(val, node->Fade);
|
||||
VecMulf(val, fabs(node->Fade));
|
||||
VecAddf(val, val, co);
|
||||
|
||||
if(clay) {
|
||||
/* Clay brush displaces after flattening */
|
||||
float tmp[3];
|
||||
VecCopyf(tmp, area_normal);
|
||||
VecMulf(tmp, ss->cache->radius * node->Fade * 0.1);
|
||||
VecAddf(val, val, tmp);
|
||||
}
|
||||
|
||||
sculpt_clip(ss->cache, co, val);
|
||||
|
||||
node= node->next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Uses symm to selectively flip any axis of a coordinate. */
|
||||
static void flip_coord(float out[3], float in[3], const char symm)
|
||||
{
|
||||
|
@ -852,8 +860,10 @@ static void do_brush_action(Sculpt *sd, StrokeCache *cache)
|
|||
do_layer_brush(sd, ss, &active_verts);
|
||||
break;
|
||||
case SCULPT_TOOL_FLATTEN:
|
||||
do_flatten_brush(sd, ss, &active_verts);
|
||||
do_flatten_clay_brush(sd, ss, &active_verts, 0);
|
||||
break;
|
||||
case SCULPT_TOOL_CLAY:
|
||||
do_flatten_clay_brush(sd, ss, &active_verts, 1);
|
||||
}
|
||||
|
||||
/* Copy the modified vertices from mesh to the active key */
|
||||
|
|
|
@ -1132,9 +1132,10 @@ static void view3d_panel_brush(const bContext *C, Panel *pa)
|
|||
uiDefButC(block,ROW,B_REDR,"Pinch",cx+134,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_PINCH,0,0,"Interactively pinch areas of the model");
|
||||
uiDefButC(block,ROW,B_REDR,"Inflate",cx+201,cy,67,19,&br->sculpt_tool,14,SCULPT_TOOL_INFLATE,0,0,"Push vertices along the direction of their normals");
|
||||
cy-= 20;
|
||||
uiDefButC(block,ROW,B_REDR,"Grab", cx,cy,89,19,&br->sculpt_tool,14,SCULPT_TOOL_GRAB,0,0,"Grabs a group of vertices and moves them with the mouse");
|
||||
uiDefButC(block,ROW,B_REDR,"Layer", cx+89,cy,89,19,&br->sculpt_tool,14, SCULPT_TOOL_LAYER,0,0,"Adds a layer of depth");
|
||||
uiDefButC(block,ROW,B_REDR,"Flatten", cx+178,cy,90,19,&br->sculpt_tool,14, SCULPT_TOOL_FLATTEN,0,0,"Interactively flatten areas of the model");
|
||||
uiDefButC(block,ROW,B_REDR,"Grab", cx,cy,67,19,&br->sculpt_tool,14,SCULPT_TOOL_GRAB,0,0,"Grabs a group of vertices and moves them with the mouse");
|
||||
uiDefButC(block,ROW,B_REDR,"Layer", cx+67,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_LAYER,0,0,"Adds a layer of depth");
|
||||
uiDefButC(block,ROW,B_REDR,"Flatten", cx+134,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_FLATTEN,0,0,"Interactively flatten areas of the model");
|
||||
uiDefButC(block,ROW,B_REDR,"Clay", cx+201,cy,67,19,&br->sculpt_tool,14, SCULPT_TOOL_CLAY,0,0,"Build up depth quickly");
|
||||
cy-= 25;
|
||||
uiBlockEndAlign(block);
|
||||
}
|
||||
|
|
|
@ -108,6 +108,7 @@ typedef struct Brush {
|
|||
#define SCULPT_TOOL_GRAB 5
|
||||
#define SCULPT_TOOL_LAYER 6
|
||||
#define SCULPT_TOOL_FLATTEN 7
|
||||
#define SCULPT_TOOL_CLAY 8
|
||||
|
||||
#define PAINT_TOOL_DRAW 0
|
||||
#define PAINT_TOOL_SOFTEN 1
|
||||
|
|
Loading…
Reference in New Issue