2016-11-30 10 views
1

を発行OpenSimplex私はアミットの素晴らしいチュートリアル以下のよ

from opensimplex import OpenSimplex 

def simplex_noise(size): 
    def noise(nx, ny): 
     gen = OpenSimplex() 
     # Rescale from -1.0:+1.0 to 0.0:1.0 
     return gen.noise2d(nx, ny)/2.0 + 0.5 

    value = np.zeros((size,size),dtype=np.float16) 

    for y in range(size): 
     for x in range(size): 
      nx = x/size - 0.5 
      ny = y/size - 0.5 
      value[y,x] = noise(nx, ny) #(dont ask why flips x-y) 


    return value.reshape(size * size).tolist(); 

が私これをレンダリング(3Dでそれを作った):

enter image description here

の代わりにこのようなよりランダムな騒々しいもの(2Dでは、Amitのウェブサイトから):

enter image description here

私は既にダイヤモンドスクエアアルゴリズムでこれを作っていますが、このライブラリを試したかったのですが、奇妙です。出力は0と1の間です。

私は紛失しています!ありがとう!

答えて

0

あなたのコードは私には少し騒がしいです。値行列の変形配列ですか? なぜですか?同じ結果を得るためにこの例を試してみてください。

from opensimplex import OpenSimplex 
from PIL import Image 

height = int(input("Enter in the map height: ")) 
width = int(input("Enter in the map width: ")) 

def main(): 
    simplex = OpenSimplex() 
    im = Image.new('L', (width, height)) 
    for y in range(0, height): 
     for x in range(0, width): 
      value = simplex.noise2d(x , y) 
      color = int((value + 1) * 128) 
      im.putpixel((x, y), color) 
    im.save('noise2d_output.png') 
    im.show() 
if __name__ == '__main__': 
    main() 
関連する問題