diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-11-14 00:20:50 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-11-14 00:20:50 +0400 |
commit | 99f7f3ac81c3854e131562c660183bdf5279dc38 (patch) | |
tree | 43cdd319fa819910347221a336e118ea16e5d9e9 /release/scripts | |
parent | 43c74f768b41551127d2952d398cee40703b28a5 (diff) |
Added new options for splitting chains of feature edges by a minimum
and maximum 2D angle.
Diffstat (limited to 'release/scripts')
-rw-r--r-- | release/scripts/freestyle/style_modules/parameter_editor.py | 21 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_render.py | 13 |
2 files changed, 33 insertions, 1 deletions
diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py index 6da3e509e86..882e40ced3f 100644 --- a/release/scripts/freestyle/style_modules/parameter_editor.py +++ b/release/scripts/freestyle/style_modules/parameter_editor.py @@ -802,6 +802,23 @@ class MaterialBoundaryUP0D(UnaryPredicate0D): idx2 = fe.materialIndex() if fe.isSmooth() else fe.bMaterialIndex() return idx1 != idx2 +class Curvature2DAngleThresholdUP0D(UnaryPredicate0D): + def __init__(self, min_angle=None, max_angle=None): + UnaryPredicate0D.__init__(self) + print(min_angle, max_angle) + self._min_angle = min_angle + self._max_angle = max_angle + self._func = Curvature2DAngleF0D() + def getName(self): + return "Curvature2DAngleThresholdUP0D" + def __call__(self, inter): + angle = math.pi - self._func(inter) + if self._min_angle is not None and angle < self._min_angle: + return True + if self._max_angle is not None and angle > self._max_angle: + return True + return False + # Seed for random number generation class Seed: @@ -926,6 +943,10 @@ def process(layer_name, lineset_name): # split chains if linestyle.material_boundary: Operators.sequentialSplit(MaterialBoundaryUP0D()) + if linestyle.use_min_angle or linestyle.use_max_angle: + min_angle = linestyle.min_angle if linestyle.use_min_angle else None + max_angle = linestyle.max_angle if linestyle.use_max_angle else None + Operators.sequentialSplit(Curvature2DAngleThresholdUP0D(min_angle, max_angle)) # select chains if linestyle.use_min_length or linestyle.use_max_length: min_length = linestyle.min_length if linestyle.use_min_length else None diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 1aa3df152a7..868287b5fa0 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -588,7 +588,18 @@ class RENDER_PT_freestyle_linestyle(RenderButtonsPanel, Panel): # Splitting col = layout.column() col.label(text="Splitting:") - row = col.row(align=True) + sub = col.row() + subcol = sub.column() + subcol.prop(linestyle, "use_min_angle", text="Min Angle") + subsub = subcol.split() + subsub.prop(linestyle, "min_angle", text="") + subsub.enabled = linestyle.use_min_angle + subcol = sub.column() + subcol.prop(linestyle, "use_max_angle", text="Max Angle") + subsub = subcol.split() + subsub.prop(linestyle, "max_angle", text="") + subsub.enabled = linestyle.use_max_angle + row = col.row() row.prop(linestyle, "material_boundary") # Selection col = layout.column() |