Coding Challenge #11: 3D Terrain Generation with Perlin Noise in Processing
こちらを写経していたのですが21分あたりからの
main.pde
void draw(){
flying -= 0.1;
float yoff = flying;
for(int y = 0; y < rows; y++){
float xoff = 0;
for(int x = 0; x < cols; x++){
terrain[x][y] = map(noise(xoff, yoff), 0, 1, -100, 100);
xoff += 0.2;
}
yoff += 0.2;
}
...
で毎フレームnoise動かしているのにy軸にズレていく理由がわからず。チェックしてみました。
結論としてはnoise()はアプリ実行時に対応する固定値が決定。
random()は毎フレーム変更。みたいです。
main.pde
void draw(){
...
fill(255, 255);
textSize(25);
textAlign(CENTER);
text("noise(10, 100) => " + noise(10, 100), 300, 60);
text("random(10, 100) => ", 230, 90);
text(random(10, 100), 420, 90);
...
ならば先ほどの
main.pde
terrain[x][y] = map(noise(xoff, yoff), 0, 1, -100, 100);
でもnoiseは固定値吐き出すので問題無いですね。
コードのスナップはこちら。