forked from bartvdbraak/blender
82 lines
2.7 KiB
Python
Executable File
82 lines
2.7 KiB
Python
Executable File
from freestyle_init import *
|
|
|
|
|
|
class pyInverseCurvature2DAngleF0D(UnaryFunction0DDouble):
|
|
def getName(self):
|
|
return "InverseCurvature2DAngleF0D"
|
|
|
|
def __call__(self, inter):
|
|
func = Curvature2DAngleF0D()
|
|
c = func(inter)
|
|
return (3.1415 - c)
|
|
|
|
class pyCurvilinearLengthF0D(UnaryFunction0DDouble):
|
|
def getName(self):
|
|
return "CurvilinearLengthF0D"
|
|
|
|
def __call__(self, inter):
|
|
i0d = inter.getObject()
|
|
s = i0d.getExactTypeName()
|
|
if (string.find(s, "CurvePoint") == -1):
|
|
print("CurvilinearLengthF0D: not implemented yet for", s)
|
|
return -1
|
|
cp = castToCurvePoint(i0d)
|
|
return cp.t2d()
|
|
|
|
## estimate anisotropy of density
|
|
class pyDensityAnisotropyF0D(UnaryFunction0DDouble):
|
|
def __init__(self,level):
|
|
UnaryFunction0DDouble.__init__(self)
|
|
self.IsoDensity = ReadCompleteViewMapPixelF0D(level)
|
|
self.d0Density = ReadSteerableViewMapPixelF0D(0, level)
|
|
self.d1Density = ReadSteerableViewMapPixelF0D(1, level)
|
|
self.d2Density = ReadSteerableViewMapPixelF0D(2, level)
|
|
self.d3Density = ReadSteerableViewMapPixelF0D(3, level)
|
|
def getName(self):
|
|
return "pyDensityAnisotropyF0D"
|
|
def __call__(self, inter):
|
|
c_iso = self.IsoDensity(inter)
|
|
c_0 = self.d0Density(inter)
|
|
c_1 = self.d1Density(inter)
|
|
c_2 = self.d2Density(inter)
|
|
c_3 = self.d3Density(inter)
|
|
cMax = max( max(c_0,c_1), max(c_2,c_3))
|
|
cMin = min( min(c_0,c_1), min(c_2,c_3))
|
|
if ( c_iso == 0 ):
|
|
v = 0
|
|
else:
|
|
v = (cMax-cMin)/c_iso
|
|
return (v)
|
|
|
|
## Returns the gradient vector for a pixel
|
|
## l
|
|
## the level at which one wants to compute the gradient
|
|
class pyViewMapGradientVectorF0D(UnaryFunction0DVec2f):
|
|
def __init__(self, l):
|
|
UnaryFunction0DVec2f.__init__(self)
|
|
self._l = l
|
|
self._step = pow(2,self._l)
|
|
def getName(self):
|
|
return "pyViewMapGradientVectorF0D"
|
|
def __call__(self, iter):
|
|
p = iter.getObject().getPoint2D()
|
|
gx = ReadCompleteViewMapPixelCF(self._l, int(p.x()+self._step), int(p.y()))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()))
|
|
gy = ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()))
|
|
return Vector(gx, gy)
|
|
|
|
class pyViewMapGradientNormF0D(UnaryFunction0DDouble):
|
|
def __init__(self, l):
|
|
UnaryFunction0DDouble.__init__(self)
|
|
self._l = l
|
|
self._step = pow(2,self._l)
|
|
def getName(self):
|
|
return "pyViewMapGradientNormF0D"
|
|
def __call__(self, iter):
|
|
p = iter.getObject().getPoint2D()
|
|
gx = ReadCompleteViewMapPixelCF(self._l, int(p.x()+self._step), int(p.y()))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()))
|
|
gy = ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()))
|
|
grad = Vector(gx, gy)
|
|
return grad.length
|
|
|
|
|