[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41450] branches/soc-2008-mxcurioni/ release/scripts/freestyle/style_modules/shaders.py: * Fix for stroke geometry shaders that did not update the 2D length after the

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Tue Nov 1 22:08:19 CET 2011


Revision: 41450
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41450
Author:   kjym3
Date:     2011-11-01 21:08:18 +0000 (Tue, 01 Nov 2011)
Log Message:
-----------
* 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.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py	2011-11-01 20:14:58 UTC (rev 41449)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py	2011-11-01 21:08:18 UTC (rev 41450)
@@ -608,6 +608,7 @@
 		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 @@
 		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 @@
 			-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 @@
 			dn.normalize()
 			newLast = pn+dn*float(self._l)	
 			vn.setPoint(newLast)
+		stroke.UpdateLength()
 
 normalInfo=Normal2DF0D()
 curvatureInfo=Curvature2DAngleF0D()
@@ -728,6 +732,7 @@
 				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 @@
 			v = it.getObject()
 			v.setAttribute(a)
 			it.increment()
+		stroke.UpdateLength()
 
 class pyTVertexRemoverShader(StrokeShader):
 	def getName(self):
@@ -777,6 +783,7 @@
 			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 @@
 			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 @@
 			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 @@
 			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 @@
 			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 @@
 				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 @@
 					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 @@
 					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):



More information about the Bf-blender-cvs mailing list