diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-08-13 04:05:25 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-08-13 04:05:25 +0400 |
commit | 5057810bda81733eb55acca1d3eb5c73317d4c55 (patch) | |
tree | 9185c0800162c5baf661754fd1224bd938b1dd22 /release/scripts/freestyle/style_modules/parameter_editor.py | |
parent | 820ced18b980aac1f97278094fb5842c580afbc7 (diff) |
New line style option for splitting chains of feature edges at material boundaries.
Diffstat (limited to 'release/scripts/freestyle/style_modules/parameter_editor.py')
-rw-r--r-- | release/scripts/freestyle/style_modules/parameter_editor.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py index 2a9ce6c77c4..97ca75eef5d 100644 --- a/release/scripts/freestyle/style_modules/parameter_editor.py +++ b/release/scripts/freestyle/style_modules/parameter_editor.py @@ -633,6 +633,26 @@ class AndBP1D(BinaryPredicate1D): def __call__(self, i1, i2): return self.__pred1(i1, i2) and self.__pred2(i1, i2) +# predicates for splitting + +class MaterialBoundaryUP0D(UnaryPredicate0D): + def __call__(self, it): + if it.isBegin(): + return False + it_prev = Interface0DIterator(it) + it_prev.decrement() + v = it.getObject() + it.increment() + if it.isEnd(): + return False + fe = v.getFEdge(it_prev.getObject()) + idx1 = fe.materialIndex() if fe.isSmooth() else fe.bMaterialIndex() + print(1, fe, idx1) + fe = v.getFEdge(it.getObject()) + idx2 = fe.materialIndex() if fe.isSmooth() else fe.bMaterialIndex() + print(2, fe, idx2) + return idx1 != idx2 + # main function for parameter processing def process(layer_name, lineset_name): @@ -749,6 +769,9 @@ def process(layer_name, lineset_name): Operators.sequentialSplit(DashedLineStartingUP0D(controller), DashedLineStoppingUP0D(controller), sampling) + # split chains of feature edges + if linestyle.material_boundary: + Operators.sequentialSplit(MaterialBoundaryUP0D()) # prepare a list of stroke shaders color = linestyle.color shaders_list = [ |