589
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/ ↩