1

Perlin Noise、Java、LWJGL で生成された無限の世界に取り組んでいます。しかし、私は問題を抱えています。説明するのはちょっと難しいので、ビデオを作りました: http://youtu.be/D_NUBJZ_5Kw明らかに問題は、すべての地面の間にある黒いスペースです。

私はすでにすべての値を float ではなく double にしようとしましたが、それは修正されませんでした。

ここに私が使用しているコードがあります:

float height2, height = (float)getHeight(x, y);

height2 = (float) ((getHeight(x-1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y+1, r, g, b, a, 0f, 1f);

height2 = (float) ((getHeight(x+1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y+1, r, g, b, a, 1f, 1f);

height2 = (float) ((getHeight(x+1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y, r, g, b, a, 1f, 0f);

height2 = (float) ((getHeight(x-1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y, r, g, b, a, 0f, 0f);

x->16 および y->16 のチャンクの初期化でこれをループします。vertexhelperすべてを配列に入れるだけの私が作ったクラスです。

(ここではフロートを使用していますが、それは計算を行った後なので、問題にはなりません)

4

1 に答える 1

1

高さマップの 2 箇所ではなく 4 箇所を考慮する必要がありました。

height2 = (float) ((getHeight(x-1, y-1) + height) / 2);

私は使用しなければならなかった

height2 = (float) ((getHeight(x, y-1) + getHeight(x-1, y) + getHeight(x-1, y-1) + height) / 4);

それはそれを修正しました。

于 2012-12-16T17:00:56.913 に答える