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>2013-07-05 00:24:22 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-07-05 00:24:22 +0400
commitdb71b5ef88ada7cccf6e86dfd30e58dc9668cf61 (patch)
tree9f3786a8a80fd21702c39e495e0a5d8250545cac /release
parent50148a0f53cf050d19d0967002403476609c1966 (diff)
Partial fix for Bug #35695: Freestyle produces extra line across an object with pointed areas.
The reported problem is a visual artefact (extra lines) generated by ChainingIterators.pySketchyChainingIterator used for sketchy chaining with the Same Object option disabled in the Parameter Editor mode. The issue is caused by an inconsistency in the internal data structure (i.e., view map). For now this fatal error condition is addressed to avoid visually incorrect results. Another fix will follow to address the cause of the internal inconsistency.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/freestyle/style_modules/ChainingIterators.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/release/scripts/freestyle/style_modules/ChainingIterators.py b/release/scripts/freestyle/style_modules/ChainingIterators.py
index 03ad837aa28..b908fad0b89 100644
--- a/release/scripts/freestyle/style_modules/ChainingIterators.py
+++ b/release/scripts/freestyle/style_modules/ChainingIterators.py
@@ -24,6 +24,8 @@
from freestyle import AdjacencyIterator, ChainingIterator, ExternalContourUP1D, Nature, TVertex
from freestyle import ContextFunctions as CF
+import bpy
+
## the natural chaining iterator
## It follows the edges of same nature following the topology of
## objects with preseance on silhouettes, then borders,
@@ -212,7 +214,7 @@ class pySketchyChainSilhouetteIterator(ChainingIterator):
visitNext = 1
break
if visitNext != 0:
- break
+ break
count = count+1
winner = ve
it.increment()
@@ -238,14 +240,22 @@ class pySketchyChainingIterator(ChainingIterator):
self._timeStamp = CF.get_time_stamp()+self._nRounds
def traverse(self, iter):
winner = None
+ found = False
it = AdjacencyIterator(iter)
while not it.is_end:
ve = it.object
if ve.id == self.current_edge.id:
+ found = True
it.increment()
continue
winner = ve
it.increment()
+ if not found:
+ # This is a fatal error condition: self.current_edge must be found
+ # among the edges seen by the AdjacencyIterator [bug #35695].
+ if bpy.app.debug_freestyle:
+ print('pySketchyChainingIterator: current edge not found')
+ return None
if winner is None:
winner = self.current_edge
if winner.chaining_time_stamp == self._timeStamp: