510
0
0

Minecraft clone design

Published at April 21, 2018 4:04 p.m.
Edited at April 23, 2018 4:22 a.m.

ノイズ関数

地形生成やバイオーム生成などにノイズ関数を使う。本プロジェクトでは Perlin noise 1 を用いる。
ここで、論文により示された Perlin noise のオリジナルの実装 2 では、勾配ベクトルを求める乱数列はハードコードされた環境によらない不変なものであるが、ワールドのシード値により生成される noise を変更したいため、勾配ベクトルを求める乱数列を任意のシード値 と擬似乱数生成器により生成する2次元 Perlin noise を用いる。

ノイズ関数の合成

より複雑な地形の生成を可能にするために、複数の周波数と振幅からなる Perlin noise を合成する関数 を考える。ここで、 とはオクターブのことであり、1増えるごとに周波数は 倍に、振幅は となる。つまり、以下のようになる。

ここで の区間を取るようにしたいので、合成した関数の振幅 で除算し正規化する。

参考

バイオーム生成アルゴリズム

まず、温度分布および湿度分布を生成するためのシード値をそれぞれ とすると、ワールドのシード値 をシード値とする擬似乱数列 より以下のようにもとめられる。

温度 、湿度 は、 に加え座標 および 関数により以下のように求められる。

に加え高度を とすると、温度カテゴリー 、湿度カテゴリー 、高度カテゴリー は以下のようになる。

より、バイオーム は以下のようにもとめられる。

  1. Improving Noise, Ken Perlin, 2002, http://mrl.nyu.edu/~perlin/paper445.pdf

  2. Improved Noise reference implementation, Ken Perlin, http://mrl.nyu.edu/~perlin/noise/