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-11-02 01:08:18 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-11-02 01:08:18 +0400
commitea11efb082ccc4449db3c91f71ae623c29a88c51 (patch)
tree7fe185f26f6f9cdd33ef83a52a83c969afdc1906 /release/scripts/freestyle/style_modules
parentc72376fc04370b1c320f60aca03179934a720dbb (diff)
* Fix for stroke geometry shaders that did not update the 2D length after the
modifications of stroke vertices. * Fix for a bug in pyBluePrintCirclesShader that did not check the end of iteration over stroke vertices. * Fix for stroke vertex removal during iteration over stroke vertices in pyBluePrintCirclesShader, pyBluePrintEllipsesShader, pyBluePrintSquaresShader, and pyBluePrintDirectedSquaresShader.
Diffstat (limited to 'release/scripts/freestyle/style_modules')
-rwxr-xr-xrelease/scripts/freestyle/style_modules/shaders.py36
1 files changed, 31 insertions, 5 deletions
diff --git a/release/scripts/freestyle/style_modules/shaders.py b/release/scripts/freestyle/style_modules/shaders.py
index f95293b4b46..b8271820ce6 100755
--- a/release/scripts/freestyle/style_modules/shaders.py
+++ b/release/scripts/freestyle/style_modules/shaders.py
@@ -608,6 +608,7 @@ class pyBackboneStretcherShader(StrokeShader):
newLast = pn+dn*float(self._l)
v0.setPoint(newFirst)
vn.setPoint(newLast)
+ stroke.UpdateLength()
class pyLengthDependingBackboneStretcherShader(StrokeShader):
def __init__(self, l):
@@ -641,6 +642,7 @@ class pyLengthDependingBackboneStretcherShader(StrokeShader):
newLast = pn+dn*float(stretch)
v0.setPoint(newFirst)
vn.setPoint(newLast)
+ stroke.UpdateLength()
## Shader to replace a stroke by its corresponding tangent
@@ -669,6 +671,7 @@ class pyGuidingLineShader(StrokeShader):
-t*(itmiddle.getObject().u()-it.getObject().u()))
it.decrement()
it.getObject().setPoint(itmiddle.getObject().getPoint()-t*(itmiddle.getObject().u())) ## first vertex
+ stroke.UpdateLength()
class pyBackboneStretcherNoCuspShader(StrokeShader):
@@ -703,6 +706,7 @@ class pyBackboneStretcherNoCuspShader(StrokeShader):
dn.normalize()
newLast = pn+dn*float(self._l)
vn.setPoint(newLast)
+ stroke.UpdateLength()
normalInfo=Normal2DF0D()
curvatureInfo=Curvature2DAngleF0D()
@@ -728,6 +732,7 @@ class pyDiffusion2Shader(StrokeShader):
p2 = self._normalInfo(it.castToInterface0DIterator())*self._lambda*self._curvatureInfo(it.castToInterface0DIterator())
v.setPoint(p1+p2)
it.increment()
+ stroke.UpdateLength()
class pyTipRemoverShader(StrokeShader):
def __init__(self, l):
@@ -762,6 +767,7 @@ class pyTipRemoverShader(StrokeShader):
v = it.getObject()
v.setAttribute(a)
it.increment()
+ stroke.UpdateLength()
class pyTVertexRemoverShader(StrokeShader):
def getName(self):
@@ -777,6 +783,7 @@ class pyTVertexRemoverShader(StrokeShader):
stroke.RemoveVertex(it.getObject())
if(predTVertex(itlast) == 1):
stroke.RemoveVertex(itlast.getObject())
+ stroke.UpdateLength()
class pyExtremitiesOrientationShader(StrokeShader):
def __init__(self, x1,y1,x2=0,y2=0):
@@ -911,6 +918,7 @@ class pySinusDisplacementShader(StrokeShader):
v.setPoint(p+n)
#v.setPoint(v.getPoint()+n*a*cos(f*v.u()))
it.increment()
+ stroke.UpdateLength()
class pyPerlinNoise1DShader(StrokeShader):
def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1):
@@ -929,6 +937,7 @@ class pyPerlinNoise1DShader(StrokeShader):
nres = self.__noise.turbulence1(i, self.__freq, self.__amp, self.__oct)
v.setPoint(v.getProjectedX() + nres, v.getProjectedY() + nres)
it.increment()
+ stroke.UpdateLength()
class pyPerlinNoise2DShader(StrokeShader):
def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1):
@@ -947,6 +956,7 @@ class pyPerlinNoise2DShader(StrokeShader):
nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct)
v.setPoint(v.getProjectedX() + nres, v.getProjectedY() + nres)
it.increment()
+ stroke.UpdateLength()
class pyBluePrintCirclesShader(StrokeShader):
def __init__(self, turns = 1):
@@ -987,15 +997,19 @@ class pyBluePrintCirclesShader(StrokeShader):
center.x = center.x + randint(-5, 5)
center.y = center.y + randint(-5, 5)
i = 0
- while i < sv_nb:
+ while i < sv_nb and it.isEnd() == 0:
p_new.x = center.x + radius * cos(2 * pi * float(i) / float(sv_nb - 1))
p_new.y = center.y + radius * sin(2 * pi * float(i) / float(sv_nb - 1))
it.getObject().setPoint(p_new)
i = i + 1
it.increment()
+ verticesToRemove = []
while it.isEnd() == 0:
- stroke.RemoveVertex(it.getObject())
+ verticesToRemove.append(it.getObject())
it.increment()
+ for sv in verticesToRemove:
+ stroke.RemoveVertex(sv)
+ stroke.UpdateLength()
class pyBluePrintEllipsesShader(StrokeShader):
def __init__(self, turns = 1):
@@ -1039,9 +1053,13 @@ class pyBluePrintEllipsesShader(StrokeShader):
it.getObject().setPoint(p_new)
i = i + 1
it.increment()
+ verticesToRemove = []
while it.isEnd() == 0:
- stroke.RemoveVertex(it.getObject())
+ verticesToRemove.append(it.getObject())
it.increment()
+ for sv in verticesToRemove:
+ stroke.RemoveVertex(sv)
+ stroke.UpdateLength()
class pyBluePrintSquaresShader(StrokeShader):
@@ -1118,9 +1136,13 @@ class pyBluePrintSquaresShader(StrokeShader):
visible = 1
i = i + 1
it.increment()
+ verticesToRemove = []
while it.isEnd() == 0:
- stroke.RemoveVertex(it.getObject())
+ verticesToRemove.append(it.getObject())
it.increment()
+ for sv in verticesToRemove:
+ stroke.RemoveVertex(sv)
+ stroke.UpdateLength()
class pyBluePrintDirectedSquaresShader(StrokeShader):
@@ -1223,9 +1245,13 @@ class pyBluePrintDirectedSquaresShader(StrokeShader):
visible = 1
i = i + 1
it.increment()
+ verticesToRemove = []
while it.isEnd() == 0:
- stroke.RemoveVertex(it.getObject())
+ verticesToRemove.append(it.getObject())
it.increment()
+ for sv in verticesToRemove:
+ stroke.RemoveVertex(sv)
+ stroke.UpdateLength()
class pyModulateAlphaShader(StrokeShader):
def __init__(self, min = 0, max = 1):