00001
00002
00003
00004 from __future__ import division
00005 from __future__ import with_statement
00006
00007 from PIL import Image
00008
00009 from perlin_noise import *
00010 from gradient import *
00011 from image import *
00012
00013 def demo_2d():
00014 w = h = 512
00015 octaves = 9
00016 persistence = 0.5
00017
00018 print 'Making smooth noise...'
00019 s_noise = SmoothNoise(w, h)
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 print 'Making Perlin noise...'
00035 p_noise = perlin_noise_from_smoothnoise(w, h, octaves, persistence, s_noise, True)
00036
00037 gradient = SimpleGradient((1, 0, 0, 1), (1, 1, 1, 1))
00038 color_grid = map_gradient(gradient, p_noise)
00039 grid_to_rgb_image(color_grid, 'p_test_02.png')
00040
00041 print 'Done.'
00042
00043 def offsetPixels(grid2d, pixelOffset):
00044 gt = grid2d[pixelOffset:,:].clone()
00045 gb = grid2d[:pixelOffset,:].clone()
00046
00047 grid2d[:-pixelOffset,:] = gt
00048 grid2d[-pixelOffset:,:] = gb
00049
00050 def demo_3d():
00051 w = h = d = 128
00052 print 'Making 3D Perlin noise... This might take several minutes!'
00053 p = perlin_noise_3d(w, h, d, 7, 0.5, 1)
00054
00055 for pi in p:
00056 for k in range(d):
00057 ns = '%03d' % k
00058
00059 print 'Writing image to disk:', k
00060
00061 offsetPixels(pi[:,:,k], k)
00062
00063 with open('p_o/p_o_' + ns + '.dat', 'w') as f:
00064 f.write('%s\n' % w)
00065 f.write('%s\n' % h)
00066 f.write('g\n')
00067
00068 for i in range(w):
00069 for j in range(h):
00070 f.write('%s\n' % pi[i, j, k])
00071
00072
00073
00074 def demo_channels():
00075 w = h = 128
00076 octaves = 8
00077 persistence = 0.5
00078
00079 for k in range(126):
00080 p_noise = [None] * 3
00081
00082 for i in range(3):
00083 print 'Making smooth noise...'
00084 s_noise = SmoothNoise(w, h)
00085 print 'Making Perlin noise...'
00086 p_noise[i] = perlin_noise_from_smoothnoise(w, h, octaves, persistence, s_noise, True)
00087
00088 grid = channels_to_rgb_grid(p_noise)
00089 grid = normalize(grid)
00090
00091 grid_to_rgb_image(grid, 'perlin_noise/perlin_lin_channels_' + str(k) + '.png')
00092
00093
00094
00095
00096
00097 demo_channels()
00098