Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!

log

2012.06.18 C++:パーリンノイズ

ファイル 400-1.jpg

地形の動的生成を以前からやりたいなと思っていたので、とりあえず簡単なところから
ということでパーリンノイズでテクスチャ生成をしてみました。
それでパーリンノイズのアルゴリズムについても一応説明を入れようと思います(簡単な
アルゴリズムなので説明の必要がない気もしますが)。

パーリンノイズは乱数でノイズを生成する手法なのですが、隣接ピクセル同士で滑らかに
変化するように工夫を加えています。その工夫はというと、サイズの違うノイズを何段階も
作成し、それらの段階の色を足し合わせるといった感じです。一番荒いノイズ時の色を
I1、次のノイズの色をI2,I4,I8…とすると、最終的な色Iは以下の方法で求まります。
I = I1/ 1 + I2/ 4 + I4 / 16 + I8 / 64 + …
 = Σ( Ii / (i*i) ); ( i(ノイズサイズ) = 1,2,4,8,16,32,64,… )
ただ、この式だとボケすぎるので自分のプログラムでは以下のように設定しました。
I = Σ( Ii / i );

パーリンノイズは割と簡単に出来ましたが、そこから自然な地形が生成できるのかは
怪しいな…。そしてMineCraftやElevatedのデモはやっぱり凄いなと思うのであった。