forked from bartvdbraak/blender
Added two stroke geometry modifiers: Parameterization and Guiding Lines.
This commit is contained in:
parent
12f2c06d34
commit
ac6bdfb653
@ -977,6 +977,12 @@ def process(layer_name, lineset_name):
|
||||
elif m.type == "TIP_REMOVER":
|
||||
shaders_list.append(TipRemoverShader(
|
||||
m.tip_length))
|
||||
elif m.type == "POLYGONIZATION":
|
||||
shaders_list.append(PolygonalizationShader(
|
||||
m.error))
|
||||
elif m.type == "GUIDING_LINES":
|
||||
shaders_list.append(GuidingLinesShader(
|
||||
m.offset))
|
||||
color = linestyle.color
|
||||
shaders_list.append(ConstantColorShader(color.r, color.g, color.b, linestyle.alpha))
|
||||
shaders_list.append(ConstantThicknessShader(linestyle.thickness))
|
||||
|
@ -544,6 +544,12 @@ class RENDER_PT_freestyle_linestyle(RenderButtonsPanel, Panel):
|
||||
elif modifier.type == "TIP_REMOVER":
|
||||
box.prop(modifier, "tip_length")
|
||||
|
||||
elif modifier.type == "POLYGONIZATION":
|
||||
box.prop(modifier, "error")
|
||||
|
||||
elif modifier.type == "GUIDING_LINES":
|
||||
box.prop(modifier, "offset")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
@ -61,7 +61,9 @@ static char *modifier_name[LS_MODIFIER_NUM] = {
|
||||
"Perlin Noise 2D",
|
||||
"Backbone Stretcher",
|
||||
"Tip Remover",
|
||||
"Calligraphy"};
|
||||
"Calligraphy",
|
||||
"Polygonalization",
|
||||
"Guiding Lines"};
|
||||
|
||||
static void default_linestyle_settings(FreestyleLineStyle *linestyle)
|
||||
{
|
||||
@ -390,6 +392,12 @@ int FRS_add_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, int type)
|
||||
case LS_MODIFIER_TIP_REMOVER:
|
||||
size = sizeof(LineStyleGeometryModifier_TipRemover);
|
||||
break;
|
||||
case LS_MODIFIER_POLYGONIZATION:
|
||||
size = sizeof(LineStyleGeometryModifier_Polygonalization);
|
||||
break;
|
||||
case LS_MODIFIER_GUIDING_LINES:
|
||||
size = sizeof(LineStyleGeometryModifier_GuidingLines);
|
||||
break;
|
||||
default:
|
||||
return -1; /* unknown modifier type */
|
||||
}
|
||||
@ -432,6 +440,12 @@ int FRS_add_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, int type)
|
||||
case LS_MODIFIER_TIP_REMOVER:
|
||||
((LineStyleGeometryModifier_TipRemover *)m)->tip_length = 10.0;
|
||||
break;
|
||||
case LS_MODIFIER_POLYGONIZATION:
|
||||
((LineStyleGeometryModifier_Polygonalization *)m)->error = 10.0;
|
||||
break;
|
||||
case LS_MODIFIER_GUIDING_LINES:
|
||||
((LineStyleGeometryModifier_GuidingLines *)m)->offset = 0.0;
|
||||
break;
|
||||
}
|
||||
add_to_modifier_list(&linestyle->geometry_modifiers, m);
|
||||
return 0;
|
||||
@ -456,6 +470,10 @@ void FRS_remove_linestyle_geometry_modifier(FreestyleLineStyle *linestyle, LineS
|
||||
break;
|
||||
case LS_MODIFIER_TIP_REMOVER:
|
||||
break;
|
||||
case LS_MODIFIER_POLYGONIZATION:
|
||||
break;
|
||||
case LS_MODIFIER_GUIDING_LINES:
|
||||
break;
|
||||
}
|
||||
BLI_freelinkN(&linestyle->geometry_modifiers, m);
|
||||
}
|
||||
|
@ -2674,6 +2674,12 @@ static void write_linestyle_geometry_modifiers(WriteData *wd, ListBase *modifier
|
||||
case LS_MODIFIER_TIP_REMOVER:
|
||||
struct_name = "LineStyleGeometryModifier_TipRemover";
|
||||
break;
|
||||
case LS_MODIFIER_POLYGONIZATION:
|
||||
struct_name = "LineStyleGeometryModifier_Polygonalization";
|
||||
break;
|
||||
case LS_MODIFIER_GUIDING_LINES:
|
||||
struct_name = "LineStyleGeometryModifier_GuidingLines";
|
||||
break;
|
||||
default:
|
||||
struct_name = "LineStyleGeometryModifier"; // this should not happen
|
||||
}
|
||||
|
@ -62,7 +62,9 @@ typedef struct LineStyleModifier {
|
||||
#define LS_MODIFIER_BACKBONE_STRETCHER 11
|
||||
#define LS_MODIFIER_TIP_REMOVER 12
|
||||
#define LS_MODIFIER_CALLIGRAPHY 13
|
||||
#define LS_MODIFIER_NUM 14
|
||||
#define LS_MODIFIER_POLYGONIZATION 14
|
||||
#define LS_MODIFIER_GUIDING_LINES 15
|
||||
#define LS_MODIFIER_NUM 16
|
||||
|
||||
/* LineStyleModifier::flags */
|
||||
#define LS_MODIFIER_ENABLED 1
|
||||
@ -295,6 +297,22 @@ typedef struct LineStyleGeometryModifier_TipRemover {
|
||||
|
||||
} LineStyleGeometryModifier_TipRemover;
|
||||
|
||||
typedef struct LineStyleGeometryModifier_Polygonalization {
|
||||
struct LineStyleModifier modifier;
|
||||
|
||||
float error;
|
||||
int pad;
|
||||
|
||||
} LineStyleGeometryModifier_Polygonalization;
|
||||
|
||||
typedef struct LineStyleGeometryModifier_GuidingLines {
|
||||
struct LineStyleModifier modifier;
|
||||
|
||||
float offset;
|
||||
int pad;
|
||||
|
||||
} LineStyleGeometryModifier_GuidingLines;
|
||||
|
||||
/* Calligraphic thickness modifier */
|
||||
|
||||
typedef struct LineStyleThicknessModifier_Calligraphy {
|
||||
|
@ -298,8 +298,10 @@ extern StructRNA RNA_LineStyleColorModifier_Material;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_BackboneStretcher;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_BezierCurve;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_GuidingLines;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_PerlinNoise1D;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_PerlinNoise2D;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_Polygonalization;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_Sampling;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_SinusDisplacement;
|
||||
extern StructRNA RNA_LineStyleGeometryModifier_SpatialNoise;
|
||||
|
@ -67,6 +67,8 @@ EnumPropertyItem linestyle_geometry_modifier_type_items[] ={
|
||||
{LS_MODIFIER_PERLIN_NOISE_2D, "PERLIN_NOISE_2D", ICON_MODIFIER, "Perlin Noise 2D", ""},
|
||||
{LS_MODIFIER_BACKBONE_STRETCHER, "BACKBONE_STRETCHER", ICON_MODIFIER, "Backbone Stretcher", ""},
|
||||
{LS_MODIFIER_TIP_REMOVER, "TIP_REMOVER", ICON_MODIFIER, "Tip Remover", ""},
|
||||
{LS_MODIFIER_POLYGONIZATION, "POLYGONIZATION", ICON_MODIFIER, "Polygonization", ""},
|
||||
{LS_MODIFIER_GUIDING_LINES, "GUIDING_LINES", ICON_MODIFIER, "Guiding Lines", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
#ifdef RNA_RUNTIME
|
||||
@ -148,6 +150,10 @@ static StructRNA *rna_LineStyle_geometry_modifier_refine(struct PointerRNA *ptr)
|
||||
return &RNA_LineStyleGeometryModifier_BackboneStretcher;
|
||||
case LS_MODIFIER_TIP_REMOVER:
|
||||
return &RNA_LineStyleGeometryModifier_TipRemover;
|
||||
case LS_MODIFIER_POLYGONIZATION:
|
||||
return &RNA_LineStyleGeometryModifier_Polygonalization;
|
||||
case LS_MODIFIER_GUIDING_LINES:
|
||||
return &RNA_LineStyleGeometryModifier_GuidingLines;
|
||||
default:
|
||||
return &RNA_LineStyleGeometryModifier;
|
||||
}
|
||||
@ -659,6 +665,24 @@ static void rna_def_linestyle_modifiers(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Tip Length", "Length of tips to be removed");
|
||||
RNA_def_property_update(prop, NC_SCENE, NULL);
|
||||
|
||||
srna= RNA_def_struct(brna, "LineStyleGeometryModifier_Polygonalization", "LineStyleGeometryModifier");
|
||||
RNA_def_struct_ui_text(srna, "Polygonalization", "Modify the stroke geometry so that it looks more \"polygonal\"");
|
||||
rna_def_geometry_modifier(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "error", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "error");
|
||||
RNA_def_property_ui_text(prop, "Error", "Maximum distance between the original stroke and its polygonal approximation");
|
||||
RNA_def_property_update(prop, NC_SCENE, NULL);
|
||||
|
||||
srna= RNA_def_struct(brna, "LineStyleGeometryModifier_GuidingLines", "LineStyleGeometryModifier");
|
||||
RNA_def_struct_ui_text(srna, "Guiding Lines", "Modify the stroke geometry so that it corresponds to its main direction line");
|
||||
rna_def_geometry_modifier(srna);
|
||||
|
||||
prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "offset");
|
||||
RNA_def_property_ui_text(prop, "Offset", "Displacement that is applied to the main direction line along its normal");
|
||||
RNA_def_property_update(prop, NC_SCENE, NULL);
|
||||
|
||||
}
|
||||
|
||||
static void rna_def_linestyle(BlenderRNA *brna)
|
||||
|
Loading…
Reference in New Issue
Block a user