[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