Freestyle: new stroke modifiers
This patch introduces a couple new stroke modifiers. The ones currently implemented are based on prototypes by @kjym3 and myself. The new modifiers: - Tangent - Thickness noise - Crease Angle - Simplification - Curvature 3D The documentation for these new modifier types can be found [[ http://www.blender.org/manual/render/freestyle/parameter_editor/index.html | in the manual ]]: {F134441} (left: AnisotropicThicknessShader, right: NoiseThicknessShader) {F140499} (left: Curvature 3D, right: Simplification) Author: Folkert de Vries (flokkievids) Reviewers: kjym3 Subscribers: #user_interface, plasmasolutions, kjym3 Projects: #bf_blender Differential Revision: https://developer.blender.org/D963
This commit is contained in:
@@ -283,6 +283,10 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
|
||||
sub.operator("scene.freestyle_modifier_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
|
||||
sub.operator("scene.freestyle_modifier_remove", icon='X', text="")
|
||||
|
||||
def draw_modifier_box_error(self, box, modifier, message):
|
||||
row = box.row()
|
||||
row.label(text=message, icon="ERROR")
|
||||
|
||||
def draw_modifier_common(self, box, modifier):
|
||||
row = box.row()
|
||||
row.prop(modifier, "blend", text="")
|
||||
@@ -351,6 +355,33 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
|
||||
if show_ramp:
|
||||
self.draw_modifier_color_ramp_common(box, modifier, False)
|
||||
|
||||
elif modifier.type == 'TANGENT':
|
||||
self.draw_modifier_color_ramp_common(box, modifier, False)
|
||||
|
||||
elif modifier.type == 'NOISE':
|
||||
self.draw_modifier_color_ramp_common(box, modifier, False)
|
||||
row = box.row(align=False)
|
||||
row.prop(modifier, "amplitude")
|
||||
row.prop(modifier, "period")
|
||||
row.prop(modifier, "seed")
|
||||
|
||||
elif modifier.type == 'CREASE_ANGLE':
|
||||
self.draw_modifier_color_ramp_common(box, modifier, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "angle_min")
|
||||
row.prop(modifier, "angle_max")
|
||||
|
||||
elif modifier.type == 'CURVATURE_3D':
|
||||
self.draw_modifier_color_ramp_common(box, modifier, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "curvature_min")
|
||||
row.prop(modifier, "curvature_max")
|
||||
freestyle = context.scene.render.layers.active.freestyle_settings
|
||||
if not freestyle.use_smoothness:
|
||||
message = "Enable Face Smoothness to use this modifier"
|
||||
self.draw_modifier_box_error(col.box(), modifier, message)
|
||||
|
||||
|
||||
def draw_alpha_modifier(self, context, modifier):
|
||||
layout = self.layout
|
||||
|
||||
@@ -380,6 +411,32 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
|
||||
box.prop(modifier, "material_attribute", text="")
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
|
||||
elif modifier.type == 'TANGENT':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
|
||||
elif modifier.type == 'NOISE':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
row = box.row(align=False)
|
||||
row.prop(modifier, "amplitude")
|
||||
row.prop(modifier, "period")
|
||||
row.prop(modifier, "seed")
|
||||
|
||||
elif modifier.type == 'CREASE_ANGLE':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "angle_min")
|
||||
row.prop(modifier, "angle_max")
|
||||
|
||||
elif modifier.type == 'CURVATURE_3D':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "curvature_min")
|
||||
row.prop(modifier, "curvature_max")
|
||||
freestyle = context.scene.render.layers.active.freestyle_settings
|
||||
if not freestyle.use_smoothness:
|
||||
message = "Enable Face Smoothness to use this modifier"
|
||||
self.draw_modifier_box_error(col.box(), modifier, message)
|
||||
|
||||
def draw_thickness_modifier(self, context, modifier):
|
||||
layout = self.layout
|
||||
|
||||
@@ -415,6 +472,45 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
|
||||
row.prop(modifier, "thickness_min")
|
||||
row.prop(modifier, "thickness_max")
|
||||
|
||||
elif modifier.type == 'TANGENT':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
self.mapping = 'CURVE'
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "thickness_min")
|
||||
row.prop(modifier, "thickness_max")
|
||||
|
||||
elif modifier.type == 'NOISE':
|
||||
row = box.row(align=False)
|
||||
row.prop(modifier, "amplitude")
|
||||
row.prop(modifier, "period")
|
||||
row = box.row(align=False)
|
||||
row.prop(modifier, "seed")
|
||||
row.prop(modifier, "use_asymmetric")
|
||||
|
||||
elif modifier.type == 'CREASE_ANGLE':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "thickness_min")
|
||||
row.prop(modifier, "thickness_max")
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "angle_min")
|
||||
row.prop(modifier, "angle_max")
|
||||
|
||||
|
||||
elif modifier.type == 'CURVATURE_3D':
|
||||
self.draw_modifier_curve_common(box, modifier, False, False)
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "thickness_min")
|
||||
row.prop(modifier, "thickness_max")
|
||||
row = box.row(align=True)
|
||||
row.prop(modifier, "curvature_min")
|
||||
row.prop(modifier, "curvature_max")
|
||||
freestyle = context.scene.render.layers.active.freestyle_settings
|
||||
if not freestyle.use_smoothness:
|
||||
message = "Enable Face Smoothness to use this modifier"
|
||||
self.draw_modifier_box_error(col.box(), modifier, message)
|
||||
|
||||
|
||||
def draw_geometry_modifier(self, context, modifier):
|
||||
layout = self.layout
|
||||
|
||||
@@ -512,6 +608,10 @@ class RENDERLAYER_PT_freestyle_linestyle(RenderLayerFreestyleEditorButtonsPanel,
|
||||
row.prop(modifier, "scale_y")
|
||||
box.prop(modifier, "angle")
|
||||
|
||||
elif modifier.type == 'SIMPLIFICATION':
|
||||
box.prop(modifier, "tolerance")
|
||||
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
|
||||
Reference in New Issue
Block a user