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-08-30 13:17:27 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-08-30 13:17:27 +0400
commit91e5189c9077c71c0f17db31903154fc2650458a (patch)
tree42495e290a0afcd792647a56635c74ac3ddbfba7 /release/scripts/freestyle
parent9ccf84926d3066f4dd6f84753374221c3859358f (diff)
Fix for [#36599] Freestyle: Line thickness modifier with certain blend types incorrectly calculated.
The inner/outer thickness values were separately blended by Multiply, Divide and other binary operators, which resulted in the wrong thickness values reported in the issue. The operations must be applied to the sum of the inner and outer thickness values. Also the Minimum and Maximum operators were not properly implemented (one of the two operands were ignored by mistake).
Diffstat (limited to 'release/scripts/freestyle')
-rw-r--r--release/scripts/freestyle/style_modules/parameter_editor.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py
index 6a3d0efe2c2..371019ebe18 100644
--- a/release/scripts/freestyle/style_modules/parameter_editor.py
+++ b/release/scripts/freestyle/style_modules/parameter_editor.py
@@ -78,11 +78,11 @@ class ScalarBlendModifier(StrokeShader):
elif self.__blend == 'DIFFERENCE':
v1 = facm * v1 + fac * abs(v1 - v2)
elif self.__blend == 'MININUM':
- tmp = fac * v1
+ tmp = fac * v2
if v1 > tmp:
v1 = tmp
elif self.__blend == 'MAXIMUM':
- tmp = fac * v1
+ tmp = fac * v2
if v1 < tmp:
v1 = tmp
else:
@@ -142,18 +142,19 @@ class ThicknessBlenderMixIn(ThicknessModifierMixIn):
self.__ratio = ratio
def blend_thickness(self, outer, inner, v):
+ v = self.blend(outer + inner, v)
if self.__position == 'CENTER':
- outer = self.blend(outer, v / 2)
- inner = self.blend(inner, v / 2)
+ outer = v * 0.5
+ inner = v - outer
elif self.__position == 'INSIDE':
- outer = self.blend(outer, 0)
- inner = self.blend(inner, v)
+ outer = 0
+ inner = v
elif self.__position == 'OUTSIDE':
- outer = self.blend(outer, v)
- inner = self.blend(inner, 0)
+ outer = v
+ inner = 0
elif self.__position == 'RELATIVE':
- outer = self.blend(outer, v * self.__ratio)
- inner = self.blend(inner, v * (1 - self.__ratio))
+ outer = v * self.__ratio
+ inner = v - outer
else:
raise ValueError("unknown thickness position: " + self.__position)
return outer, inner
@@ -168,8 +169,8 @@ class BaseThicknessShader(StrokeShader, ThicknessModifierMixIn):
StrokeShader.__init__(self)
ThicknessModifierMixIn.__init__(self)
if position == 'CENTER':
- self.__outer = thickness / 2
- self.__inner = thickness / 2
+ self.__outer = thickness * 0.5
+ self.__inner = thickness - self.__outer
elif position == 'INSIDE':
self.__outer = 0
self.__inner = thickness
@@ -178,7 +179,7 @@ class BaseThicknessShader(StrokeShader, ThicknessModifierMixIn):
self.__inner = 0
elif position == 'RELATIVE':
self.__outer = thickness * ratio
- self.__inner = thickness * (1 - ratio)
+ self.__inner = thickness - self.__outer
else:
raise ValueError("unknown thickness position: " + self.position)