0

libnoise の Perlin.GetValue(x, y, z) メソッド (C# ポートを使用) は、入力値が整数の場合、0 を返します。タイルの 2D 配列 (配列のインデックスは整数であるため) をノイズの値にマッピングするにはどうすればよいでしょうか? 3D 地形でさえ、最終的に整数値全体に依存するため、これは私にはほとんど意味がありません。このような 3D ランドスケープを生成している人にとって、地形内のこれらの位置は常に 0 の値に制限されていますか?

編集:私はチャンク システムを使用していることに言及する必要があるため、各チャンクの [32, 32] タイルの配列をループして、パーリン ノイズ値を取得します。ワールド空間のチャンクのオフセットを配列内のタイルの [x, y] 値に追加することで、連続した地形が得られることを期待していました。とにかく、私はこのようなことを試しましたが、それでもノイズ関数からゼロになりました:

double temp = generator.GetValue((x + offsetX) / ChunkSize, (y + offsetY) / ChunkSize, 0);

編集 2:ノイズ関数の値を 32x32 テクスチャに出力し、それらを並べて配置します。ノイズが生成されていますが、チャンクのオフセットの x 値と y 値の入力を調整しても連続していません。

ここに画像の説明を入力

編集 3:問題が解決しました。私のオフセット値は、タイル/チャンク座標ではなくピクセル座標に設定されていました。チャンクのインデックスに、チャンク サイズ (タイル単位) だけでなく、チャンク サイズ×タイル サイズを掛けていました。

4

1 に答える 1

0

への入力値Perlin.GetValue(x, y, z)は double であり、技術的には 0.0 ~ 1.0 の範囲に制限されていませんが、すべての配列インデックスをその次元の配列の長さで除算して、すべてが 0.0 ~ 1.0 の範囲に収まるようにすることをお勧めします。適切なノイズ値を取得する必要があります。ノイズが多すぎる場合は、インデックスのスケーリングで調整できます。たとえば、0.0 から 2.0 の間でスケーリングすると、ノイズが少し滑らかになります。

于 2014-05-12T07:59:06.520 に答える