Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-08-13 04:05:25 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-08-13 04:05:25 +0400
commit5057810bda81733eb55acca1d3eb5c73317d4c55 (patch)
tree9185c0800162c5baf661754fd1224bd938b1dd22 /release/scripts/freestyle/style_modules/parameter_editor.py
parent820ced18b980aac1f97278094fb5842c580afbc7 (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.py23
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 = [