0

ゲーム/技術デモの地形のノイズに基づいて、木などのオブジェクトを配置したいと考えています。

以前に値ノイズを使用したことがありますが、パーリン ノイズについては十分に理解していると思います。ただし、シンプレックス ノイズは非常によく回避されます (現時点では少し頭を悩ませているだけです)。

シンプレックス ノイズの C# での実装がありますが、ここからほぼ完全に盗まれています。それは美しく機能しますが、自分の目的のために変更するのに十分なほどよく理解していません.

非常に高速ですが、かなりスムーズな結果も得られます。私は実際には、値のノイズを行っているときに単純な線形補間が与えるような、もう少しギザギザしたものが欲しいです。ここでの問題は、これらのオブジェクトの配置とフラクタル ブラウン運動を使用するために行う呼び出しの量が原因で、アルゴリズムの速度が非常に重要になることです。

値ノイズよりも高速なアルゴリズムを使用して値ノイズを使用して線形補間のような「ギザギザ」の結果を得る方法に関する提案はありますか?

4

2 に答える 2

1

複雑なノイズ関数を使用して木の配置などの単純なタスクを実行している場合は、完全に間違ったタイプの数学関数を使用しています。これは、テクスチャや 3D 形状、不規則な曲線を作成するのに最適な非常に特殊な機能です。2D に Treas を配置するのに、不規則な曲線は必要ありません。不規則で湾曲した線に沿って木を配置したくない場合を除きます。

たとえば、ノイズが 0.98 より大きい場合など、特定のレベルのノイズの領域に木を配置したい場合を除きます。これにより、適切にランダム化されたゾーンが得られ、そこにいくつかの木があることを示す中心点として使用できます。 .

通常のノイズ関数を使用するだけの場合は、ノイズ関数の周りに配置コードをプログラムするだけで、はるかに高速かつ簡単に変更できます。使用するたびに同じである、予測可能な疑似ランダム ノイズ関数を意味します。

整数 0 ~ 10 および 20 ~ 30 にレベル番号を掛けて、同じ疑似ランダム ノイズ カーブ上の 10 個の X ポイントと 10 個の Y ポイントを選択します。これにより、ほとんど計算を使用せずに、マップ上に 10 個のランダムなスポットが表示されます。

樹木が存在する中心点が得られたら、関数から別の 10 個のランダムな点を使用してそこにある樹木の数を示し、別の 10 点を使用してそれらがどれだけ離れているかを示します。これは、樹木の種の周りの分布が非常に優れているためです。

曲線http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdfを変更したい場合の他のオプションは、 この論文を読んで多項式関数を調べることです/勾配関数を使用できるものは何でもあなたのコードは、勾配関数のコメントを見て、コメントアウトして X が Y に等しいことを示しています。これにより、直線の補間曲線が得られます。

この回答に賛成票を投じる場合は、このフォーラムにコメントするのに十分なポイントが必要です:]

于 2013-09-24T03:19:41.690 に答える