Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormeta-androcto <meta.androcto1@gmail.com>2016-08-17 09:39:25 +0300
committermeta-androcto <meta.androcto1@gmail.com>2016-08-17 09:39:25 +0300
commit67616315fc3c27ee2f646ea2bb3b104bd183600d (patch)
treec336411e7a12dd0f0140e406b2f00ab2e16abb2b
parent37939a32083be2ca80b296bd8b030bffaf65928d (diff)
ant landscape: code cleanup, fix for marble noise thanks @jimmyhazevoet
-rw-r--r--add_mesh_ant_landscape.py582
1 files changed, 303 insertions, 279 deletions
diff --git a/add_mesh_ant_landscape.py b/add_mesh_ant_landscape.py
index bd528b97..528c551a 100644
--- a/add_mesh_ant_landscape.py
+++ b/add_mesh_ant_landscape.py
@@ -26,8 +26,10 @@ bl_info = {
"warning": "", # used for warning icon and text in addons panel
"wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
"Scripts/Add_Mesh/ANT_Landscape",
+ "tracker_url": "https://developer.blender.org/maniphest/task/create/?project=3&type=Bug",
"category": "Add Mesh",
- }
+}
+
"""
Another Noise Tool: Landscape mesh generator
@@ -94,71 +96,79 @@ def create_mesh_object(context, verts, edges, faces, name):
from bpy_extras import object_utils
return object_utils.object_data_add(context, mesh, operator=None)
-###------------------------------------------------------------
-###------------------------------------------------------------
+
+# ------------------------------------------------------------
# some functions for marble_noise
def sin_bias(a):
return 0.5 + 0.5 * sin(a)
+
def tri_bias(a):
b = 2 * pi
- a = 1 - 2 * abs(floor((a * (1/b))+0.5) - (a*(1/b)))
+ a = 1 - 2 * abs(floor((a * (1 / b)) + 0.5) - (a * (1 / b)))
return a
+
def saw_bias(a):
b = 2 * pi
- n = int(a/b)
+ n = int(a / b)
a -= n * b
if a < 0: a += b
return a / b
+
def soft(a):
return a
+
def sharp(a):
return a**0.5
+
def sharper(a):
return sharp(sharp(a))
-def shapes(x,y,shape=0):
+
+def shapes(x, y, shape=0):
if shape == 1:
# ring
x = x*2
y = y*2
- s = (-cos(x**2+y**2)/(x**2+y**2+0.5))
+ s = (-cos(x**2 + y**2) / (x**2 + y**2 + 0.5))
elif shape == 2:
# swirl
- x = x*2
- y = y*2
- s = ((x*sin( x*x+y*y) + y*cos(x*x+y*y)) / (x**2+y**2+0.5))
+ x = x * 2
+ y = y * 2
+ s = ((x * sin(x * x + y * y) + y * cos(x * x + y * y)) / (x**2 + y**2 + 0.5))
elif shape == 3:
# bumps
- x = x*2
- y = y*2
- s = ((cos( x*pi) + cos(y*pi))-0.5)
+ x = x * 2
+ y = y * 2
+ s = ((cos(x * pi) + cos(y * pi)) - 0.5)
elif shape == 4:
# y grad.
- s = (y*pi)
+ s = (y * pi)
elif shape == 5:
# x grad.
- s = (x*pi)
+ s = (x * pi)
else:
- # marble
- s = ((x+y)*5)
+ # marble default
+ s = ((x + y) * 5)
+
return s
+
# marble_noise
-def marble_noise(x,y,z, origin, size, shape, bias, sharpnes, turb, depth, hard, basis):
+def marble_noise(x, y, z, origin, size, shape, bias, sharpnes, turb, depth, hard, basis):
x = x / size
y = y / size
z = z / size
- s = shapes(x,y,shape)
+ s = shapes(x, y, shape)
x += origin[0]
y += origin[1]
z += origin[2]
- value = s + turb * turbulence_vector((x,y,z), depth, hard, basis)[0]
+ value = s + turb * turbulence_vector((x, y, z), depth, hard, basis)[0]
if bias == 1:
value = tri_bias(value)
@@ -176,23 +186,26 @@ def marble_noise(x,y,z, origin, size, shape, bias, sharpnes, turb, depth, hard,
return value
-###------------------------------------------------------------
+
+# ------------------------------------------------------------
# custom noise types
# shattered_hterrain:
-def shattered_hterrain(x,y,z, H, lacunarity, octaves, offset, distort, basis):
- d = (turbulence_vector((x, y, z), 6, 0, 0)[0] * 0.5 + 0.5)*distort*0.5
- t1 = (turbulence_vector((x+d, y+d, z), 0, 0, 7)[0] + 0.5)
- t2 = (hetero_terrain((x*2, y*2, z*2), H, lacunarity, octaves, offset, basis)*0.5)
- return ((t1*t2)+t2*0.5) * 0.5
+def shattered_hterrain(x, y, z, H, lacunarity, octaves, offset, distort, basis):
+ d = (turbulence_vector((x, y, z), 6, 0, 0)[0] * 0.5 + 0.5) * distort * 0.5
+ t1 = (turbulence_vector((x + d, y + d, z), 0, 0, 7)[0] + 0.5)
+ t2 = (hetero_terrain((x * 2, y * 2, z * 2), H, lacunarity, octaves, offset, basis) * 0.5)
+ return ((t1 * t2) + t2 * 0.5) * 0.5
+
# strata_hterrain
-def strata_hterrain(x,y,z, H, lacunarity, octaves, offset, distort, basis):
- value = hetero_terrain((x, y, z), H, lacunarity, octaves, offset, basis)*0.5
- steps = (sin( value*(distort*5)*pi) * (0.1/(distort*5)*pi))
- return (value * (1.0-0.5) + steps*0.5)
+def strata_hterrain(x, y, z, H, lacunarity, octaves, offset, distort, basis):
+ value = hetero_terrain((x, y, z), H, lacunarity, octaves, offset, basis) * 0.5
+ steps = (sin(value * (distort * 5) * pi) * (0.1 / (distort * 5) * pi))
+ return (value * (1.0 - 0.5) + steps * 0.5)
-# planet_noise by Farsthary: https://blenderartists.org/forum/showthread.php?202944-New-quot-Planet-quot-procedural-texture-by-Farsthary
+
+# planet_noise by Farsthary: https://farsthary.com/2010/11/24/new-planet-procedural-texture/
def planet_noise(coords, oct=6, hard=0, noisebasis=1, nabla=0.001):
x,y,z = coords
d = 0.001
@@ -200,49 +213,50 @@ def planet_noise(coords, oct=6, hard=0, noisebasis=1, nabla=0.001):
x = turbulence((x, y, z), oct, hard, noisebasis)
y = turbulence((x + offset, y , z), oct, hard, noisebasis)
z = turbulence((x, y + offset, z), oct, hard, noisebasis)
- xdy = x - turbulence((x, y + d, z), oct, hard, noisebasis)
- xdz = x - turbulence((x, y, z + d), oct, hard, noisebasis)
- ydx = y - turbulence((x + d, y, z), oct, hard, noisebasis)
- ydz = y - turbulence((x, y, z + d), oct, hard, noisebasis)
- zdx = z - turbulence((x + d, y, z), oct, hard, noisebasis)
- zdy = z - turbulence((x, y + d, z), oct, hard, noisebasis)
+ xdy = x-turbulence((x, y + d, z), oct, hard, noisebasis)
+ xdz = x-turbulence((x, y, z + d), oct, hard, noisebasis)
+ ydx = y-turbulence((x + d, y, z), oct, hard, noisebasis)
+ ydz = y-turbulence((x, y, z + d), oct, hard, noisebasis)
+ zdx = z-turbulence((x + d, y, z), oct, hard, noisebasis)
+ zdy = z-turbulence((x, y + d, z), oct, hard, noisebasis)
return (zdy - ydz), (zdx - xdz), (ydx - xdy)
-###------------------------------------------------------------
+
+# ------------------------------------------------------------
# landscape_gen
-def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,1.0,2.0,1.0,2.0,0,0,0, 1.0,0.0,1,0.0,1.0,0,0,0,0.0,0.0]):
-
- # options
- rseed = options[0]
- nsize = options[1]
- ntype = options[2]
- nbasis = int(options[3][0])
- vlbasis = int(options[4][0])
+def landscape_gen(x, y, z, falloffsize, options):
+
+ # options = [0, 1.0, 'multi_fractal', 0, 0, 1.0, 0, 6, 1.0, 2.0, 1.0, 2.0, 0, 0, 0, 1.0, 0.0, 1, 0.0, 1.0, 0, 0, 0, 0.0, 0.0]
+ rseed = options[0]
+ nsize = options[1]
+ ntype = options[2]
+ nbasis = int(options[3][0])
+ vlbasis = int(options[4][0])
distortion = options[5]
- hardnoise = options[6]
- depth = options[7]
- dimension = options[8]
+ hardnoise = options[6]
+ depth = options[7]
+ dimension = options[8]
lacunarity = options[9]
- offset = options[10]
- gain = options[11]
- marblebias = int(options[12][0])
+ offset = options[10]
+ gain = options[11]
+ marblebias = int(options[12][0])
marblesharpnes = int(options[13][0])
- marbleshape = int(options[14][0])
- invert = options[15]
- height = options[16]
+ marbleshape = int(options[14][0])
+ invert = options[15]
+ height = options[16]
heightoffset = options[17]
- falloff = int(options[18][0])
- sealevel = options[19]
- platlevel = options[20]
- strata = options[21]
- stratatype = options[22]
- sphere = options[23]
- x_offset = options[24]
- y_offset = options[25]
+ falloff = int(options[18][0])
+ sealevel = options[19]
+ platlevel = options[20]
+ strata = options[21]
+ stratatype = options[22]
+ sphere = options[23]
+ x_offset = options[24]
+ y_offset = options[25]
# origin
if rseed == 0:
- origin = 0.0,0.0,0.0
+ origin = 0.0 + x_offset, 0.0 + y_offset, 0.0
origin_x = x_offset
origin_y = y_offset
origin_z = 0.0
@@ -250,6 +264,8 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
# randomise origin
seed_set(rseed)
origin = random_unit_vector()
+ origin[0] += x_offset
+ origin[1] += y_offset
origin_x = ((0.5 - origin[0]) * 1000.0) + x_offset
origin_y = ((0.5 - origin[1]) * 1000.0) + y_offset
origin_z = (0.5 - origin[2]) * 1000.0
@@ -286,7 +302,7 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
value = variable_lacunarity(ncoords, distortion, nbasis, vlbasis) + 0.5
elif ntype == 'marble_noise':
- value = marble_noise(ncoords[0]*2.0/falloffsize,ncoords[1]*2.0/falloffsize,ncoords[2]*2/falloffsize, origin, nsize, marbleshape, marblebias, marblesharpnes, distortion, depth, hardnoise, nbasis)
+ value = marble_noise(x * 2.0 / falloffsize, y * 2.0 / falloffsize, z * 2 / falloffsize, origin, nsize, marbleshape, marblebias, marblesharpnes, distortion, depth, hardnoise, nbasis)
elif ntype == 'shattered_hterrain':
value = shattered_hterrain(ncoords[0], ncoords[1], ncoords[2], dimension, lacunarity, depth, offset, distortion, nbasis)
@@ -295,13 +311,13 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
value = strata_hterrain(ncoords[0], ncoords[1], ncoords[2], dimension, lacunarity, depth, offset, distortion, nbasis)
elif ntype == 'planet_noise':
- value = planet_noise(ncoords, depth, hardnoise, nbasis)[2]*0.5+0.5
+ value = planet_noise(ncoords, depth, hardnoise, nbasis)[2] * 0.5 + 0.5
else:
value = 0.0
# adjust height
if invert !=0:
- value = (1-value) * height + heightoffset
+ value = (1 - value) * height + heightoffset
else:
value = value * height + heightoffset
@@ -309,16 +325,16 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
if sphere == 0: # no edge falloff if spherical
if falloff != 0:
fallofftypes = [0, hypot(x * x, y * y), hypot(x, y), abs(y), abs(x)]
- dist = fallofftypes[ falloff]
+ dist = fallofftypes[falloff]
if falloff ==1:
- radius = (falloffsize/2)**2
+ radius = (falloffsize / 2)**2
else:
- radius = falloffsize/2
+ radius = falloffsize / 2
value = value - sealevel
if(dist < radius):
dist = dist / radius
- dist = (dist * dist * (3-2 * dist))
+ dist = (dist * dist * (3 - 2 * dist))
value = (value - value * dist) + sealevel
else:
value = sealevel
@@ -329,16 +345,16 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
if stratatype == '1':
strata *= 2
- steps = (sin( value*strata*pi) * (0.1/strata*pi))
- value = (value * (1.0-0.5) + steps*0.5) * 2.0
+ steps = (sin(value * strata * pi) * (0.1 / strata * pi))
+ value = (value * (1.0 - 0.5) + steps * 0.5) * 2.0
elif stratatype == '2':
- steps = -abs( sin(value*(strata)*pi) * (0.1/(strata)*pi))
- value =(value * (1.0-0.5) + steps*0.5) * 2.0
+ steps = -abs(sin(value * strata * pi) * (0.1 / strata * pi))
+ value =(value * (1.0 - 0.5) + steps * 0.5) * 2.0
elif stratatype == '3':
- steps = abs(sin(value*(strata)*pi) * (0.1/(strata)*pi))
- value =(value * (1.0-0.5) + steps*0.5) * 2.0
+ steps = abs(sin(value * strata * pi) * (0.1 / strata * pi))
+ value =(value * (1.0 - 0.5) + steps * 0.5) * 2.0
else:
value = value
@@ -351,7 +367,8 @@ def landscape_gen(x,y,z,falloffsize,options=[0,1.0,'multi_fractal', 0,0,1.0,0,6,
return value
-###------------------------------------------------------------
+
+# ------------------------------------------------------------
# generate grid
def grid_gen(sub_d, size_me, options):
# mesh arrays
@@ -360,31 +377,32 @@ def grid_gen(sub_d, size_me, options):
# fill verts array
for i in range (0, sub_d):
- for j in range(0,sub_d):
- u = (i/(sub_d-1)-1/2)
- v = (j/(sub_d-1)-1/2)
- x = size_me*u
- y = size_me*v
- z = landscape_gen(x,y,0.0,size_me,options)
- vert = (x,y,z)
+ for j in range(0, sub_d):
+ u = (i / (sub_d - 1) - 1 / 2)
+ v = (j / (sub_d - 1) - 1 / 2)
+ x = size_me * u
+ y = size_me * v
+ z = landscape_gen(x, y, 0.0, size_me, options)
+ vert = (x, y, z)
verts.append(vert)
# fill faces array
count = 0
- for i in range (0, sub_d *(sub_d-1)):
- if count < sub_d-1:
- A = i+1
+ for i in range (0, sub_d*(sub_d - 1)):
+ if count < sub_d - 1:
+ A = i + 1
B = i
- C = (i+sub_d)
- D = (i+sub_d)+1
- face = (A,B,C,D)
+ C = (i + sub_d)
+ D = (i + sub_d) + 1
+ face = (A, B, C, D)
faces.append(face)
count = count + 1
else:
count = 0
-
+
return verts, faces
+
# generate sphere
def sphere_gen(sub_d, size_me, options):
# mesh arrays
@@ -393,32 +411,33 @@ def sphere_gen(sub_d, size_me, options):
# fill verts array
for i in range (0, sub_d):
- for j in range(0,sub_d):
- u = sin(j*pi*2/(sub_d-1)) * cos(-pi/2+i*pi/(sub_d-1)) * size_me/2
- v = cos(j*pi*2/(sub_d-1)) * cos(-pi/2+i*pi/(sub_d-1)) * size_me/2
- w = sin(-pi/2+i*pi/(sub_d-1)) * size_me/2
- h = landscape_gen(u,v,w,size_me,options) / size_me
- u,v,w = u+u*h, v+v*h, w+w*h
- vert = (u,v,w)
+ for j in range(0, sub_d):
+ u = sin(j * pi * 2 / (sub_d - 1)) * cos(-pi / 2 + i * pi / (sub_d - 1)) * size_me / 2
+ v = cos(j * pi * 2 / (sub_d - 1)) * cos(-pi / 2 + i * pi / (sub_d - 1)) * size_me / 2
+ w = sin(-pi / 2 + i * pi / (sub_d - 1)) * size_me / 2
+ h = landscape_gen(u, v, w, size_me, options) / size_me
+ u,v,w = u + u * h, v + v * h, w + w * h
+ vert = (u, v, w)
verts.append(vert)
# fill faces array
count = 0
- for i in range (0, sub_d *(sub_d-1)):
- if count < sub_d-1:
- A = i+1
+ for i in range (0, sub_d * (sub_d - 1)):
+ if count < sub_d - 1:
+ A = i + 1
B = i
- C = (i+sub_d)
- D = (i+sub_d)+1
- face = (A,B,C,D)
+ C = (i + sub_d)
+ D = (i + sub_d) + 1
+ face = (A, B, C, D)
faces.append(face)
count = count + 1
else:
count = 0
-
+
return verts, faces
-###------------------------------------------------------------
+
+# ------------------------------------------------------------
# Add landscape
class landscape_add(bpy.types.Operator):
"""Add a landscape mesh"""
@@ -429,219 +448,220 @@ class landscape_add(bpy.types.Operator):
# properties
AutoUpdate = BoolProperty(name="Mesh update",
- default=True,
- description="Update mesh")
+ default = True,
+ description = "Update mesh")
SphereMesh = BoolProperty(name="Sphere",
- default=False,
- description="Generate Sphere mesh")
+ default = False,
+ description = "Generate Sphere mesh")
SmoothMesh = BoolProperty(name="Smooth",
- default=True,
- description="Shade smooth")
+ default = True,
+ description = "Shade smooth")
Subdivision = IntProperty(name="Subdivisions",
- min=4,
- max=6400,
- default=128,
- description="Mesh x y subdivisions")
+ min = 4,
+ max = 6400,
+ default = 128,
+ description = "Mesh x y subdivisions")
MeshSize = FloatProperty(name="Mesh Size",
- min=0.01,
- max=100000.0,
- default=2.0,
- description="Mesh size")
+ min = 0.01,
+ max = 100000.0,
+ default = 2.0,
+ description = "Mesh size")
XOffset = FloatProperty(name="X Offset",
- default=0.0,
- description="X Offset")
+ default = 0.0,
+ description = "X Offset")
YOffset = FloatProperty(name="Y Offset",
- default=0.0,
- description="Y Offset")
+ default = 0.0,
+ description = "Y Offset")
RandomSeed = IntProperty(name="Random Seed",
- min=0,
- max=9999,
- default=0,
- description="Randomize noise origin")
+ min = 0,
+ max = 9999,
+ default = 0,
+ description = "Randomize noise origin")
NoiseSize = FloatProperty(name="Noise Size",
- min=0.01,
- max=10000.0,
- default=1.0,
- description="Noise size")
+ min = 0.01,
+ max = 10000.0,
+ default = 1.0,
+ description = "Noise size")
NoiseTypes = [
- ('multi_fractal',"multiFractal","multiFractal"),
- ('ridged_multi_fractal',"ridgedMFractal","ridgedMFractal"),
- ('hybrid_multi_fractal',"hybridMFractal","hybridMFractal"),
- ('hetero_terrain',"heteroTerrain","heteroTerrain"),
- ('fractal',"fBm","fBm"),
- ('turbulence_vector',"Turbulence","Turbulence"),
- ('variable_lacunarity',"Distorted Noise","Distorted Noise"),
- ('marble_noise',"Marble","Marble"),
- ('shattered_hterrain',"Shattered_hTerrain","Shattered_hTerrain"),
- ('strata_hterrain',"Strata_hTerrain","Strata_hTerrain"),
- ('planet_noise',"Planet_Noise","Planet_Noise")]
+ ('multi_fractal', "multiFractal", "multiFractal"),
+ ('ridged_multi_fractal', "ridgedMFractal", "ridgedMFractal"),
+ ('hybrid_multi_fractal', "hybridMFractal", "hybridMFractal"),
+ ('hetero_terrain', "heteroTerrain", "heteroTerrain"),
+ ('fractal', "fBm", "fBm"),
+ ('turbulence_vector', "Turbulence", "Turbulence"),
+ ('variable_lacunarity', "Distorted Noise", "Distorted Noise"),
+ ('marble_noise', "Marble", "Marble"),
+ ('shattered_hterrain', "Shattered_hTerrain", "Shattered_hTerrain"),
+ ('strata_hterrain', "Strata_hTerrain", "Strata_hTerrain"),
+ ('planet_noise', "Planet_Noise", "Planet_Noise")]
NoiseType = EnumProperty(name="Type",
- description="Noise type",
- items=NoiseTypes)
+ description = "Noise type",
+ items = NoiseTypes)
BasisTypes = [
- ("0","Blender","Blender"),
- ("1","Perlin","Perlin"),
- ("2","NewPerlin","NewPerlin"),
- ("3","Voronoi_F1","Voronoi_F1"),
- ("4","Voronoi_F2","Voronoi_F2"),
- ("5","Voronoi_F3","Voronoi_F3"),
- ("6","Voronoi_F4","Voronoi_F4"),
- ("7","Voronoi_F2-F1","Voronoi_F2-F1"),
- ("8","Voronoi Crackle","Voronoi Crackle"),
- ("9","Cellnoise","Cellnoise")]
+ ("0", "Blender", "Blender"),
+ ("1", "Perlin", "Perlin"),
+ ("2", "NewPerlin", "NewPerlin"),
+ ("3", "Voronoi_F1", "Voronoi_F1"),
+ ("4", "Voronoi_F2", "Voronoi_F2"),
+ ("5", "Voronoi_F3", "Voronoi_F3"),
+ ("6", "Voronoi_F4", "Voronoi_F4"),
+ ("7", "Voronoi_F2-F1", "Voronoi_F2-F1"),
+ ("8", "Voronoi Crackle", "Voronoi Crackle"),
+ ("9", "Cellnoise", "Cellnoise")]
BasisType = EnumProperty(name="Basis",
- description="Noise basis",
- items=BasisTypes)
+ description = "Noise basis",
+ items = BasisTypes)
VLBasisTypes = [
- ("0","Blender","Blender"),
- ("1","Perlin","Perlin"),
- ("2","NewPerlin","NewPerlin"),
- ("3","Voronoi_F1","Voronoi_F1"),
- ("4","Voronoi_F2","Voronoi_F2"),
- ("5","Voronoi_F3","Voronoi_F3"),
- ("6","Voronoi_F4","Voronoi_F4"),
- ("7","Voronoi_F2-F1","Voronoi_F2-F1"),
- ("8","Voronoi Crackle","Voronoi Crackle"),
- ("9","Cellnoise","Cellnoise")]
+ ("0", "Blender", "Blender"),
+ ("1", "Perlin", "Perlin"),
+ ("2", "NewPerlin", "NewPerlin"),
+ ("3", "Voronoi_F1", "Voronoi_F1"),
+ ("4", "Voronoi_F2", "Voronoi_F2"),
+ ("5", "Voronoi_F3", "Voronoi_F3"),
+ ("6", "Voronoi_F4", "Voronoi_F4"),
+ ("7", "Voronoi_F2-F1", "Voronoi_F2-F1"),
+ ("8", "Voronoi Crackle", "Voronoi Crackle"),
+ ("9", "Cellnoise", "Cellnoise")]
VLBasisType = EnumProperty(name="VLBasis",
- description="VLNoise basis",
- items=VLBasisTypes)
+ description = "VLNoise basis",
+ items = VLBasisTypes)
Distortion = FloatProperty(name="Distortion",
- min=0.01,
- max=1000.0,
- default=1.0,
- description="Distortion amount")
+ min = 0.01,
+ max = 1000.0,
+ default = 1.0,
+ description = "Distortion amount")
HardNoise = BoolProperty(name="Hard",
- default=False,
- description="Hard noise")
+ default = False,
+ description = "Hard noise")
NoiseDepth = IntProperty(name="Depth",
- min=1,
- max=16,
- default=8,
+ min = 1,
+ max = 16,
+ default = 8,
description="Noise Depth - number of frequencies in the fBm")
mDimension = FloatProperty(name="Dimension",
- min=0.01,
- max=2.0,
- default=1.0,
- description="H - fractal dimension of the roughest areas")
+ min = 0.01,
+ max = 2.0,
+ default = 1.0,
+ description = "H - fractal dimension of the roughest areas")
mLacunarity = FloatProperty(name="Lacunarity",
- min=0.01,
- max=6.0,
- default=2.0,
- description="Lacunarity - gap between successive frequencies")
+ min = 0.01,
+ max = 6.0,
+ default = 2.0,
+ description = "Lacunarity - gap between successive frequencies")
mOffset = FloatProperty(name="Offset",
- min=0.01,
- max=6.0,
- default=1.0,
- description="Offset - raises the terrain from sea level")
+ min = 0.01,
+ max = 6.0,
+ default = 1.0,
+ description = "Offset - raises the terrain from sea level")
mGain = FloatProperty(name="Gain",
- min=0.01,
- max=6.0,
- default=1.0,
- description="Gain - scale factor")
+ min = 0.01,
+ max = 6.0,
+ default = 1.0,
+ description = "Gain - scale factor")
BiasTypes = [
- ("0","Sin","Sin"),
- ("1","Tri","Tri"),
- ("2","Saw","Saw")]
+ ("0", "Sin", "Sin"),
+ ("1", "Tri", "Tri"),
+ ("2", "Saw", "Saw")]
MarbleBias = EnumProperty(name="Bias",
- description="Marble bias",
- items=BiasTypes)
+ description = "Marble bias",
+ items = BiasTypes)
SharpTypes = [
- ("0","Soft","Soft"),
- ("1","Sharp","Sharp"),
- ("2","Sharper","Sharper")]
+ ("0", "Soft", "Soft"),
+ ("1", "Sharp", "Sharp"),
+ ("2", "Sharper", "Sharper")]
MarbleSharp = EnumProperty(name="Sharp",
- description="Marble sharp",
- items=SharpTypes)
+ description = "Marble sharp",
+ items = SharpTypes)
ShapeTypes = [
- ("0","Default","Default"),
- ("1","Ring","Ring"),
- ("2","Swirl","Swirl"),
- ("3","Bump","Bump"),
- ("4","Y","Y"),
- ("5","X","X")]
+ ("0", "Default", "Default"),
+ ("1", "Ring", "Ring"),
+ ("2", "Swirl", "Swirl"),
+ ("3", "Bump", "Bump"),
+ ("4", "Y", "Y"),
+ ("5", "X", "X")]
MarbleShape = EnumProperty(name="Shape",
- description="Marble shape",
- items=ShapeTypes)
+ description = "Marble shape",
+ items = ShapeTypes)
Invert = BoolProperty(name="Invert",
- default=False,
- description="Invert noise input")
+ default = False,
+ description = "Invert noise input")
Height = FloatProperty(name="Height",
- min=0.01,
- max=10000.0,
- default=0.5,
- description="Height scale")
+ min = 0.01,
+ max = 10000.0,
+ default = 0.5,
+ description = "Height scale")
Offset = FloatProperty(name="Offset",
- min=-10000.0,
- max=10000.0,
- default=0.0,
- description="Height offset")
+ min = -10000.0,
+ max = 10000.0,
+ default = 0.0,
+ description = "Height offset")
fallTypes = [
- ("0","None","None"),
- ("1","Type 1","Type 1"),
- ("2","Type 2","Type 2"),
- ("3","Y","Y"),
- ("4","X","X")]
+ ("0", "None", "None"),
+ ("1", "Type 1", "Type 1"),
+ ("2", "Type 2", "Type 2"),
+ ("3", "Y", "Y"),
+ ("4", "X", "X")]
Falloff = EnumProperty(name="Falloff",
- description="Edge falloff",
- default="1",
- items=fallTypes)
+ description = "Edge falloff",
+ default = "1",
+ items = fallTypes)
Sealevel = FloatProperty(name="Sealevel",
- min=-10000.0,
- max=10000.0,
- default=0.0,
- description="Sealevel")
+ min = -10000.0,
+ max = 10000.0,
+ default = 0.0,
+ description = "Sealevel")
Plateaulevel = FloatProperty(name="Plateau",
- min=-10000.0,
- max=10000.0,
- default=1.0,
- description="Plateau level")
+ min = -10000.0,
+ max = 10000.0,
+ default = 1.0,
+ description = "Plateau level")
Strata = FloatProperty(name="Strata",
- min=0.01,
- max=1000.0,
- default=5.0,
- description="Strata amount")
+ min = 0.01,
+ max = 1000.0,
+ default = 5.0,
+ description = "Strata amount")
StrataTypes = [
- ("0","None","None"),
- ("1","Type 1","Type 1"),
- ("2","Type 2","Type 2"),
- ("3","Type 3","Type 3")]
+ ("0", "None", "None"),
+ ("1", "Type 1", "Type 1"),
+ ("2", "Type 2", "Type 2"),
+ ("3", "Type 3", "Type 3")]
StrataType = EnumProperty(name="Strata",
- description="Strata type",
- default="0",
- items=StrataTypes)
+ description = "Strata type",
+ default = "0",
+ items = StrataTypes)
- ###------------------------------------------------------------
+
+ # ------------------------------------------------------------
# Draw
def draw(self, context):
layout = self.layout
@@ -728,7 +748,8 @@ class landscape_add(bpy.types.Operator):
if self.StrataType != '0':
box.prop(self, 'Strata')
- ###------------------------------------------------------------
+
+ # ------------------------------------------------------------
# Execute
def execute(self, context):
@@ -745,32 +766,32 @@ class landscape_add(bpy.types.Operator):
# options
options = [
- self.RandomSeed, #0
- self.NoiseSize, #1
- self.NoiseType, #2
- self.BasisType, #3
- self.VLBasisType, #4
- self.Distortion, #5
- self.HardNoise, #6
- self.NoiseDepth, #7
- self.mDimension, #8
- self.mLacunarity, #9
- self.mOffset, #10
- self.mGain, #11
- self.MarbleBias, #12
- self.MarbleSharp, #13
- self.MarbleShape, #14
- self.Invert, #15
- self.Height, #16
- self.Offset, #17
- self.Falloff, #18
- self.Sealevel, #19
- self.Plateaulevel, #20
- self.Strata, #21
- self.StrataType, #22
- self.SphereMesh, #23
- self.XOffset, #24
- self.YOffset #25
+ self.RandomSeed,
+ self.NoiseSize,
+ self.NoiseType,
+ self.BasisType,
+ self.VLBasisType,
+ self.Distortion,
+ self.HardNoise,
+ self.NoiseDepth,
+ self.mDimension,
+ self.mLacunarity,
+ self.mOffset,
+ self.mGain,
+ self.MarbleBias,
+ self.MarbleSharp,
+ self.MarbleShape,
+ self.Invert,
+ self.Height,
+ self.Offset,
+ self.Falloff,
+ self.Sealevel,
+ self.Plateaulevel,
+ self.Strata,
+ self.StrataType,
+ self.SphereMesh,
+ self.XOffset,
+ self.YOffset
]
# Main function
@@ -805,22 +826,25 @@ class landscape_add(bpy.types.Operator):
return {'PASS_THROUGH'}
-###------------------------------------------------------------
+# ------------------------------------------------------------
# Register
# Define "Landscape" menu
def menu_func_landscape(self, context):
self.layout.operator(landscape_add.bl_idname, text="Landscape", icon="RNDCURVE")
+
def register():
bpy.utils.register_module(__name__)
bpy.types.INFO_MT_mesh_add.append(menu_func_landscape)
+
def unregister():
bpy.utils.unregister_module(__name__)
bpy.types.INFO_MT_mesh_add.remove(menu_func_landscape)
+
if __name__ == "__main__":
register()