GPencil: Add parameters to scale thickness when convert Curves
This parameter allows to scale the thickness.
This commit is contained in:
parent
19cef4073d
commit
9abdafe840
|
@ -37,7 +37,8 @@ void BKE_gpencil_convert_curve(struct Main *bmain,
|
|||
struct Object *ob_cu,
|
||||
const bool gpencil_lines,
|
||||
const bool use_collections,
|
||||
const bool only_stroke);
|
||||
const bool only_stroke,
|
||||
const float scale_thickness);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -172,6 +172,7 @@ static void gpencil_convert_spline(Main *bmain,
|
|||
Object *ob_cu,
|
||||
const bool gpencil_lines,
|
||||
const bool only_stroke,
|
||||
const float scale_thickness,
|
||||
bGPDframe *gpf,
|
||||
Nurb *nu)
|
||||
{
|
||||
|
@ -342,8 +343,11 @@ static void gpencil_convert_spline(Main *bmain,
|
|||
copy_v3_v3(init_co, &coord_array[0]);
|
||||
}
|
||||
/* Add points to the stroke */
|
||||
float radius_start = prevbezt->radius * scale_thickness;
|
||||
float radius_end = bezt->radius * scale_thickness;
|
||||
|
||||
gpencil_add_new_points(
|
||||
gps, coord_array, prevbezt->radius, bezt->radius, init, resolu, init_co, last);
|
||||
gps, coord_array, radius_start, radius_end, init, resolu, init_co, last);
|
||||
/* Free memory. */
|
||||
MEM_SAFE_FREE(coord_array);
|
||||
|
||||
|
@ -403,6 +407,7 @@ static void gpencil_convert_spline(Main *bmain,
|
|||
* \param gpencil_lines: Use lines for strokes.
|
||||
* \param use_collections: Create layers using collection names.
|
||||
* \param only_stroke: The material must be only stroke without fill.
|
||||
* \param scale_thickness: Scale thickness factor.
|
||||
*/
|
||||
void BKE_gpencil_convert_curve(Main *bmain,
|
||||
Scene *scene,
|
||||
|
@ -410,7 +415,8 @@ void BKE_gpencil_convert_curve(Main *bmain,
|
|||
Object *ob_cu,
|
||||
const bool gpencil_lines,
|
||||
const bool use_collections,
|
||||
const bool only_stroke)
|
||||
const bool only_stroke,
|
||||
const float scale_thickness)
|
||||
{
|
||||
if (ELEM(NULL, ob_gp, ob_cu) || (ob_gp->type != OB_GPENCIL) || (ob_gp->data == NULL)) {
|
||||
return;
|
||||
|
@ -448,7 +454,8 @@ void BKE_gpencil_convert_curve(Main *bmain,
|
|||
|
||||
/* Read all splines of the curve and create a stroke for each. */
|
||||
LISTBASE_FOREACH (Nurb *, nu, &cu->nurb) {
|
||||
gpencil_convert_spline(bmain, ob_gp, ob_cu, gpencil_lines, only_stroke, gpf, nu);
|
||||
gpencil_convert_spline(
|
||||
bmain, ob_gp, ob_cu, gpencil_lines, only_stroke, scale_thickness, gpf, nu);
|
||||
}
|
||||
|
||||
/* Tag for recalculation */
|
||||
|
|
|
@ -2647,7 +2647,7 @@ static int object_convert_exec(bContext *C, wmOperator *op)
|
|||
ob_gpencil = ED_gpencil_add_object(C, ob->loc, local_view_bits);
|
||||
copy_v3_v3(ob_gpencil->rot, ob->rot);
|
||||
copy_v3_v3(ob_gpencil->scale, ob->scale);
|
||||
BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, false, false, true);
|
||||
BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, false, false, true, 1.0f);
|
||||
gpencilConverted = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -714,7 +714,8 @@ bool rna_Object_generate_gpencil_strokes(Object *ob,
|
|||
ReportList *reports,
|
||||
Object *ob_gpencil,
|
||||
bool gpencil_lines,
|
||||
bool use_collections)
|
||||
bool use_collections,
|
||||
float scale_thickness)
|
||||
{
|
||||
if (ob->type != OB_CURVE) {
|
||||
BKE_reportf(reports,
|
||||
|
@ -726,7 +727,8 @@ bool rna_Object_generate_gpencil_strokes(Object *ob,
|
|||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, gpencil_lines, use_collections, false);
|
||||
BKE_gpencil_convert_curve(
|
||||
bmain, scene, ob_gpencil, ob, gpencil_lines, use_collections, false, scale_thickness);
|
||||
|
||||
WM_main_add_notifier(NC_GPENCIL | ND_DATA, NULL);
|
||||
|
||||
|
@ -1190,12 +1192,16 @@ void RNA_api_object(StructRNA *srna)
|
|||
RNA_def_function_ui_description(func, "Convert a curve object to grease pencil strokes.");
|
||||
RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
|
||||
|
||||
parm = RNA_def_pointer(
|
||||
func, "ob_gpencil", "Object", "", "Grease Pencil object used to create new strokes");
|
||||
parm = RNA_def_pointer(func,
|
||||
"grease_pencil_object",
|
||||
"Object",
|
||||
"",
|
||||
"Grease Pencil object used to create new strokes");
|
||||
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
||||
parm = RNA_def_boolean(func, "gpencil_lines", 0, "", "Create Lines");
|
||||
parm = RNA_def_boolean(func, "use_collections", 1, "", "Use Collections");
|
||||
|
||||
parm = RNA_def_boolean(func, "gpencil_lines", false, "", "Create Lines");
|
||||
parm = RNA_def_boolean(func, "use_collections", true, "", "Use Collections");
|
||||
parm = RNA_def_float(
|
||||
func, "scale_thickness", 1.0f, 0.0f, FLT_MAX, "", "Thickness scaling factor", 0.0f, 100.0f);
|
||||
parm = RNA_def_boolean(func, "result", 0, "", "Result");
|
||||
RNA_def_function_return(func, parm);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue