Sculpt: Cloth Brush elastic drag deform type
This commit is contained in:
parent
06078a6f92
commit
c0f19d6082
|
@ -512,6 +512,15 @@ static void do_cloth_brush_apply_forces_task_cb_ex(void *__restrict userdata,
|
|||
plane_from_point_normal_v3(deform_plane, data->area_co, plane_normal);
|
||||
}
|
||||
|
||||
KelvinletParams params;
|
||||
const float kv_force = 1.0f;
|
||||
const float kv_shear_modulus = 1.0f;
|
||||
const float kv_poisson_ratio = 0.4f;
|
||||
if (brush->cloth_deform_type == BRUSH_CLOTH_DEFORM_ELASTIC_DRAG) {
|
||||
BKE_kelvinlet_init_params(
|
||||
¶ms, ss->cache->radius, kv_force, kv_shear_modulus, kv_poisson_ratio);
|
||||
}
|
||||
|
||||
/* Gravity */
|
||||
float gravity[3] = {0.0f};
|
||||
if (ss->cache->supports_gravity) {
|
||||
|
@ -627,6 +636,17 @@ static void do_cloth_brush_apply_forces_task_cb_ex(void *__restrict userdata,
|
|||
cloth_sim->length_constraint_tweak[vd.index] += fade * 0.1f;
|
||||
zero_v3(force);
|
||||
break;
|
||||
case BRUSH_CLOTH_DEFORM_ELASTIC_DRAG: {
|
||||
float final_disp[3];
|
||||
sub_v3_v3v3(brush_disp, ss->cache->location, ss->cache->last_location);
|
||||
mul_v3_v3fl(final_disp, brush_disp, ss->cache->bstrength);
|
||||
BKE_kelvinlet_grab_triscale(final_disp, ¶ms, vd.co, ss->cache->location, brush_disp);
|
||||
mul_v3_fl(final_disp, 20.0f * (1.0f - fade));
|
||||
add_v3_v3(cloth_sim->pos[vd.index], final_disp);
|
||||
zero_v3(force);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
cloth_brush_apply_force_to_vertex(ss, ss->cache->cloth_sim, force, vd.index);
|
||||
|
|
|
@ -224,6 +224,7 @@ typedef enum eBrushClothDeformType {
|
|||
BRUSH_CLOTH_DEFORM_INFLATE = 5,
|
||||
BRUSH_CLOTH_DEFORM_EXPAND = 6,
|
||||
BRUSH_CLOTH_DEFORM_SNAKE_HOOK = 7,
|
||||
BRUSH_CLOTH_DEFORM_ELASTIC_DRAG = 8,
|
||||
} eBrushClothDeformType;
|
||||
|
||||
typedef enum eBrushSmoothDeformType {
|
||||
|
|
|
@ -373,7 +373,7 @@ typedef struct Brush {
|
|||
typedef struct tPaletteColorHSV {
|
||||
float rgb[3];
|
||||
float value;
|
||||
float h;
|
||||
float h;
|
||||
float s;
|
||||
float v;
|
||||
} tPaletteColorHSV;
|
||||
|
|
|
@ -2102,6 +2102,7 @@ static void rna_def_brush(BlenderRNA *brna)
|
|||
{BRUSH_CLOTH_DEFORM_GRAB, "GRAB", 0, "Grab", ""},
|
||||
{BRUSH_CLOTH_DEFORM_EXPAND, "EXPAND", 0, "Expand", ""},
|
||||
{BRUSH_CLOTH_DEFORM_SNAKE_HOOK, "SNAKE_HOOK", 0, "Snake Hook", ""},
|
||||
{BRUSH_CLOTH_DEFORM_ELASTIC_DRAG, "ELASTIC", 0, "Elastic Drag", ""},
|
||||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue