Curves: add taper mode option

Currently, when a taper object is specified, the radius of the spline is
ignored. This patch adds a new option to control how the taper object
affect the effective radius of the spline. The option allow three modes
of operation:

- Override: The old method. The radius of the spline is ignored and
  overridden.
- Multiply: The radius of the spline is multiplied by the taper radius.
- Add: The radius of the spline is added to the taper radius.

Ref D10779
This commit is contained in:
Omar Emara
2021-03-23 18:26:13 +11:00
committed by Campbell Barton
parent f2f796e623
commit ec97450ac6
5 changed files with 53 additions and 1 deletions

View File

@@ -1576,6 +1576,25 @@ static void rna_def_curve(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL},
};
static const EnumPropertyItem curve_taper_radius_mode_items[] = {
{CU_TAPER_RADIUS_OVERRIDE,
"OVERRIDE",
0,
"Override",
"Override the radius of the spline point with the taper radius"},
{CU_TAPER_RADIUS_MULTIPLY,
"MULTIPLY",
0,
"Multiply",
"Multiply the radius of the spline point by the taper radius"},
{CU_TAPER_RADIUS_ADD,
"ADD",
0,
"Add",
"Add the radius of the bevel point to the taper radius"},
{0, NULL, 0, NULL, NULL},
};
srna = RNA_def_struct(brna, "Curve", "ID");
RNA_def_struct_ui_text(srna, "Curve", "Curve data-block storing curves, splines and NURBS");
RNA_def_struct_ui_icon(srna, ICON_CURVE_DATA);
@@ -1757,6 +1776,15 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Twist Method", "The type of tilt calculation for 3D Curves");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
prop = RNA_def_property(srna, "taper_radius_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "taper_radius_mode");
RNA_def_property_enum_items(prop, curve_taper_radius_mode_items);
RNA_def_property_ui_text(prop,
"Taper Radius",
"Determine how the effective radius of the spline point is computed "
"when a taper object is specified");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
prop = RNA_def_property(srna, "bevel_factor_mapping_start", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "bevfac1_mapping");
RNA_def_property_enum_items(prop, bevfac_mapping_items);