2011-07-06 17 views
4

私が取り組んでいる2Dゲームの3D高さマップの生成に興味があります。私はMinecraftのか、ドワーフの要塞のように陸地を作成するには、このを使用していますが、固定サイズで、この前にだけ行っている:「オンザフライで」タイリングノイズマップを生成する

http://www.freewebs.com/shadowphantom/Results.html

は、私はパーリンまたはシンプレックスノイズに探してする必要があることを今参照してください。今では、高さの2D配列にPerlinまたはSimplexノイズを適用する方法を混乱させています。

私はもはや何をすべきか分からないので、これは大きな助けになります。楽譜にはないオクターブという言葉が私を怖がらせる。ハハハ

+0

4Dノイズ関数を使用することを提案している答えを見てみましょう。私は生成に精通してい http://gamedev.stackexchange.com/questions/23625/how-do-you-generate-tileable-perlin-noise –

答えて

1

私はあなたの質問が誤って表現されるかもしれないと思います。高さマップは本質的に2Dで、3D地形(メッシュ)を生成するために使用します。

http://en.wikipedia.org/wiki/Heightmap

その場合は...その後、あなたは、2Dイメージを作成し、ハイトマップのためにそれを使用するようにパーリンノイズ関数を使用することができます。作成されたものが不明な場合は、GIMPやPhotoshopなどのツールを使用して、2DキャンバスにPerlinノイズを作成することができます。

MinecraftはPerlinノイズ関数を使用してノイズの3Dキューブを作成します。したがって、高さマップが2Dパーリンノイズの場合、Minecraftは3Dパーリンノイズです。また、1D Perlinノイズを生成することもできます。

パーリンノイズ関数は、数学を通してテクスチャの「解像度」と「オフセット」を制御し、シームレスな環境を作り出すことができます。私は、MinecraftがPerlinノイズをベースとして使用し、その後仕上げのためにいくつかのセルオートマトンに移行すると信じています。

シンプレックスノイズに慣れていません。

編集:ここ http://processing.org/learning/basics/noise2d.html

+0

騒音そのものですが、私の問題はその場でそれを作り出しています。 Minecraftはあなたがそれらに近づくにつれてチャンクを生成しますが、シームレスにタイルを生成します。これは私が行っている効果です。 リンクはプログラムの実行中のイメージに移動しますが、2つの128x128タイルがありますが、タイルはありません。 [link](http://i1178.photobucket.com/albums/x379/Jay_PC000/Durr2.png) –

+0

これはあなたが探している言語ではありませんが、AS3のBitmapDataからメソッドの機能を複製できるのであればクラス。彼らはステッチングを可能にします(できるだけタイル可能なテクスチャになるように作成します)が、私はbaseXとbaseYが私に "タイリング"効果を与えることがわかります。しかし、呼び出しごとにテクスチャを再利用する必要があります。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#perlinNoise() – avanderw

1

は正確に、あなたはパーリン/シンプレックスノイズを探す必要が(処理中)、いくつかの数学関数をテストするためのリンクです。それを、無作為に見えるノイズを出力する関数f(x、y、...)(あなたが望む限り多くの変数として考える)。純粋なノイズとの違いは、グラディエントに作用することです。そのため、局所的なばらつきの大きい普通のノイズの代わりにグラデーションを「描く」ので、より自然に見えます。シンプレックスノイズはPerlinとほとんど同じですが、Perlinのようにn次元のグリッドではなくsimplexesの領域を分割します。これにより、計算コストが軽減され、さらに多くのものが得られますbenefits

恐ろしいかもしれませんが、実際はシンプルです。あなたはオクターブを怖がっていますが、音楽のオクターブとほぼ同じです。オリジナルの出力と混ざった周波数ノイズだけです。楽譜については、C4とC5を同時に演奏するようなものです。まだCですが、いくつかのフレーバーが追加されています(波形のスパイクはほとんどありません)。恐れずに研究を続けてください。それほど難しいことではありません。タイリングについて

:あなたは(のMinecraftが行うような)線形タイリングを意味する場合

あなただけのノイズアルゴリズムに同じシードを使用する必要があります。新しい境界に近づくとすぐに、新しいデータのチャンクを生成するだけで完全にタイル化されます(無限にノイズを埋める場合と同じように)。)

トーラスタイリング(繰り返しタイル、例えばPacmanと思う)をお探しなら、あなたのノイズタイルを生成し、タイル張りのように境界付近で補間するのが最善の解決策です。ノイズはサイドとマッチするように変形し、完全にタイル可能になります。

関連する問題