[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54127] branches/soc-2008-mxcurioni: Freestyle Python API improvements - part 1.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sun Jan 27 21:17:51 CET 2013


Revision: 54127
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54127
Author:   kjym3
Date:     2013-01-27 20:17:49 +0000 (Sun, 27 Jan 2013)
Log Message:
-----------
Freestyle Python API improvements - part 1.

* The API syntax of StrokeVertex and StrokeAttribute was updated by means of getter/setter
properties instead of class methods.  Python style modules (including the Parameter Editor
implementation) were updated accordingly.

* Code clean-up was done for a few Python style modules, mostly by removing duplicated
definitions of stroke shaders and fixing indentation.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/anisotropic_diffusion.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/curvature2d.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/sketchy_topology_broken.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/thickness_fof_depth_discontinuity.py
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.h
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Interface0D.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_StrokeAttribute.h
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.h

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/anisotropic_diffusion.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/anisotropic_diffusion.py	2013-01-27 19:57:47 UTC (rev 54126)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/anisotropic_diffusion.py	2013-01-27 20:17:49 UTC (rev 54127)
@@ -27,48 +27,21 @@
 
 from freestyle_init import *
 from logical_operators import *
-from PredicatesB1D import *
 from shaders import *
-from PredicatesU0D import *
-from math import *
 
-## thickness modifiers
+# pyDiffusion2Shader parameters
+offset = 0.25
+nbIter = 30
 
-normalInfo=Normal2DF0D()
-curvatureInfo=Curvature2DAngleF0D()
-
-def edgestopping(x, sigma): 
-	return exp(- x*x/(2*sigma*sigma))
-
-class pyDiffusion2Shader(StrokeShader):
-	def __init__(self, lambda1, nbIter):
-		StrokeShader.__init__(self)
-		self._lambda = lambda1
-		self._nbIter = nbIter
-	def getName(self):
-		return "pyDiffusionShader"
-	def shade(self, stroke):
-		for i in range (1, self._nbIter):
-			it = stroke.strokeVerticesBegin()
-			while it.isEnd() == 0:
-				v=it.getObject()
-				p1 = v.getPoint()
-				p2 = normalInfo(it.castToInterface0DIterator())*self._lambda*curvatureInfo(it.castToInterface0DIterator())
-				v.setPoint(p1+p2)
-				it.increment()
-
 upred = AndUP1D(QuantitativeInvisibilityUP1D(0), ExternalContourUP1D())
 Operators.select( upred )
-bpred = TrueBP1D();
+bpred = TrueBP1D()
 Operators.bidirectionalChain(ChainPredicateIterator(upred, bpred), NotUP1D(upred) )
-shaders_list = 	[
-		ConstantThicknessShader(4),
-		StrokeTextureShader("smoothAlpha.bmp", Stroke.OPAQUE_MEDIUM, 0),
-		SamplingShader(2),
-		pyDiffusion2Shader(-0.03, 30), 
-		IncreasingColorShader(1.0,0.0,0.0,1, 0, 1, 0, 1)
-		]
+shaders_list = [
+    ConstantThicknessShader(4),
+    StrokeTextureShader("smoothAlpha.bmp", Stroke.OPAQUE_MEDIUM, 0),
+    SamplingShader(2),
+    pyDiffusion2Shader(offset, nbIter), 
+    IncreasingColorShader(1, 0, 0, 1, 0, 1, 0, 1)
+    ]
 Operators.create(TrueUP1D(), shaders_list)
-
-
-

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/curvature2d.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/curvature2d.py	2013-01-27 19:57:47 UTC (rev 54126)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/curvature2d.py	2013-01-27 20:17:49 UTC (rev 54127)
@@ -28,33 +28,13 @@
 
 from freestyle_init import *
 from logical_operators import *
-from PredicatesB1D import *
 from shaders import *
 
-class py2DCurvatureColorShader(StrokeShader):
-	def getName(self):
-		return "py2DCurvatureColorShader"
-
-	def shade(self, stroke):
-		it = stroke.strokeVerticesBegin()
-		it_end = stroke.strokeVerticesEnd()
-		func = Curvature2DAngleF0D()
-		while it.isEnd() == 0:
-			it0D = it.castToInterface0DIterator()
-			sv = it.getObject()
-			att = sv.attribute()
-			c = func(it0D)
-			if (c<0):
- 				print("negative 2D curvature")
-			color = 10.0 * c/3.1415
-			att.setColor(color,color,color);
-			it.increment()
-
 Operators.select(QuantitativeInvisibilityUP1D(0))
 Operators.bidirectionalChain(ChainSilhouetteIterator(), NotUP1D(QuantitativeInvisibilityUP1D(0)))
-shaders_list = 	[
-		StrokeTextureShader("smoothAlpha.bmp", Stroke.OPAQUE_MEDIUM, 0),
-		ConstantThicknessShader(5),
-		py2DCurvatureColorShader()
-		]
+shaders_list = [
+    StrokeTextureShader("smoothAlpha.bmp", Stroke.OPAQUE_MEDIUM, 0),
+    ConstantThicknessShader(5),
+    py2DCurvatureColorShader()
+    ]
 Operators.create(TrueUP1D(), shaders_list)

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py	2013-01-27 19:57:47 UTC (rev 54126)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py	2013-01-27 20:17:49 UTC (rev 54127)
@@ -109,7 +109,7 @@
                 outer, inner = inner, outer
         else:
             outer = inner = (outer + inner) / 2
-        sv.attribute().setThickness(outer, inner)
+        sv.attribute.thickness = (outer, inner)
 
 class ThicknessBlenderMixIn(ThicknessModifierMixIn):
     def __init__(self, position, ratio):
@@ -171,7 +171,7 @@
     distance = 0.0
     it = stroke.strokeVerticesBegin()
     while not it.isEnd():
-        p = it.getObject().getPoint()
+        p = it.getObject().point
         if not it.isBegin():
             distance += (prev - p).length
         prev = p
@@ -184,22 +184,20 @@
         return "ColorAlongStrokeShader"
     def shade(self, stroke):
         for it, t in iter_t2d_along_stroke(stroke):
-            attr = it.getObject().attribute()
-            a = attr.getColorRGB()
+            sv = it.getObject()
+            a = sv.attribute.color
             b = self.evaluate(t)
-            c = self.blend_ramp(a, b)
-            attr.setColor(c)
+            sv.attribute.color = self.blend_ramp(a, b)
 
 class AlphaAlongStrokeShader(CurveMappingModifier):
     def getName(self):
         return "AlphaAlongStrokeShader"
     def shade(self, stroke):
         for it, t in iter_t2d_along_stroke(stroke):
-            attr = it.getObject().attribute()
-            a = attr.getAlpha()
+            sv = it.getObject()
+            a = sv.attribute.alpha
             b = self.evaluate(t)
-            c = self.blend(a, b)
-            attr.setAlpha(c)
+            sv.attribute.alpha = self.blend(a, b)
 
 class ThicknessAlongStrokeShader(ThicknessBlenderMixIn, CurveMappingModifier):
     def __init__(self, thickness_position, thickness_ratio,
@@ -213,7 +211,7 @@
     def shade(self, stroke):
         for it, t in iter_t2d_along_stroke(stroke):
             sv = it.getObject()
-            a = sv.attribute().getThicknessRL()
+            a = sv.attribute.thickness
             b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
             c = self.blend_thickness(a[0], a[1], b)
             self.set_thickness(sv, c[0], c[1])
@@ -244,11 +242,10 @@
         return "ColorDistanceFromCameraShader"
     def shade(self, stroke):
         for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
-            attr = it.getObject().attribute()
-            a = attr.getColorRGB()
+            sv = it.getObject()
+            a = sv.attribute.color
             b = self.evaluate(t)
-            c = self.blend_ramp(a, b)
-            attr.setColor(c)
+            sv.attribute.color = self.blend_ramp(a, b)
 
 class AlphaDistanceFromCameraShader(CurveMappingModifier):
     def __init__(self, blend, influence, mapping, invert, curve, range_min, range_max):
@@ -259,11 +256,10 @@
         return "AlphaDistanceFromCameraShader"
     def shade(self, stroke):
         for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
-            attr = it.getObject().attribute()
-            a = attr.getAlpha()
+            sv = it.getObject()
+            a = sv.attribute.alpha
             b = self.evaluate(t)
-            c = self.blend(a, b)
-            attr.setAlpha(c)
+            sv.attribute.alpha = self.blend(a, b)
 
 class ThicknessDistanceFromCameraShader(ThicknessBlenderMixIn, CurveMappingModifier):
     def __init__(self, thickness_position, thickness_ratio,
@@ -279,7 +275,7 @@
     def shade(self, stroke):
         for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
             sv = it.getObject()
-            a = sv.attribute().getThicknessRL()
+            a = sv.attribute.thickness
             b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
             c = self.blend_thickness(a[0], a[1], b)
             self.set_thickness(sv, c[0], c[1])
@@ -317,11 +313,10 @@
         if self.__target is None:
             return
         for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
-            attr = it.getObject().attribute()
-            a = attr.getColorRGB()
+            sv = it.getObject()
+            a = sv.attribute.color
             b = self.evaluate(t)
-            c = self.blend_ramp(a, b)
-            attr.setColor(c)
+            sv.attribute.color = self.blend_ramp(a, b)
 
 class AlphaDistanceFromObjectShader(CurveMappingModifier):
     def __init__(self, blend, influence, mapping, invert, curve, target, range_min, range_max):
@@ -335,11 +330,10 @@
         if self.__target is None:
             return
         for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
-            attr = it.getObject().attribute()
-            a = attr.getAlpha()
+            sv = it.getObject()
+            a = sv.attribute.alpha
             b = self.evaluate(t)
-            c = self.blend(a, b)
-            attr.setAlpha(c)
+            sv.attribute.alpha = self.blend(a, b)
 
 class ThicknessDistanceFromObjectShader(ThicknessBlenderMixIn, CurveMappingModifier):
     def __init__(self, thickness_position, thickness_ratio,
@@ -358,7 +352,7 @@
             return
         for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
             sv = it.getObject()
-            a = sv.attribute().getThicknessRL()
+            a = sv.attribute.thickness
             b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
             c = self.blend_thickness(a[0], a[1], b)
             self.set_thickness(sv, c[0], c[1])
@@ -429,17 +423,15 @@
     def shade(self, stroke):
         if self.__material_attr in ["DIFF", "SPEC"] and not self.__use_ramp:
             for it, b in iter_material_color(stroke, self.__material_attr):
-                attr = it.getObject().attribute()
-                a = attr.getColorRGB()
-                c = self.blend_ramp(a, b)
-                attr.setColor(c)
+                sv = it.getObject()
+                a = sv.attribute.color
+                sv.attribute.color = self.blend_ramp(a, b)
         else:
             for it, t in iter_material_value(stroke, self.__material_attr):
-                attr = it.getObject().attribute()
-                a = attr.getColorRGB()
+                sv = it.getObject()

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list