ランダムなプールまたは湖を生成する


9

多角形を描画できる関数を実装しましたが、湖の丸みを帯びたエッジを模倣する滑らかな形状を生成できませんでした。2つの円を生成してエッジを結合してみましたが、十分なばらつきや滑らかさがありません。このような形を生み出す可能性のある指針やアイデアは誰にもありますか?


私はベジエ曲線を調べていましたが、それから湖を生成できるかもしれないようです。誰でも2Dアレイでそれらの経験がありますか?
Manderin87 2012年

回答:


8

alwyndさんはPerlinノイズについて言及しました。これが、ポリゴンマップジェネレーターのアイランドシェイプを生成する方法です。

  1. パーリンノイズを生成します。
  2. (x, y)ノイズビットマップの各場所について、ビットマップが2x2になるように正規化された中心からの距離を計算します(dx, dy) = (2 * x / width - 1, 2 * y / height - 1); d = sqrt(dx*dx + dy*dy)
  3. 場所(x, y)が島の一部である場合noise[x, y] > 0.3 + 0.4*d*d。この手順では、中心から離れた領域を切り取って、形状を丸くしようとします。

島は湖よりも少し不規則なので、これらの形があなたの好みに合うかどうかはわかりません。上記のアルゴリズムのデモを公​​開しました。下部にボタンがあり、2つのマジックナンバーを制御できます。マジックナンバー0.3と0.4には異なる値があり、好きな形を生み出す場合があります。


2
あなたの仕事は大きなインスピレーションです、アミット。+ 10k可能であれば、5年間ほどの間、私はあなたのブログを読んで得てきた驚異と楽しさを味わいました。
エンジニア

4

パーリンノイズアルゴリズムを使用して湖を生成できます。トップダウンビュー(ポリゴンシェイプ、あなたのように聞こえる)を使用している場合は、スタンフォードのこの男がまさにそれを行いました。

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


1
「スタンフォードのあの男」もこのサイトのユーザー、FYIです。
エンジニア

誰ではないのですか?=)ノイズ(パーリン、フラクタル)から始めるかもしれませんが、結果をぼかして「ジャギー」の結果を減らします。素晴らしい記事、ところで-彼がどのように川をやっているかが大好きです。
Jari Komppa、2012年

0

1つの方法は、基本的なポリゴンから開始することです。おそらく2つの円のアプローチです。

最初にすべてのポイントをランダムにオフセットします。円のように見えないようにします。次に、すべてのエッジについて、エッジを2つに分割し、中央のポイントをランダムな量だけオフセットします。必要な詳細が得られるまで、これを繰り返します。
これは、稲妻のフォークを生成するときに行われる処理に似ています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.