Autor Wątek: Proceduralne generowanie kamieni  (Przeczytany 1816 razy)

Offline darkking

  • Użytkownik

# Marzec 28, 2013, 15:39:14
Hej,
podczas swojej zabawy z tworzeniem gry natknąłem się na problem z proceduralnym generowaniem modeli głazów. Czy ktoś już miał jakąś styczność z tym tematem ? Jaki algorytm by się do tego najlepiej przydał - tak aby generować jak najbardziej realistyczne modele.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

# Marzec 28, 2013, 15:40:50
robisz 2-3 modele głazów i rozmieszczasz je po planszy w różnych obrotach itp...

Offline darkking

  • Użytkownik

# Marzec 28, 2013, 15:44:39
Sądze, że to nie jak ima się do słowa "proceduralne". Ponadto sądzę, że musiałbym mieć z kilkaset takich modeli aby całość nie wyglądała monotonnie biorąc pod uwagę, że te głazy mają być asteroidami...

Offline Kos

  • Użytkownik
    • kos.gd

  • +2
# Marzec 28, 2013, 16:01:26
Idea #1: Generujesz X losowych punktów na sferze + zaszumiasz je + robisz convex hull

Idea #2: Bierzesz topologiczny sześcian, N-krotnie ścinasz mu któryś wierzchołek, zaszumiasz wedle uznania wierzchołki


Offline mihu

  • Użytkownik
    • mihu

# Marzec 28, 2013, 16:03:21
Ja robiłem tak:

1. Siatka wokseli NxNxN reprezentująca zdyskretyzowaną powierzchnię niejawną przy użyciu poziomic (level sets). Jak nie wiesz o co chodzi to musiałbyś trochę poczytać.
2. Powierzchnia to sfera zdeformowana wzdłuż wektorów normalnych szumem perlina (lub czymś podobnym - cokolwiek ci wizualnie odpowiada).
3. Marching cubes generuje z tego siatkę trójkątów. Siatka miejscami jest kiepska (bo tak działa ten algorytm), ale mi to wystarczało. Można wypróbować inne metody generowania siatki.
4. Pamiętam, że jakieś knyfy miałem z teksturami, ale już nie pamiętam dokładnie o co chodziło. Pewnie o to, że używałem mapowania sferycznego, a ponieważ gęstość siatki wokseli i trójkątów miałem bardzo niską (miało działać w realtime), to artefakty na trójkątach wokół biegunów wpływały pewnie na wygląd z 20% modelu.

Offline darkking

  • Użytkownik

# Marzec 28, 2013, 16:17:42
Ok, dziękuję za odpowiedzi. Postaram się zagłębić jeszcze w literaturę i skorzystać z Waszych propozycji :)

Offline Avaj

  • Użytkownik

  • +1
# Marzec 28, 2013, 16:35:46
ja bym wziął jakiś parallax occlusion mapping, zrobił jeden głaz i losował różne heightmapki szumem perlina, mogłoby wyjść wesoło

Offline Kos

  • Użytkownik
    • kos.gd

# Marzec 28, 2013, 16:38:18
@up Łoo, dobre! Podmień na displacement mapping, dorzuć teselację i możesz w ten sposób generować całe asteroidy w shaderach :D

Offline Interceptor

  • Użytkownik

# Marzec 28, 2013, 16:43:55
A moze tworzyc metaballs z losowych punktow znajdujacych sie blisko siebie? Potem zastosowac metode Avaja.

Offline rAum

  • Użytkownik
    • blog

# Marzec 28, 2013, 17:03:00
Używanie Voronoi + szum perlina daje niezłe efekty. Voronoi do zarysu bryły (displacement), potem np: 3 poziomy szumu perlina na detale o różnej częstotliwości.

Poza tym kiedyś natknąłem się na pracę Procedural Generation of Rock Piles using Aperiodic Tiling która wygląda interesująco i może będzie pomocna.