2D手続き型ユニバースの生成


16

最初は宇宙全体が空白の平らな宇宙を作りたいです。

これは、視差スクロール星雲の背景画像によって表されます。

私がやりたいのは、惑星を宇宙の円盤状のオブジェクトとして表現することです。サイズはさまざまです。

ディスクの内側は陸地で構成され、外側は水の塊であり、その後は空気です。

たとえば、空気はさまざまなガスやさまざまな鉱物や資源の土地で構成されているため、これらのタイルを手続き的に作成する最善の方法は何でしょうか。

私の最初の考えは、テクスチャ画像を作成し、それらのテクスチャから円を打ち抜くことですが、問題はそれらのテクスチャが水平および垂直にラップする必要があることです。これを行うための完全な手続き型の方法はありますか?


このような質問は、あなたが何を望んでいるかを説明するために、何らかの視覚的なものでよりよく答えられます。以下の良い答えは、技術的すぎるか、技術的ではないかもしれません。
リチャードファビアン

回答:


14

プロシージャルテクスチャ、特にノイズベースのものをタイルに作成できます。このジャーナルエントリだけでなく、いくつかの議論については、GDNetのこのスレッドを参照してください。このリンクもありますが、これはおもしろそうですが、その真実性については話せません。

手続き的に世界を生成することに関しては、Infinityを開発している男によって書かれたこの記事があります。彼のシステムは3Dですが、おそらくあなたは十分に簡単にテクニックを適応させることができます。

手続き型コンテンツの生成に関するウィキ全体もあります。


1
Pff。もっと速くタイプすることを学ぶ必要があります。これは基本的に、下のエディタウィンドウにあるものです... +1
-bummzack

乾杯私はそれをやってみます。
ジョセフルブレヒ

2

空気が上部にあり、汚れが下部にある長方形のテクスチャが欲しいように思えます。Uテクスチャ座標が円の周りの角度を表し、Vテクスチャ座標が円の中心からの距離を表すようにすることで、長方形のテクスチャを円にマッピングできます。より大きな惑星の場合、Uは惑星を数回ラップできます。

通常の2D座標XYから上記のUV座標に変換するには、次のように数学を行うことができます。

y -= planet_center.y;
x -= planet_center.x;
u = atan2( y, x );
v = sqrt( y*y + x*x );

これを惑星の中心に近づきすぎて計算しないように注意する必要があります...


このi.imgur.com/gpCTc.jpg 陸、海、空、空のような宇宙の垂直断面の線に沿ってもっと考えています。など。
ジョセフ・ルBrech

それは空間をタイプに分割する合理的な方法ですが、球体の惑星のように見せることは挑戦です。
bmcnett

惑星のように見えるようにする必要はありません。ちょうど十分なランダムな土地、水、空気が適切な割合であり、すべてがそのグリッド上の他の惑星と一緒に六角グリッド上にあります。
ジョセフ

ああ、あなたは土地/空気などの間のエッジが隣接するタイルの間の予測可能な場所に現れるという制約で、多くの六角形のテクスチャタイルを生成したいと思うでしょうか?
bmcnett

はい、球状に。そのため、各レイヤー(土地、水..)のサイズがランダムに選択され、その土地マスにランダムな土地タイルが惑星に配置され、各レイヤーに同じタイルが配置されます。
ジョセフルブレッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.