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-08-30 04:29:12 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-08-30 04:29:12 +0400
commitedde9f2666b6b2ccaf0e65fd6d6963a31ae00e9e (patch)
tree83ef4acb18abc6e88e67aad9ffa4fa467f2652c5 /release/scripts/freestyle/style_modules/parameter_editor.py
parent1c153b011d7bc2b8e6f2ff783b5f5617fadcd57c (diff)
Added an 'angle' parameter to the Perlin Noise 1D and 2D geometry modifiers
to specify a displacement direction in degrees.
Diffstat (limited to 'release/scripts/freestyle/style_modules/parameter_editor.py')
-rw-r--r--release/scripts/freestyle/style_modules/parameter_editor.py48
1 files changed, 44 insertions, 4 deletions
diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py
index 1525f411cf7..7d602d4e79e 100644
--- a/release/scripts/freestyle/style_modules/parameter_editor.py
+++ b/release/scripts/freestyle/style_modules/parameter_editor.py
@@ -419,6 +419,46 @@ class SinusDisplacementShader(StrokeShader):
n = n * self._amplitude * math.cos(distance / self._wavelength * 2 * math.pi + self._phase)
v.setPoint(p + n)
+class PerlinNoise1DShader(StrokeShader):
+ def __init__(self, freq = 10, amp = 10, oct = 4, angle = 45, seed = -1):
+ StrokeShader.__init__(self)
+ self.__noise = Noise(seed)
+ self.__freq = freq
+ self.__amp = amp
+ self.__oct = oct
+ theta = pi * angle / 180.0
+ self.__dir = Vector([cos(theta), sin(theta)])
+ def getName(self):
+ return "PerlinNoise1DShader"
+ def shade(self, stroke):
+ it = stroke.strokeVerticesBegin()
+ while not it.isEnd():
+ v = it.getObject()
+ i = v.getProjectedX() + v.getProjectedY()
+ nres = self.__noise.turbulence1(i, self.__freq, self.__amp, self.__oct)
+ v.setPoint(v.getPoint() + nres * self.__dir)
+ it.increment()
+
+class PerlinNoise2DShader(StrokeShader):
+ def __init__(self, freq = 10, amp = 10, oct = 4, angle = 45, seed = -1):
+ StrokeShader.__init__(self)
+ self.__noise = Noise(seed)
+ self.__freq = freq
+ self.__amp = amp
+ self.__oct = oct
+ theta = pi * angle / 180.0
+ self.__dir = Vector([cos(theta), sin(theta)])
+ def getName(self):
+ return "PerlinNoise2DShader"
+ def shade(self, stroke):
+ it = stroke.strokeVerticesBegin()
+ while not it.isEnd():
+ v = it.getObject()
+ vec = Vector([v.getProjectedX(), v.getProjectedY()])
+ nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct)
+ v.setPoint(v.getPoint() + nres * self.__dir)
+ it.increment()
+
# Predicates and helper functions
class QuantitativeInvisibilityRangeUP1D(UnaryPredicate1D):
@@ -836,11 +876,11 @@ def process(layer_name, lineset_name):
shaders_list.append(SpatialNoiseShader(
m.amplitude, m.scale, m.octaves, m.smooth, m.pure_random))
elif m.type == "PERLIN_NOISE_1D":
- shaders_list.append(pyPerlinNoise1DShader(
- m.frequency, m.amplitude, m.octaves, _seed.get(m.seed)))
+ shaders_list.append(PerlinNoise1DShader(
+ m.frequency, m.amplitude, m.octaves, m.angle, _seed.get(m.seed)))
elif m.type == "PERLIN_NOISE_2D":
- shaders_list.append(pyPerlinNoise2DShader(
- m.frequency, m.amplitude, m.octaves, _seed.get(m.seed)))
+ shaders_list.append(PerlinNoise2DShader(
+ m.frequency, m.amplitude, m.octaves, m.angle, _seed.get(m.seed)))
elif m.type == "BACKBONE_STRETCHER":
shaders_list.append(BackboneStretcherShader(
m.amount))