2d Proceduralne generowanie wszechświata

16

Chcę stworzyć płaski wszechświat, w którym początkowo cały wszechświat jest pusty.

Byłby to reprezentowany przez obraz tła mgławicy przewijanej paralaksą.

Chcę reprezentować planety jako obiekty w kształcie dysku we wszechświecie. Mogą mieć różne rozmiary.

Wnętrze dysków będzie składało się z lądu, a następnie na zewnątrz będzie to zbiornik wodny, a po nim powietrze.

jaki byłby najlepszy sposób postępowania proceduralnego, aby na przykład utworzyć te płytki proceduralnie, ponieważ na przykład powietrze składałoby się z różnych gazów i ziemi różnych minerałów i zasobów.

Moją pierwszą myślą jest tworzenie obrazów tekstur, a następnie wycinanie kół z tych tekstur, ale problem polega na tym, że tekstury te musiałyby się owijać poziomo i pionowo. Czy jest to w pełni proceduralny sposób?

Joseph Le Brech
źródło
Na takie pytania lepiej odpowiedzieć wizualnie, aby opisać, czego szukasz. Dobra odpowiedź poniżej może być albo zbyt techniczna, albo niewystarczająco techniczna.
Richard Fabian

Odpowiedzi:

14

Tekstury proceduralne, szczególnie oparte na hałasie, mogą być wykonane z płytek. Zobacz ten wątek w GDNet, aby uzyskać trochę dyskusji, a także ten wpis do dziennika. Jest też ten link , który brzmi interesująco, chociaż nie mogę mówić o jego prawdziwości.

Co do proceduralnego generowania świata, jest ten artykuł napisany przez faceta rozwijającego Infinity. Jego system to 3D, ale prawdopodobnie można łatwo dostosować techniki.

Istnieje również cała wiki na temat generowania treści proceduralnych .


źródło
1
Pff. Muszę nauczyć się pisać szybciej. To jest po prostu to, co mam w oknie edytora poniżej ... +1 do pana.
bummzack
na zdrowie, spróbuję.
Joseph Le Brech
2

Wydaje mi się, że chcesz prostokątnych tekstur z powietrzem na górze i brudem na dole. Możesz odwzorować prostokątne tekstury na okręgi, ustawiając współrzędną tekstury U reprezentującą kąt wokół koła, a współrzędną tekstury V reprezentuje odległość od środka koła. W przypadku większych planet U może owijać się wokół planety kilka razy.

Aby przekonwertować ze zwykłych współrzędnych 2D XY na powyższe współrzędne UV, możesz wykonać matematykę w następujący sposób:

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

Należy uważać, aby nie obliczyć tego zbyt blisko środka planet ...

bmcnett
źródło
Myślę bardziej wzdłuż pionowego przekroju wszechświata, takiego jak i.imgur.com/gpCTc.jpg ląd, morze, powietrze, pustka. itp.
Joseph Le Brech
To rozsądny sposób na podział przestrzeni na typy, ale wyzwaniem będzie, aby wyglądała jak planety sferyczne.
bmcnett,
nie ma wymogu, aby wyglądał zbyt podobnie jak planeta. wystarczy losowa ziemia, woda, powietrze w odpowiedniej proporcji i wszystko na siatce heksowej wraz z innymi planetami na tej siatce.
Joseph Le Brech,
Ach, a następnie chcesz wygenerować wiele sześciokątnych kafelków tekstury, z ograniczeniem, że krawędź między lądem / powietrzem itp. Pojawi się w przewidywalnym miejscu między sąsiadującymi płytkami?
bmcnett,
tak, w sposób kulisty. więc rozmiar każdej warstwy (ląd, woda ...) jest losowo wybierany, a następnie w tej masie lądowej losowe płytki lądowe zostaną umieszczone dla planety i takie same dla każdej warstwy.
Joseph Le Brech,