• Nie Znaleziono Wyników

POLITECHNIKA WARSZAWSKA. Wydział Elektroniki i Technik Informacyjnych ROZPRAWA DOKTORSKA. mgr inż. Izabella Antoniuk

N/A
N/A
Protected

Academic year: 2022

Share "POLITECHNIKA WARSZAWSKA. Wydział Elektroniki i Technik Informacyjnych ROZPRAWA DOKTORSKA. mgr inż. Izabella Antoniuk"

Copied!
119
0
0

Pełen tekst

(1)

POLITECHNIKA WARSZAWSKA

Wydział Elektroniki i Technik Informacyjnych

ROZPRAWA DOKTORSKA

mgr inż. Izabella Antoniuk

Proceduralna generacja edytowalnego trójwymiarowego modelu terenu na podstawie wybranych cech oraz schematycznych map

dwuwymiarowych.

Promotor prof. dr hab. inż. Przemysław Rokita

Warszawa 2018

(2)

2

(3)

3 Streszczenie

Proceduralna generacja zawartości jest dziedziną rozległą i obejmuje wiele bardzo różnych zastosowań, od tworzenia pojedynczych elementów do budowy rozległych i skomplikowanych środowisk. Tworzonymi obiektami mogą tu być elementy dwu i trzywymiarowe, do wykorzystania w grach komputerowych, symulacjach lub w podobnych dziedzinach. Sama generacja zawartości z kolei może obejmować zarówno pojedyncze modele (jak np. tworzenie drzew, kamieni, czy innych elementów charakterystycznych w danym środowisku), jak również generację złożonych ekosystemów zawierających wiele wewnętrznych zależności (jak np. tworzenie różnych typów terenów, generowanie i rozmieszczanie ekosystemów roślinnych itd.). Na podstawie publikacji z tej dziedziny można stwierdzić, że rodzaj zastosowanego rozwiązania w dużej mierze zależy od jego przeznaczenia, jak również oczekiwanej jakości generowanego elementu. Powstające obiekty mogą znacznie różnić się tak stopniem szczegółowości, jak i realizmem.

Proceduralna generacja terenu łączy w sobie kilka zagadnień, takich jak generacja różnych przestrzeni, rozmieszczanie na scenie wybranych elementów, jak również kontrolowanie poprawności otrzymywanego modelu. W zależności od przyjętych założeń, generacja może wymagać od użytkownika zapewnienia różnych danych wejściowych. Tworzenie modeli do zastosowania np. w grach komputerowych, symulacjach, czy różnego rodzaju wizualizacjach, oprócz ich wyglądu musi uwzględniać także takie zagadnienia jak stopień kontroli nad ostatecznym kształtem terenu, oraz zapewnienie prostego sposobu wprowadzania zmian po procesie generacji. Ze względu na charakterystykę niektórych wyzwań np. w grach komputerowych, konieczne jest także uwzględnienie elementów takich jak nawisy skalne, jaskinie oraz związane z nimi elementy charakterystyczne. Tworzenie tego typu struktur wymaga m.in. zastosowania reprezentacji przestrzeni dostosowanej do ich specyficznego układu.

Niniejsza praca prezentuje oryginalne rozwiązania służące do proceduralnej generacji trójwymiarowego modelu terenu, z wykorzystaniem schematycznych map, z reprezentacją danych umożliwiającą generację elementów takich jak systemy podziemi. Algorytm oferuje dużą kontrolę nad kształtem generowanych modeli. Dzięki zastosowanym zestawom danych wejściowych nawet osoba nieobeznana z algorytmami proceduralnej generacji terenu może w prosty sposób zdefiniować właściwości i układ końcowego terenu. Dane te pozwalają też na reprezentowanie skomplikowanych zależności (zwłaszcza w przypadku terenów podziemnych, takich jak jaskinie lub struktury stworzone przez człowieka). Ze względu na

(4)

4

zastosowane parametry, użytkownik zawsze zna maksymalny stopień skomplikowania siatki obiektu, zaś sama generacja działa na tyle szybko, by znacznie usprawnić pracę grafika 3D.

Dodatkowo, poszczególne fragmenty terenu mogą być przedstawione jako obiekty trójwymiarowe, np. w aplikacji Blender, a tym samym umożliwiają proste wprowadzanie zmian. Ułatwia to też dalszą edycję modeli. Wyniki działania opracowanego podejścia mogą znaleźć zastosowanie przy generowaniu terenu dla potrzeb gier komputerowych, symulacji, wizualizacji oraz dla podobnych dziedzin, zarówno przy tworzeniu terenu jako całości, jak również przy generacji wymiennych modułów do użycia np. podczas projektowania poziomów w grze, lub jako bazy do dalszej pracy.

Słowa kluczowe: proceduralna generacja, modelowanie terenu, gry komputerowe.

(5)

5 Abstract

Procedural content generation is a vast field, that includes many very different applications, form creation of single elements, to constructing extensive and complicated environments. Created objects can be both two- and three-dimensional elements, for application in computer games, simulations or similar fields. Generation of content itself can in turn include both single models (like i.e. creating trees, rocks or other characteristic elements in a given environment) as well as generation of complex ecosystems with many internal dependencies (such as creation of various types of sites, generation and distribution of plant ecosystems, etc.). Based on publications from this field it can be found that type of used solution is mainly dependent from its intended purpose as well as expected quality of generated element. Created objects can differ both in level of detail and realism.

Procedural terrain generation combines few issues such as creation of different areas, placing chosen elements across the scene as well as controlling correctness of received model. Depending on initial assumptions generation process can require different input data from user. Creating models for application i.e. in computer games, simulations or different visualizations, apart from such elements as appearance needs to take into account such issues as level of control over final terrain shape as well as providing easy way to introduce changes after generation process. Due to the characteristics of some of the challenges for example in computer games, it is also necessary to include such elements as overhangs, caves or associated features. Creation of such structures requires i.a. the use of space representation adapted to their specific layout.

The presented work introduces algorithm for procedural generation of three-dimensional terrain model using schematic maps, with data representation allowing creation of such elements as underground systems. Thanks to the used input data sets, even a person not familiar with procedural terrain generation algorithms can easily define properties and layout of final terrain. These data also can represent complex dependencies (especially in case of underground areas, such as caves or structures created by humans). Due to the parameters used, the user always knows the maximum complexity of the object mesh and the generation itself works fast enough to significantly improve the work of 3D graphics. In addition, individual terrain fragments can be presented as three-dimensional objects i.e. in Blender application, and therefore allow simple way to introduce changes. It also facilitates further edition of models. The results of the developed approach can be used to generate terrain for application in computer games, simulations visualizations and similar areas, both when

(6)

6

creating terrain as a whole, as well as generating interchangeable components for use i.e. in level designing for computer games or as a base for further work.

Keywords: procedural generation, terrain modelling, computer games.

(7)

7

Spis Treści

1. Wstęp ... 9

1.1. Geneza i przedmiot rozprawy ... 9

1.2. Cele i teza pracy ... 12

1.3. Treść rozprawy ... 12

2. Omówienie istniejących rozwiązań... 14

2.1. Modelowanie na potrzeby grafiki komputerowej ... 14

2.1.1. Metody podstawowe ... 14

2.1.2. Metody złożone ... 15

2.2. Proceduralna generacja terenu ... 19

2.3. Proceduralna generacja terenu – powierzchnia... 19

2.3.1. Tworzenie schematów i map ... 20

2.3.2. Przeszukiwanie przestrzeni rozwiązań ... 21

2.3.3. Wykorzystanie algorytmów sztucznej inteligencji ... 22

2.3.4. Symulacja naturalnych procesów ... 23

2.3.5. Odwzorowywanie rzeczywistego terenu ... 25

2.3.6. Definiowanie kształtu terenu za pomocą parametrów ... 26

2.3.7. Definiowanie kształtu terenu za pomocą schematycznych danych wejściowych ... 26

2.4. Proceduralna generacja terenu – podziemia ... 28

2.4.1. Generacja dwuwymiarowych podziemi ... 29

2.4.2. Generacja trójwymiarowych podziemi ... 29

2.4.3. Generacja zgodnie z procesami występującymi w przyrodzie. ... 31

2.5. Analiza dostępnych rozwiązań proceduralnej generacji podziemi ... 33

2.6. Proceduralna generacja na potrzeby gier komputerowych ... 33

2.6.1. Generacja na podstawie historii. ... 34

2.6.2. Generacja grywalnych map. ... 34

2.6.3. Dostosowywanie zawartości do potrzeb użytkownika ... 36

2.7. Podsumowanie ... 37

3. Naturalne procesy wpływające na wygląd terenu ... 39

3.1. Powstawanie gór ... 39

3.2. Powstawanie jaskiń ... 40

3.3. Rzeki i obiekty wodne... 41

4. Koncepcja zaproponowanej metody ... 43

4.1. Przyjęte założenia ... 43

4.2. Struktura danych wejściowych ... 47

5. Proceduralna generacja modelu terenu ... 51

5.1. Generowanie dwuwymiarowych map kafelków ... 51

5.1.1. Generowanie map terenu ... 51

5.1.2. Generowanie map podziemi - jaskinie ... 52

5.1.3. Generowanie map podziemi – struktury stworzone przez człowieka ... 55

5.2. Generowanie trójwymiarowego modelu terenu ... 60

5.2.1. Generacja modelu terenu ... 61

5.2.2. Generacja modelu podziemi ... 64

5.2.3. Generacja modelu podziemi - jaskinie ... 64

5.2.4. Generacja modelu podziemi – struktury stworzone przez człowieka ... 65

5.2.5. Uszczegóławianie modelu terenu ... 68

6. Weryfikacja zaproponowanego rozwiązania ... 71

6.1. Zagadnienia wydajnościowe ... 71

6.2. Przykładowe wyniki ... 76

6.3. Porównanie z istniejącymi metodami ... 83

6.4. Porównanie z terenem zamodelowanym na potrzeby gier komputerowych... 85

8. Podsumowanie i wnioski ... 87

8.1. Ocena rezultatów ... 87

8.2. Potencjalne kierunki rozwoju ... 88

Spis rysunków ... 90

Spis tabel ... 94

Lista algorytmów ... 95

Dodatek A. Zawartość płyty CD ... 96

(8)

8

Dodatek B. Instrukcja obsługi przygotowanego środowiska ... 97

B.1. Przygotowane środowisko... 97

B.2. Opis najważniejszych elementów ... 102

B.3. Przykład generacji modelu terenu ... 104

Bibliografia ... 109

(9)

9

1. Wstęp

1.1. Geneza i przedmiot rozprawy

W ciągu ostatnich lat gry komputerowe i aplikacje o podobnych wymaganiach graficznych, oferują użytkownikom sceny i krajobrazy coraz bliższe tym znanym ze świata rzeczywistego. Zwłaszcza w przypadku gier komputerowych można dostrzec znaczne postępy i swoisty wyścig mający na celu zaprezentowanie graczom jak najciekawszej wizualnie i jak najbardziej zróżnicowanej zawartości. W miarę wzrostu realizmu poszczególnych elementów wirtualnego świata, wydłuża się także czas produkcji poszczególnych trójwymiarowych modeli. Ze względu na pożądane właściwości końcowej sceny rośnie także ogólna złożoność wizualna (ang. visual complexity)[35], określająca między innymi różnorodność oraz liczbę wykorzystanych w tym procesie elementów.

Zależność ta dotyczy zarówno pojedynczych modeli, jak również wykorzystywanych tekstur, elementów związanych z dialogami oraz całych map poziomów. Wzrost ilości i jakości zawartości nieuchronnie prowadzi do zwiększenia nakładu pracy koniecznego do ukończenia podobnych z punktu widzenia gracza elementów (np. poziomów o porównywalnej wielkości i czasie wymaganym na ich ukończenie). Konieczność ręcznego tworzenia całości wykorzystywanej zawartości niejednokrotnie wymaga od twórców albo zatrudnienia większej ilości osób do tworzenia potrzebnych elementów, albo zmniejszenia ich całkowitej liczby. Zwłaszcza w przypadku gier komputerowych często występuje to drugie podejście, co z kolei skutkuje tym iż nowsze produkcje są niejednokrotnie o wiele krótsze od swoich poprzedników (biorąc pod uwagę liczbę godzin potrzebnych na przejście całej gry).

Rozwiązaniem powyższego problemu może być zastosowanie proceduralnej generacji zawartości. Wykorzystanie algorytmów do automatycznego stworzenia poszczególnych elementów np. gry komputerowej nie jest podejściem nowym. Zwłaszcza na początku istnienia tego typu aplikacji, procedury były wykorzystywane choćby po to, by oszczędzić miejsce na nośnikach danych, mocno ograniczonych pod tym względem. Wraz ze wzrostem możliwości sprzętowych, także zastosowania algorytmów proceduralnej generacji uległy znacznemu rozszerzeniu.

Jednym z możliwych zastosowań, często stanowiącym element większych rozwiązań, jest generacja tekstur [35]. O ile w części przypadków (zwłaszcza gdy przedstawiają one charakterystyczne elementy czy ornamenty) tekstury są tworzone ręcznie przez grafików, o tyle gdy pokrywają one duże powierzchnie, bądź powtarzają się na wielu podobnych

(10)

10

obiektach, manualne utworzenie odpowiedniej ilości unikalnych obrazów wymagałoby wiele pracy jak również niosło ze sobą ryzyko iż elementy te będą powtarzalne.

W miarę jak rośnie stopień skomplikowania proceduralnie generowanego elementu, niejednokrotnie co raz trudniej jest przewidzieć wynik działania algorytmu i kontrolować kształt tworzonego obiektu. Z tego też powodu dostępne rozwiązania niejednokrotnie skupiają się na generacji jednego elementu, np. skał [29], rzek [24, 78], dróg [36], czy roślinności [77]. Rozmieszczanie podobnych obiektów na scenie jest kolejnym problemem i to zarówno w ujęciu wszelkiego rodzaju wnętrz [113] i fasad budynków [60], jak również przy zewnętrznych krajobrazach [46].

Kolejnym wyzwaniem w dziedzinie proceduralnej generacji zawartości jest tworzenie w ten sposób modelu całego terenu. Zwłaszcza modelowanie map przewidzianych do gier komputerowych oraz podobnych zastosowań, wymaga dokładnego zdefiniowania właściwości terenu, jak również wzięcia pod uwagę różnych dodatkowych czynników (np.

historii, która będzie się rozgrywała w poszczególnych miejscach). Teren w grach zazwyczaj jest rozległy, łączy też w sobie wiele różnych regionów, z których każdy może mieć inne charakterystyki (np. miasta, lasy, góry). Podejścia do generacji tego typu obszarów często różnią się znacznie: od tworzenia jedynie konkretnych typów przestrzeni [78], po metodologie i środowiska służące do generowania skomplikowanych modeli terenu [72, 94], czy wręcz całych planet [14, 32, 35].

Poza zakresem generowanych terenów dostępne metody często też różnią się sposobem w jaki użytkownik może dokonywać zmian, bądź definiować właściwości końcowego obiektu.

Niektóre metody generują elementy terenu wykorzystując zestaw definiowanych przez użytkownika parametrów [78, 101], podczas gdy inne mogą wykorzystywać uproszczone wersje obiektów jako bazę do generacji [63], tworzą mapy na podstawie rozgrywających się w nich historii [114], ewoluują końcową mapę zgodnie z wytycznymi użytkownika [80], czy też tworzą ostateczny model na podstawie jego schematycznej reprezentacji [79].

Specyficznym elementem terenu, wymagającym nieco odmiennej definicji są jaskinie, tereny z nawisami, oraz wszelkiego rodzaju przestrzenie, które nie mogą być zdefiniowane np. za pomocą mapy wysokości. Ze względu na ich specyfikę [71], takie obszary wymagają innych reguł podczas generacji, zarówno w przypadku obszarów rozpatrywanych w przestrzeni dwuwymiarowej [10, 12, 48], jak również przy w pełni trójwymiarowych modelach [18, 19, 25].

Pomimo różnorodności dostępnych algorytmów proceduralnej generacji, zawartość wykorzystywana w grach, symulacjach oraz innych, podobnych zastosowaniach, w dalszym

(11)

11

ciągu w dużym stopniu jest produkowana ręcznie. Przyczyny takiego stanu rzeczy najczęściej można doszukać się w jednej z kilku charakterystyk proceduralnych algorytmów:

• nieintuicyjny charakter danych wejściowych wykorzystywanych w algorytmie,

• trudności z przewidzeniem wyników działania procedury,

• niski stopień kontroli nad układem generowanego obiektu,

• trudność z późniejszą edycją uzyskanych modeli.

Dostępne procedury rozwiązują problem kontroli nad procesem generacji na kilka różnych sposobów. Jedną z metod jest upewnienie się iż wynikowy obiekt będzie spełniał serię zdefiniowanych przez użytkownika właściwości [113]. Kolejne rozwiązanie wykorzystuje algorytmy ewolucyjne do modyfikacji terenu tak by spełniał konkretne parametry, dostosowując go w kolejnych iteracjach do danych wprowadzanych przez użytkownika [80].

Jeszcze inne podejścia pozwalają określić kształt terenu na podstawie schematycznych map [94, 96]. Zwłaszcza w przypadku generowania podziemi stopień kontroli nad ogólnym kształtem terenu często jest tylko minimalny [18, 19], bądź też proponowane rozwiązanie stanowi raczej narzędzie służące do modelowania i wymaga od użytkownika dużej ilości dodatkowej pracy [20]. Dostępna jest również cała gama programów wspomagających modelowanie poszczególnych elementów (jak np. aplikacja SpeedTree [105], służąca do modelowanie drzew i podobnych struktur), mających za zadanie wspomagać i przyspieszać pracę grafików.

Przedmiotem szczególnego zainteresowania w niniejszej pracy jest proceduralna generacja terenu (w tym także podziemi) za pomocą zestawu uproszczonych i łatwych do zrozumienia danych wejściowych. Tworzenie zawartości, zwłaszcza biorąc pod uwagę takie zastosowania jak gry komputerowe, symulacje, wizualizacje, czy inne podobne dziedziny, wymaga możliwości dokładnego zdefiniowania ostatecznego kształtu terenu, jak również zależności pomiędzy poszczególnymi jego elementami. Także możliwość późniejszej edycji otrzymanych modeli nie jest tutaj bez znaczenia, choćby z tego powodu, by grafik był w stanie umieścić dodatkowe obiekty na scenie, bądź poprawić te obszary, które nie spełniają jego wymagań. Przedmiotem niniejszej rozprawy jest metoda generowania edytowalnego, trójwymiarowego modelu terenu na podstawie wybranych cech oraz zestawu schematycznych map dwuwymiarowych.

(12)

12 1.2. Cele i teza pracy

Celem przedstawionej pracy jest opracowanie metody proceduralnej generacji terenu opartej na uproszczonych danych wejściowych, która umożliwia tworzenie struktur takich jak podziemia i jaskinie. Do jej potencjalnych zastosowań należy automatyczna generacja trójwymiarowego modelu terenu, wspomaganie grafików i twórców poziomów w procesie koncepcyjnym jak również podczas modelowania. Opracowana metoda powinna:

• umożliwiać generację skomplikowanego terenu z uproszczonych danych wejściowych,

• umożliwiać generację podziemi i jaskiń,

• generować obiekty o możliwie nieskomplikowanej siatce, umożliwiającej zastosowanie np. w grach komputerowych,

• zapewniać możliwość prostej edycji otrzymanych obiektów.

Rozwiązania dostępne w literaturze oferują jedynie część z powyższej funkcjonalności.

Brak nawet jednej z wymienionych właściwości może sprawiać iż dana metoda nie będzie odpowiednia do zastosowań takich jak gry komputerowe czy symulacje. Jednocześnie ze względu na rosnący stopień skomplikowania wykorzystywanych obiektów (zarówno 2D jak i 3D), pojawia się konieczność stworzenia rozwiązań, które przyspieszą pracę grafików.

Tezą pracy jest pokazanie iż możliwe jest opracowanie metody spełniającej powyższe wymagania. W celu weryfikacji przedstawionej tezy zostało przygotowane oprogramowanie, natomiast jego działanie zostało skonfrontowane z wyglądem poszczególnych elementów występujących w naturze, jak również ich odpowiedników np. z gier komputerowych.

1.3. Treść rozprawy

We wstępie zawarte zostało wprowadzenie do różnych zagadnień proceduralnej generacji zawartości. Przedstawiono również motywację stojącą za podjęciem tematu proceduralnej generacji trójwymiarowego modelu terenu z wykorzystaniem schematycznych map.

Określony został cel, teza jak również zakres rozprawy.

Rozdział 2 „Omówienie istniejących rozwiązań” przedstawia obecny stan wiedzy w dziedzinie proceduralnej generacji terenu, ze szczególnym uwzględnieniem metod wykorzystujących uproszczone dane wejściowe, takie jak schematyczne mapy oraz generujących systemy podziemi. Przedstawione zostały również narzędzia służące do

(13)

13

proceduralnej generacji terenu na potrzeby gier komputerowych, symulacji, wizualizacji oraz podobnych zastosowań.

Rozdział 3 „Naturalne procesy wpływające na wygląd terenu” przedstawia procesy tworzenia się różnorodnych formacji terenu w naturze. Zaprezentowano tu hipotezy dotyczące inicjalizacji oraz przebiegu tych procesów wskazujące na złożoność poszczególnych zagadnień. Wskazano też jak trudna może być realizacja dokładnej symulacji, oddającej występujące w realnym świecie prawa fizyki, zwłaszcza przy połączeniu kilku zachodzących w przyrodzie procesów.

Rozdział 4 „Koncepcja zaproponowanej metody” zawiera informacje dotyczące założeń które przyczyniły się do powstania zaprezentowanej metody w jej obecnej formie.

Rozdział 5 „ Proceduralna generacja modelu terenu” przedstawia metodę proceduralnego generowania trójwymiarowego modelu terenu z wykorzystaniem schematycznych map oraz zdefiniowanych przez użytkownika właściwości. Opisane jest działanie algorytmu, jak również jego najważniejsze charakterystyki.

Rozdział 6 „Weryfikacja zaproponowanego rozwiązania” przedstawia właściwości środowiska przygotowanego do weryfikacji otrzymanych wyników, jak również porusza zagadnienia związane z wydajnością zaprogramowanego rozwiązania. Przedstawiono tu także reprezentatywne wyniki oraz porównano je z istniejącymi rozwiązaniami w tej dziedzinie, jak również zweryfikowano możliwość zastosowania uzyskanych obiektów w rozwiązaniach takich jak gry komputerowe.

Rozdział 8 „Podsumowanie i wnioski” przedstawia wnioski wynikające z otrzymanych wyników a także określa potencjalne kierunki dalszych badań.

Dodatek A „Zawartość płyty CD”, wymienia wszystkie pliki zawarte na dołączonej do pracy płycie CD.

Dodatek B „Instrukcja obsługi przygotowanego środowiska”, zawiera opis środowiska, przygotowanego w celu wizualizacji działania opracowanych w ramach niniejszej pracy metod, oraz opisuje krok po kroku generację przykładowego modelu terenu.

(14)

14

2. Omówienie istniejących rozwiązań

2.1. Modelowanie na potrzeby grafiki komputerowej

Proceduralna generacja zawartości w różnych formach stanowiła element wspomagający przy tworzeniu grafiki komputerowej praktycznie od początku jej istnienia. Dostępne algorytmy różnią się w zależności od zastosowania i końcowych wymagań względem tworzonego elementu. Togelius, Kastbjerg, Schedl i Yannakakis [111] podejmują próbę zdefiniowania proceduralnej generacji zawartości, określając czym może, ale nie musi ona być. Autorzy zaznaczają, że w dużej mierze zakres tej definicji zależy od interpretacji, gdyż same algorytmy mogą ale nie muszą być losowe. To samo dotyczy możliwości dostosowywania się procedur do zmieniających się warunków i wymagań.

W ogólnym ujęciu istniejące metody można podzielić na dwie główne grupy algorytmów:

• Metody podstawowe – wykorzystywane do tworzenia prostych elementów lub jako elementy składowe bardziej skomplikowanych rozwiązań.

• Metody złożone – składające się z co najmniej kilku procedur generujących końcowy element. W szczególności można tu wyróżnić:

o Metody generujące obiekty

o Metody wspomagające modelowanie 2.1.1. Metody podstawowe

Rozważając najczęściej wykorzystywane przy proceduralnej generacji zawartości metody nie można pominąć klasycznej lektury z tego zakresu: „Texturing and Modeling: A Procedural Approach” [35]. Książka ta przedstawia metody wykorzystywane przy generacji tekstur, w tym m.in. algorytmy oparte na szumie, wzorcach, czy fraktalach. Te ostatnie zostały dodatkowo szerzej opisane w książce „Fraktale i Chaos” [51], gdzie pokazano konkretne przykłady takich elementów, włącznie z metodami ich tworzenia. Z kolei artykuł

„Photorealistic terrain generation (…)” [62] stanowi przykład ich wykorzystania do tworzenia prostego, trójwymiarowego modelu terenu. „The Algorithmic Beauty of Plants”

[77] stanowi kolejny klasyczny tytuł, w którym przedstawiono metody wykorzystywane w proceduralnej generacji roślin. Opisano tu między innymi zasadę działania L-systemów, oraz innych algorytmów możliwych do wykorzystania przy modelowaniu roślinności. Z kolei skierowana do początkujących programistów książka „Perełki Programowania Gier” [31]

omawia metody oparte na: błędnych formacjach (ang. fault formation), przemieszczaniu

(15)

15

punktu środkowego (ang. midpoint displacement), osadzaniu cząsteczek (ang. fractional Brownian motion) czy wygładzaniu pseudolosowego szumu (ang. Perlin noise).

2.1.2. Metody złożone

Proceduralna generacja w rozwiązaniach graficznych, poza tworzeniem modelu terenu obejmuje także wiele metod mających na celu stworzenie elementów sceny: zaczynając od tekstur aż po trójwymiarowe obiekty różnego rodzaju. Kolejną grupę stanowią procedury wspomagające modelowanie powyższych komponentów.

Jednym z elementów, bardzo często tworzonych za pomocą procedur, są tekstury. Poza opisem ich tworzenia w książce „Texturing and Modeling: A Procedural Approach” [35], można znaleźć wiele publikacji rozszerzających opisane tu metody i zastosowania. Jedno z rozwiązań wykorzystuje np. L-systemy, do odwrotnego proceduralnego modelowania grafik [103]. Na podstawie wektorowych obrazów generowane są tu reguły, na podstawie których autorzy mogą produkować nowe kształty, np. do zastosowania przy tworzeniu bardziej skomplikowanych tekstur. Kolejnym możliwym zastosowaniem jest symulacja powierzchni wody, zaproponowana przez Pozzera i Pellegrino [74]. Pewien problem przy teksturach może stanowić ich przenoszenie na trójwymiarowy model, zwłaszcza jeżeli posiada on skomplikowaną siatkę. Poza standardowymi metodami mapowania [35], istnieje również ciekawa metoda zaproponowana przez Oliveira, Torchelsena, Comva, Waltera i Bastosa [67], która umożliwia tworzenie i przypisywanie tekstury w sposób niezależny od mapowania, z wykorzystaniem odległości geodezyjnej (ang. geodesic distance). Ilustracja działania tej metody została przedstawiona na Rys. 2.1. Ciekawą możliwością jest też wykorzystanie zestawów map wysokości do określania kształtu geometrii [92].

Rysunek 2.1.: Schemat działania metody przypisywania tekstur z wykorzystaniem odległości geodezyjnej (źródło: [67]).

(16)

16

Rysunek 2.2.: Przykłady naturalnych systemów: (góra) generowanych za pomocą rozwiązania zaprezentowanego przez Beneša (źródło: [14]), (dół), tworzonych z wykorzystaniem metody Hujisera, Dobea,

Bronsvoorta i Bidarry (źródło: [46]).

Generowanie obiektów stanowi kolejne możliwe zastosowanie proceduralnych algorytmów. W zależności od specyfiki danego elementu, metoda odpowiedzialna za jego wytworzenie może być prostsza bądź trudniejsza do zdefiniowania. Pierwszym z rozważanych zastosowań w tej grupie jest generacja wszelkiego rodzaju roślinności. Poza tworzeniem pojedynczych roślin [77], należy też zwrócić uwagę na modelowanie całych ekosystemów. Beneš [14] w swoim rozwiązaniu realizuje to zadanie poprzez symulowanie konkurencji pomiędzy różnymi gatunkami roślin o zasoby i miejsce, rozwijając cały ekosystem zgodnie ze zdefiniowanymi wcześniej regułami. Także Hujiser, Dobe, Bronsvoort i Bidarra [46] opisują metodę interaktywnego generowania naturalnych systemów. W ich podejściu w pierwszej kolejności definiowany jest ogólny kształt i właściwości powstającego systemu, w kolejnych krokach zaś na tej podstawie modelowane są jego szczegóły, dodawana tekstura oraz roślinność. Przykłady systemów wygenerowanych dla obu rozwiązań zostały przedstawione na Rys. 2.2.

Oprócz elementów naturalnych systemów, należy też rozważyć generację rzeczy nieożywionych, takich jak np. skały. Dart, Rossi i Togelius [29] przedstawiają metodę proceduralnej generacji kamieni, poprzez połączenie trójwymiarowych L-systemów, ekspansji, mechanizmu implozji1, oraz erozji. Innym, często występującym elementem, który

1Implozja – w tym wypadku termin ten oznacza zlikwidowanie przerw wewnątrz modelu.

(17)

17

może być proceduralnie generowany są różne stworzone przez człowieka struktury, takie jak drogi czy budynki. Galin, Peytavie, Maréchal i Guérin [36] w swojej pracy zaproponowali metodę tworzenia tych pierwszych, która bierze pod uwagę między innymi takie elementy jak układ terenu, czy różnego rodzaju przeszkody. Autorzy, za pomocą zaprezentowanego algorytmu są w stanie tworzyć realistyczne i skomplikowane ciągi komunikacyjne, ze strukturami takimi jak mosty czy tunele (przykłady wygenerowanych elementów zostały przedstawione na Rys. 2.3). W pracy Greutera, Parkera, Stewarta i Leacha [40], rozważana jest zarówno generacja dróg jak i tworzenie modeli budynków. Autorzy budują model pseudo-nieskończonego miasta, dzieląc scenę na obszary, z których każdy może zawierać budynek lub ulicę. Następnie dla obszarów zawierających budynki, tworzone są odpowiednie modele, poprzez wytłaczanie prostych kształtów (Rys. 2.4). Ciekawym rozwiązaniem jest metoda zaproponowana przez Merrela i Manocha [63], generująca różne obiekty, na podstawie ich uproszczonej wersji. W zaproponowanym algorytmie, autorzy na podstawie podanego przez użytkownika elementu, generują zestawy reguł i zależności, które następnie są wykorzystywane do tworzenia o wiele bardziej skomplikowanych modeli, spełniających te zależności oraz wybrane kryteria (Rys. 2.5).

Rysunek 2.3.: Przykłady dróg wygenerowanych przez rozwiązanie Galina, Peytaviea, Maréchala i Guérina (źródło: [36]).

Rysunek 2.4.: Przykład systemu miejskiego generowanego przez metodę Greutera, Parkera, Stewarta i Leacha (źródło: [40]).

(18)

18

Rysunek 2.5.: Przykład obiektów generowanych przez metodę Merrela i Manocha – obiekt oryginalny znajduje się po lewej stronie (źródło: [63]).

Kolejną grupę stanowią metody wykorzystywane do wspomagania bądź przyspieszania modelowania różnych obiektów. W swoim artykule: „Guided procedural modeling” [17], Beneš, Št’ava, Měch i Miller rozważają podejście oparte na kontrolowanej proceduralnej generacji. Dzielą oni przestrzeń obiektu na obszary, które są ze sobą połączone, jednak mogą być rozpatrywane i edytowane osobno. Za pomocą takiego podziału, autorzy mogą generować struktury takie jak drzewa, układy ulic, ornamenty czy mosty. Tego typu algorytmy mogą też być wykorzystane do deformacji już istniejących obiektów. Yoshiyasu i Yamazaki [120] zaproponowali sposób na deformację siatki modelu w sposób zarówno globalny jak i lokalny, który daje realistyczne wyniki. Mogą w ten sposób np. animować już raz stworzone obiekty, przy dużo mniejszym nakładzie pracy. W kolejnym artykule z kolei [9], autorzy opisali sposób wirtualnej deformacji obiektów, oparty na automacie komórkowym. Edycja obiektu odbywa się tu na zasadzie „przepychania” materiału pomiędzy zdefiniowanymi za pomocą reprezentacji wokselowej komórkami, zaś sam proces przypomina rzeźbienie w interaktywnej glinie. Procedury mogą być także wykorzystane do rozmieszczania już gotowych obiektów na wcześniej przygotowanej scenie. Podejście takie zaprezentowali np. Tutenel, Bidarra, Smelik i Kraker [113], umieszczając różne elementy wystroju na scenie zgodnie z takimi wytycznymi jak ich położenie względem elementów charakterystycznych (drzwi, ściany, okna), czy innych obiektów, ustawionych wcześniej.

Dobre podsumowanie metod wykorzystywanych do proceduralnej generacji zawartości na potrzeby wirtualnych światów stanowi przegląd wykonany przez Smelika, Tutenela, Bidarrę i Beneša [100]. Nie tylko przedstawiono tu podział na główne grupy generowanych elementów (takie jak drogi, budynki, roślinność, drogi, ciała wodne itd.), ale także przeprowadzono dokładną analizę występujących w różnych grupach algorytmów, ich charakterystyk oraz możliwych zastosowań.

(19)

19 2.2. Proceduralna generacja terenu

Teren różnego rodzaju stanowi podstawę dla większości gier komputerowych, w szczególności zaś dla gier typu RTS2, RPG3, Dungeon Crawler4, czy też innych, opierających rozgrywkę na kształcie oraz właściwościach dostępnych obszarów. W zależności od konkretnego zastosowania, wymagania co do ostatecznego kształtu i parametrów obiektu mogą różnić się między sobą. W szczególności, algorytmy mające na celu proceduralną generację modelu terenu (zarówno 2D jak i 3D) można podzielić na dwie główne grupy:

• Procedury wytwarzające teren na powierzchni (góry, doliny, lasy itd.).

• Procedury tworzące tereny podziemne (jaskinie, struktury wykonane przez człowieka).

Zwłaszcza algorytmy mieszczące się w drugiej grupie charakteryzują się serią rygorystycznych ograniczeń. Gdy zaś weźmie się pod uwagę zastosowania takie jak gry komputerowe czy symulacje, generowany teren powinien dodatkowo spełniać różne kryteria, w zależności od jego ostatecznego przeznaczenia.

2.3. Proceduralna generacja terenu – powierzchnia

Wiele z istniejących rozwiązań proceduralnej generacji dotyczy tworzenia standardowych rodzajów terenu, takiego jak góry, lasy, doliny czy sieci rzeczne. Konstruowanie tego typu obszarów, jak również łączenie regionów o różnych charakterystykach oraz ich dalsza edycja, są w dużej mierze uzależnione od początkowych wymagań użytkownika. W szczególności częstym problemem jest tu stopień kontroli nad ostatecznym kształtem terenu oraz łatwość edycji już uzyskanych wyników. Istniejące rozwiązania można podzielić na grupy związane zarówno ze stopniem kontroli nad procesem generacji, intuicyjnością danego algorytmu, jak również ze względu na rodzaj generowanego terenu. Jedna z możliwych klasyfikacji została przedstawiona w artykule Smelika, Krakera i Groenewegena [95].

2 RTS (ang. Real Time Strategy) – gatunek strategicznych gier komputerowych rozgrywających się w czasie rzeczywistym. Rozgrywka toczy się tu przeważnie na otwartych, dużych przestrzeniach (np. kontynent, państwo, wyspa itd.).

3 RPG (ang. Role Playing Games) – gatunek gier komputerowych opartych na fabule. Świat w którym umieszczona jest rozgrywka bardzo często odgrywa kluczową rolę przy zwiększaniu imersji gracza. Stanowi też miejsce, w którym umieszczane są powiązane z historią elementy (zadania, kluczowe lokacje, postacie niezależne itd.)

4 Dungeon Crawler – gatunek gier komputerowych przeważnie rozgrywających się w podziemiach lub lochach, gdzie najczęstsze wyzwania dotyczą nawigowania labiryntu przejść oraz pokonywania charakterystycznych dla tego typu lokacji zagrożeń (pułapki, ukryci wrogowie itd.).

(20)

20

Kolejny z podziałów uwzględnia algorytmy wykorzystywane do tworzenia kształtu poszczególnych elementów terenu. Można tu wyróżnić kilka grup:

• metody oparte na przeszukiwaniu przestrzeni rozwiązań,

• metody wykorzystujące algorytmy sztucznej inteligencji,

• metody wykorzystujące naturalne procesy bądź ich adaptację,

• metody oparte na cechach obiektów,

• metody oparte na schematycznych danych wejściowych.

2.3.1. Tworzenie schematów i map

Pierwszym z zastosowań proceduralnej generacji terenu jest tworzenie różnego rodzaju schematów i map ostatecznych obszarów. Procedury takie mogą dotyczyć zarówno terenów urbanistycznych jak i zawierających naturalne struktury. Aliaga, Vanegas i Benes [3] w swoim artykule opisują metodę tworzenia planów miejskich na podstawie podanych przez użytkownika przykładów, oraz wybranych parametrów dotyczących np. sposobu generacji ulic. Za pomocą swojego podejścia autorzy są w stanie uzyskać skomplikowane i realistycznie wyglądające kształty. Dou, Qi, Hou i Shen [34] natomiast opracowali algorytm generujący, w sposób interaktywny, plany miast na podstawie zdefiniowanych przez użytkownika schematów dróg oraz danych na temat zagęszczenia ulic w danym obszarze (przykład wygenerowanego schematu został przedstawiony na Rys. 2.6). Kolejne rozwiązanie z tej dziedziny [12] skupia się na tworzeniu planów dużych labiryntów, poprzez łączenie mniejszych, pobranych ze specjalnej bazy. Prachyabrued, Roden i Benton [75]

opracowali metodę proceduralnej generacji stylizowanych map na podstawie schematycznych szkiców (Rys. 2.7).

Rysunek 2.6.: Przykład generacji map systemów miejskich (źródło: [34]).

(21)

21

Rysunek 2.7.: Przykład generacji stylizowanych map średniowiecznych razem z obrazem wejściowym (źródło:

[75]).

2.3.2. Przeszukiwanie przestrzeni rozwiązań

Proceduralna generacja terenu może opierać się na wielu podejściach i założeniach.

Jednym z nich może być przeszukiwanie przestrzeni możliwych rozwiązań, w celu znalezienia możliwie najlepszego obiektu, np. przez porównywanie go do zadanych przez użytkownika parametrów, lub przykładowego modelu. Ashlock i McGuiness [11]

wykorzystują algorytmy ewolucyjne do edytowania mapy wysokości. Korzystając z zadanej, idealnej funkcji, autorzy ewoluują kształt terenu do momentu otrzymania pożądanych właściwości. Lewis i Parent [54] również wykorzystują tą grupę algorytmów do działań na mapach wysokości reprezentujących końcowy wygląd terenu. Walsh i Gade [118] z kolei zaaplikowali podobne rozwiązanie do trójwymiarowego modelu terenu. Użytkownik oznacza trzy z zaprezentowanych rozwiązań, które najlepiej spełniają jego oczekiwania, w dalszych krokach zaś wybrane przykłady stanowią bazę do dalszych działań algorytmu. Rozwiązanie Onga, Saundersa, Keysera i Leggetta [70] korzysta z algorytmów genetycznych, by na podstawie wprowadzonych przez użytkownika, prostych schematów wygenerować końcowy teren. Dodatkowo wykorzystują kolejny algorytm genetyczny do optymalizacji otrzymanych wyników. Raffe, Zambetta i Li [80] z kolei wykorzystują algorytmy genetyczne do ewoluowania fragmentów terenu zgodnie z preferencją użytkownika, poprawiając wybrane przez niego cechy terenu (Rys. 2.8). W innej pracy, ci sami autorzy [81] zaprezentowali kompleksowy przegląd metod proceduralnej generacji terenu wykorzystujących algorytmy genetyczne.

(22)

22

Rysunek 2.8.: Kolejne etapy generacji terenu za pomocą algorytmów ewolucyjnych, razem z jego końcowym wyglądem (źródło: [80]).

Rysunek 2.9.: Przykład terenu wygenerowanego za pomocą agentów (źródło: [33]).

Togelius, Yannakakis, Stanley i Brone w swoich dwóch pracach [110, 112] prezentują przegląd dostępnych algorytmów proceduralnej generacji opartej na przeszukiwaniu.

Opracowują też związaną z tą grupą algorytmów taksonomię, oraz dyskutują potencjalne zastosowania podobnych procedur, między innymi w grach komputerowych, oraz różnice w stosunku do innych metod proceduralnej generacji.

2.3.3. Wykorzystanie algorytmów sztucznej inteligencji

Także inne algorytmy z dziedziny sztucznej inteligencji mogą znaleźć zastosowanie przy proceduralnej generacji terenu. Jednym z przykładów takich rozwiązań jest zaprezentowana przez Dorana i Parberry-ego [33] metoda oparta na inteligentnych agentach. Autorzy generują za ich pomocą mapy wysokości zgodnie z wybranymi przez użytkownika

(23)

23

ograniczeniami. Zastosowanie różnych agentów dodatkowo umożliwia generowanie terenów o specyficznych właściwościach oraz zwiększa realizm tworzonych scen (patrz rys. 2.9).

2.3.4. Symulacja naturalnych procesów

W rzeczywistym świecie kształt i właściwości różnych fragmentów terenu zależą w dużej mierze od działających na niego, naturalnych procesów takich jak np. erozja. Część z istniejących rozwiązań korzysta ze znanych właściwości tych procesów, w celu nadania jak największego realizmu tworzonym obiektom. Jedne z pierwszych prac na ten temat dotyczyły generowania terenu na podstawie sieci rzecznej [50], modelowania sieci górskich z rzekami za pomocą algorytmów fraktalnych [78] oraz tworzenia terenu za pomocą erozji, przy wykorzystaniu pól prędkości (ang. velocity fields) i przepływu wodnego (ang. water flow) [22].

Beneš i Forsbach [15] zaprezentowali metodę modyfikacji siatki trójwymiarowego terenu, z wykorzystaniem algorytmu erozji wodnej. Ich procedura nie tylko jest w stanie rzeźbić różne kształty w terenie, ale także symulować odkładanie się materiału wymywanego z innych miejsc i wygładzanie takich regionów. Podobne rozwiązanie zostało wykorzystane w artykule zatytułowanym „Interactive terrain modeling using hydraulic erosion” [102].

Autorzy wykorzystują tu jednak dwa algorytmy: pierwszy modeluje erozję dokonywaną przez szybko płynącą wodę i wymywanie materiału, podczas gdy drugi odpowiada wolnemu przepływowi i rozpuszczaniu podłoża. Także w tym przypadku możliwe jest symulowanie odkładania się materiału (przykład działania algorytmu został przedstawiony na Rys. 2.10).

Kurowski [52] poprzez modelowanie meandrującej sieci rzecznej jest w stanie wygenerować realistycznie wyglądający teren. Teoh [107, 108] w swoich dwóch pracach wykorzystuje właściwości ciał wodnych takich jak rzeki i wybrzeża, do lepszego definiowania kształtu terenu. Beneš [16] zastosował symulację płytkiej wody (ang. shallow water simulation) do tworzenia szczegółowego modelu terenu. Przedstawiony algorytm jest w stanie generować skomplikowane, poprawne fizycznie tereny, w czasie interaktywnym.

Nieco bardziej rozbudowane rozwiązanie, łączące erozję z tektonicznym wypiętrzaniem [23], również produkuje rzeczywiste modele, zgodne z występującymi w naturze krajobrazami (Rys. 2.11).

Kolejne ciekawe podejście [28] do zamodelowania mechanizmu erozji wodnej używa automatu komórkowego (ciekawym pomysłem mogłoby też być np. rozszerzenie automatu komórkowego na trzeci wymiar [30]). Viitanen [117] do generacji terenu wykorzystał z kolei sposób zachowania się płyt tektonicznych. Autor na podstawie zamodelowanego procesu generuje mapy wysokości przedstawiające możliwe tereny, osiągając realistyczne wyniki.

(24)

24

Grosbellet, Peytavie, Guérin, Galin, Mérillou i Benes [41] łączą zarówno erozję jak i dynamikę płyt tektonicznych.

Ciekawym i kompleksowym rozwiązaniem jest zaprezentowana przez Génevaux, Galina, Guérina, Peytavie i Benesa [38] metoda generacji skomplikowanego terenu, w dużej mierze oparta na hydrologii. Autorzy wykorzystują właściwości poszczególnych elementów oraz proste szkice by wygenerować realistycznie wyglądający teren włącznie z roślinnością, przy czym rzeki są tu głównym czynnikiem modelującym wygląd końcowego krajobrazu (Rys.

2.12). W artykule „Terrain modeling from feature primitives” [39] algorytm ten został dodatkowo rozszerzony o skuteczniejszą metodę łączenia poszczególnych elementów.

Rysunek 2.10.: Przykład generacji terenu za pomocą erozji wodnej (źródło: [102]).

Rysunek 2.11.: Przykład generacji terenu za pomocą połączenia algorytmów erozji wodnej oraz tektonicznego wypiętrzania (źródło: [23]).

(25)

25

Rysunek 2.12.: Przykład generacji terenu za pomocą metody opartej na hydrologii (źródło: [38]).

Rysunek 2.13.: Przykład generacji terenu na podstawie jego cech (źródło: [93]).

Rysunek 2.14.: Przykład interaktywnego edytowania terenu: teren oryginalny znajduje się z lewej strony, teren po edycji został zaprezentowany z prawej strony (źródło: [116]).

2.3.5. Odwzorowywanie rzeczywistego terenu

Innym możliwym zastosowaniem proceduralnej generacji jest wykorzystanie jej do odwzorowywania rzeczywistego terenu. Roberts, Balakirsky i Foufou [86] przedstawili metodę tworzącą reprezentację zeskanowanego terenu rzeczywistego, za pomocą wielopoziomowych map wysokości, do wykorzystania np. przez roboty w celu planowania ścieżek po których będą się przemieszczać.

(26)

26

2.3.6. Definiowanie kształtu terenu za pomocą parametrów

Jedną z możliwości upewnienia się iż końcowy obiekt będzie spełniał wymagania użytkownika jest zdefiniowanie jego kształtu za pomocą pożądanych parametrów. Smelik, Galka, Kraker, Kujiper i Bidarra [98] w swoim podejściu wykorzystują właściwości poszczególnych fragmentów terenu, aby ograniczyć jego kształt, np. zapewniając że dwa punkty będą połączone drogą. Także Schneider, Boldte i Westermann [93] wykorzystują pożądane cechy końcowego terenu do definiowania działania ich algorytmu (Rys. 2.13).

Autorzy wykorzystują algorytmy fraktalne do tworzenia realistycznych krajobrazów z dużym poziomem szczegółowości. Pi, Song, Zeng i Li [73] renderują tereny o dużych rozmiarach, wykorzystując reprezentację terenu opartą o drzewa (ang. terrain tile quad trees). Ich metoda zawiera także sposób renderowania tekstur: wykorzystują do tego mapy wysokości (reprezentujące położenie ternu w pionie), zestaw predefiniowanych i podstawowych danych opisjących wygląd terenu w danym miejscu oraz dane zawarte w poszczególnych wierzchołkach tekstur. Poszczególne elementy końcowej mapy są doładowywane dynamicznie, w zależności od zapotrzebowania. Vanek, Benes Herout i Stava [116]

zaprezentowali interaktywną metodę proceduralnego generowania i edytowania dużego terenu. Autorzy dzielą teren na kafelki o różnych rozdzielczościach, sama generacja zaś wykorzystuje warstwy. Ich metoda została zaimplementowana na GPU, co umożliwia przeprowadzanie edycji w czasie rzeczywistym (przykład działania interaktywnej edycji terenu znajduje się na Rys. 2.14).

2.3.7. Definiowanie kształtu terenu za pomocą schematycznych danych wejściowych Kolejne z rozważanych podejść polega na umożliwieniu użytkownikowi definiowania kształtu terenu, za pomocą schematycznych danych wejściowych. Adams [2] wykorzystuje uproszczone szkice w celu kontrolowania kształtu fraktalnego terenu i rozmieszczania na nim np. takich elementów jak drogi, rzeki czy jeziora. Podobne dane wejściowe wykorzystują Puig-Centelles, Varley, Ripolles i Chover [79] w swojej metodzie generowania wysp, pozwalając użytkownikowi za pomocą prostych schematów zdefiniować układ terenu. Roden i Parberry [87] wykorzystują pojedyńczą, dwuwymiarową mapę do generowania prostego modelu terenu.

Smelik, Tutenel, Kraker i Bidarra [94] z kolei prezentują metodę opartą na wielu schematycznych mapach, umożliwiającą modelowanie skomplikowanego terenu (Rys. 2.15).

Późniejsza praca tych samych autorów [96] opisuje narzędzie do tworzenia wojskowych symulacji szkoleniowych w oparciu o podobne podejście, z intuicyjnym i łatwym do opanowania interfejsem. Kolejne prace tych samych autorów [97, 99] dodatkowo rozszerzają

(27)

27

zaproponowaną metodę (Rys. 2.16). Także Yin i Zheng [119] wykorzystują schematyczne szkice wraz ze zdefiniowanymi przez użytkownika parametrami do określania kształtu ostatecznego terenu. Zaprezentowana metoda jest w stanie tworzyć interesujące i skomplikowane krajobrazy w krótkim czasie, z elementami takimi jak rzeki, pasma górskie czy kaniony.

W artykule „Feature based terrain generation using diffusion equation.” [45] autorzy wykorzystują z kolei krzywe, do definiowania poszczególnych fragmentów generowanego terenu (Rys. 2.17). Także Kamal i Kaykobad [49] wykorzystują krzywe do definiowania kształtów i głównych szczytów w generowanych przez ich metodę pasmach górskich.

Rysunek 2.15.: Przykład generacji terenu za pomocą schematycznych map (źródło: [94]).

Rysunek 2.16.: Kolejne kroki generacji terenu na podstawie map. (a) Naturalny teren z drogą, (b) teren uzupełniony o miasto, (c) zbliżenie miasta (źródło: [99]).

Rysunek 2.17.: Przykład generacji za pomocą krzywych definiujących poszczególne fragmenty terenu (źródło:

[45]).

(28)

28

Rysunek 2.18.: Przykład generacji kanionów (źródło: [64]).

Kolejna ciekawa praca [64] rozważa generację kanionów. Autorzy wykorzystują wygenerowane mapy wysokości, modyfikując je zgodnie z charakterystyką tego typu tworów znanych ze świata rzeczywistego (Rys. 2.18).

Raman i Jianmin [84] z kolei wykorzystują mapy wysokości, oraz mapy kontrolne zawierające schematy pożądanych struktur, do generowania terenu zgodnie z preferencjami użytkownika. Ich metoda umożliwia np. nakładanie nowych obiektów na już istniejące fragmenty terenu, oraz zmienia gęstość siatki w zależności od potrzeb, pozwalając np. na wyświetlanie poszczególnych elementów przy różnych rozdzielczościach.

Warto zauważyć, że w przedstawionych podejściach zawsze występuje co najmniej jeden z kilku problemów:

• Brak możliwości zdefiniowania końcowego terenu, poza ogólnymi parametrami.

• Brak sposobu na ewaluację działania procedury i wprowadzania korekt.

• Brak możliwości prostej edycji efektów działania algorytmu.

Z racji specyfiki zastosowań takich jak gry komputerowe czy symulacje, gdzie kształt i właściwości terenu muszą jak najlepiej oddawać intencje użytkownika (dodatkowo umożliwiając prostą edycję i dodawanie szczegółów), obecność nawet jednej z powyższych wad często wyklucza zastosowanie konkretnej procedury w podobnym rozwiązaniu.

2.4. Proceduralna generacja terenu – podziemia

Proceduralna generacja podziemi stanowi niejako oddzielny dział jeżeli chodzi o tworzenie terenu. Podziemia stanowią przestrzenie, w których często odbywa się rozgrywka w różnych grach komputerowych, oferujący specyficzne wyzwania i przeszkody. W przypadku tworzenia map i schematów podziemi w dwóch wymiarach, trzeba rozważyć takie problemy jak:

• Zapewnienie interesującego układu podziemia.

• Zminimalizowanie powtarzających się elementów.

• Zagwarantowanie iż wszystkie istotne przestrzenie będą ze sobą połączone.

(29)

29

Sprawa dodatkowo komplikuje się, gdy zaczniemy rozważać także trzeci wymiar podczas generacji podobnych struktur. Przede wszystkim, w takim wypadku pojawiają się elementy, które będą umieszczone jeden nad drugim, nie pozwalając na proste reprezentowanie generowanego terenu np. za pomocą mapy wysokości. Najprostszy podział istniejących rozwiązań odnosi się właśnie do tego, czy generowane obiekty są dwu czy trzywymiarowe.

Drugi z wyraźnych podziałów dotyczy generowanych struktur, dzieląc istniejące algorytmy na umożliwiające tworzenie struktur naturalnych (takich jak jaskinie), oraz przestrzeni stworzonych przez człowieka (jak np. podziemne labirynty).

2.4.1. Generacja dwuwymiarowych podziemi

Rozwiązania dwuwymiarowe w dużej mierze skupiają się na generowaniu ciekawych wizualnie układów, bądź jak najlepszym dostosowaniu wyniku do wymagań użytkownika.

Proste rozwiązanie, zapewniające jednak ciekawe rezultaty, zostało zaprezentowane przez Johnsona, Yannakakisa i Togeliusa [48]. Autorzy wykorzystują automat komórkowy do generowania nieskończonych ciągów jaskiń. Ashlock, Lee i McGuinness [10] wykorzystują funkcję dostosowania (ang. fitness function) i punkty kluczowe, w celu jak najlepszego dopasowania efektu działania algorytmu do wymagań użytkownika. W zależności od ustawień, są w stanie generować zarówno jaskinie jak i struktury stworzone przez człowieka.

Punkty kontrolne z kolei pozwalają na ogólne definiowanie kształtu systemu. Valtchanov i Brown [115] wykorzystują algorytmy ewolucyjne do tworzenia skomplikowanych map poziomów, przeznaczonych do gier komputerowych. Autorzy w pierwszej kolejności określają zależności jakie mają występować między pomieszczeniami, korytarzami i pokojami kluczowymi w ich podziemiu. W kolejny krokach algorytmu generowane są układy które jak najlepiej spełniają podane kryteria.

2.4.2. Generacja trójwymiarowych podziemi

Spośród procedur rozważających generację struktur podziemnych trójwymiarowych poszczególne podejścia wykorzystują różne algorytmy w celu osiągnięcia jak najlepszych wyników, albo z punktu widzenia użytkownika, albo realizmu samego układu. Praca „Origin and Morfology of Limestone Caves” [71], zawiera dokładny opis powstawania naturalnych jaskiń i często stanowi bazę do różnych rozwiązań rozważających ten problem.

Już generowanie samych nawisów może być problematyczne, z racji faktu iż podobne struktury wymagają specyficznej reprezentacji. Gamito i Musgrave [37] aby osiągnąć pożądane kształty, wykorzystują współrzędne <u, v> i stopniowo wytłaczają mapę do momentu osiągnięcia odpowiedniej formy (patrz rysunek 2.19). Dzięki takiemu podejściu

(30)

30

teren może być reprezentowany za pomocą mapy wysokości. Dodatkowo autorzy zaadoptowali swoją metodę do generacji i animowania załamania fali wodnej.

Cui, Chow i Zhang [26] wykorzystują podczas generacji drzewa wokseli. Ich generacja rozpoczyna się od wybrania początkowego kształtu jaskini (np. kwadrat, koło), oraz rozmycia jego kształtu za pomocą szumu Perlina (ang. Perlin noise, opis metody został przedstawiony w [35]), następnie zaś wykorzystują trójwymiarową wersję tego algorytmu do wygenerowania szczegółów samej jaskini. W kolejnej pracy [25] rozszerzyli swoją metodę dodatkowo o tworzenie struktur charakterystycznych, takich jak stalaktyty czy stalagmity (Rys. 2.20).

Rysunek 2.19.: Przykład wytłaczania mapy w celu osiągnięcia kształtu zawierającego nawis. Autorzy obliczają funkcję przekształcenia, która pozwala uzyskać pożądany kształt (źródło: [37]).

Rysunek 2.20.: Przykład generacji jaskiń razem z elementami charakterystycznymi (źródło: [25]).

(31)

31

Autorzy jednego z artykułów [89] wykorzystują generację z wykorzystaniem reprezentacji objętościowej do tworzenia i przedstawiania takich elementów jaki żyły surowców.

Rozszerzenie zaprezentowanej metody [91] umożliwia dodatkowo generację jaskiń w uproszczonej formie. Kolejne rozwiązanie wykorzystujące reprezentację objętościową [90]

skupia się na tworzeniu struktur nadających się do zastosowania w grach komputerowych.

Autorzy wykorzystują punkty kluczowe ustalane przez użytkownika (takie jak wejście, wyjście, rozgałęzienie itd.), zależności pomiędzy tymi elementami oraz globalne właściwości do zdefiniowania kształtu systemu. Następnie z wykorzystaniem diagramów Voronoia i algorytmu triangulacji Delaunay’a generowany jest kształt jaskini. Roden i Parberry z kolei [87] tworzą trójwymiarowe podziemia na podstawie grafów.

2.4.3. Generacja zgodnie z procesami występującymi w przyrodzie.

Spośród istniejących rozwiązań trójwymiarowych, część z nich, podobnie jak w przypadku generacji gór czy rzek, bierze pod uwagę naturalne procesy biorące udział w tworzeniu tego typu struktur.

Boggus i Cawfis [18] opisują metodę opartą o występujące w naturze kształty i zależności oraz mapy rzeczywistych jaskiń, same struktury zaś są modelowane w oparciu o krzywe.

Kolejna praca wykonana przez tych samych autorów [19] rozszerza ich rozwiązanie o możliwość budowania ciągów jaskiń w oparciu o występujące w poszczególnych miejscach typy przejść oraz zestawy przykładowych jaskiń. Uzupełniając dane o typ powierzchni czy informacje o przepływie wody, są w stanie wygenerować podziemne ciągi odpowiadające wprowadzonym parametrom. Ich późniejsza praca [20] przedstawia środowisko do modelowania, generowania i modyfikowania jaskiń, poprzez reprezentowanie struktur jako powierzchnie i używanie prostych kształtów do projektowania układu. Późniejsza edycja tych obszarów pozwala tworzyć jaskinie o różnorodnym kształcie. Przykładowe wyniki zostały przedstawione na Rys. 2.21.

Tortelli i Walter [85] symulują wzrost charakterystycznych elementów jaskiń, takich jak stalaktyty, stalagmity i stalagnaty, w oparciu o procesy geologiczne i dane ze świata rzeczywistego.

Jednym z ciekawszych rozwiązań jest zaprezentowane przez Marka, Berecheta, Mahlmanna i Togeliusa [59]. Autorzy w pierwszej kolejności używają L-systemu do wygenerowania punktów strukturalnych określających układ całego podziemia. W następnym kroku natomiast wykorzystują meta-kulę (ang. metaball) do wytłoczenia kształtu jaskini wokół wytworzonych punktów. Na koniec przypisują teksturę powstałym obiektom i renderują tak powstały teren (patrz Rys.2.22).

(32)

32

Rysunek 2.21.: Przykłady generacji jaskiń za pomocą środowiska do modelowania (źródło: [20]).

Rysunek 2.22.: Przykład generacji podziemi: (b) L-system określający punkty strukturalne oraz (a) wygenerowany teren z nałożoną teksturą (źródło: [59]).

(33)

33

Linden, Lopes i Bidarra [56] zaprezentowali kompleksowe opracowanie dotyczące dostępnych metod proceduralnej generacji terenu nadających się do tworzenia podziemi. W swoim artykule dyskutują też adekwatność poszczególnych procedur do tego zadania.

2.5. Analiza dostępnych rozwiązań proceduralnej generacji podziemi

Mimo iż opisane w literaturze rozwiązania dostępne do generowanie podziemi rozważają różne podejścia i właściwości tworzonych struktur, da się jednak zauważyć w nich kilka braków:

• W przypadku rozwiązań dwuwymiarowych, po przeniesieniu na trójwymiarowe modele, bez dodatkowych operacji produkowane są powtarzalne i płaskie kształty.

• W przypadku rozwiązań trójwymiarowych, siatka powstających obiektów często jest bardzo skomplikowana i może wymagać dodatkowej optymalizacji.

• Jedynie niektóre rozwiązania pozwalają na prostą edycję efektów pracy algorytmu.

• Żadne z powyższych rozwiązań (zarówno 2D jak i 3D) nie umożliwia zdefiniowania układu generowanego systemu (bez konieczności modelowania go w całości).

Powyższe słabe punkty, w przypadku chęci wykorzystania końcowego terenu np. w grze komputerowej, symulacji czy wizualizacji, praktycznie dyskwalifikują takie rozwiązanie.

Zwłaszcza w pierwszym zastosowaniu, niezwykle istotna jest możliwość określenia układu generowanego podziemia. Elementy takie jak pokoje, przejścia pomiędzy pomieszczeniami czy przestrzenne relacje pomiędzy nimi będą narzucały ograniczenia odnośnie toczącej się w danej przestrzeni fabuły, jak również stopnia skomplikowania samej rozgrywki. Bez możliwości rozmieszczenia kluczowych miejsc zgodnie z przyjętymi założeniami, wygenerowane przez algorytm podziemia mogą okazać się całkowicie nieprzydatne. To samo odnosi się do możliwości edycji wynikowej siatki, gdyż graficy komputerowi najczęściej będą chcieli dostosować teren do własnych wymagań, lub chociażby umieścić w nim dodatkowe elementy związane z rozgrywką (np. pułapki, elementy wystroju, itd.).

2.6. Proceduralna generacja na potrzeby gier komputerowych

Proceduralna generacja terenu z punktu widzenia twórców gier komputerowych dokłada całą gamę wymagań, jakie musi spełniać projektowany algorytm. Wśród metod generujących teren, znajdują się także takie, które produkują poszczególne obszary, właśnie z myślą o

(34)

34

powyższym zastosowaniu, biorąc pod uwagę różne ograniczenia dla niego specyficzne. W szczególności, wiele rozwiązań skupia się na odszukiwaniu i wykorzystywaniu różnego rodzaju wzorców, dotyczących zarówno świata gry, jak i samej rozgrywki. Spośród istniejących podejść można wyróżnić w szczególności:

• Rozwiązania opierające się na rozgrywającej się w świecie gry historii.

• Procedury tworzące grywalne mapy.

• Podejścia dostosowujące zawartość do konkretnego gracza.

2.6.1. Generacja na podstawie historii.

Pierwszą z grup rozwiązań, przewidzianych do proceduralnej generacji terenu na potrzeby gier komputerowych, stanowią algorytmy opierające się na rozgrywającej się w tworzonym świecie historii. Hartsook, Zook, Das i Riedl [42] generują dwuwymiarowe mapy w oparciu właśnie o stworzoną przez użytkownika fabułę. Ich rozwiązanie jest w stanie wspierać nie tylko różne historie, ale także skomplikowane układy terenu, zaś sam wynik działania algorytmu stanowią w pełni grywalne poziomy. Kolejne rozwiązanie z tej grupy [55]

wykorzystuje zbiory akcji opisujących przebieg rozgrywki (np. walka z wrogami, zdobycie klucza, otworzenie drzwi itd.) w celu generowania kompletnych map. Działanie algorytmu zostało zaprezentowane na przykładzie gry Dwarf Quest, zaś otrzymywane mapy są w stanie wspierać nawet bardzo skomplikowane historie. Matthews i Malloy [61] tworzą reprezentację grywalnych map, przewidzianych do gier dwu lub trzywymiarowych. W swoim podejściu, na podstawie zdefiniowanych przez użytkownika punktów kluczowych i relacji między nimi, generują tereny odpowiadające tym wymaganiom. Kolejną pracą biorącą pod uwagę historię rozgrywającą się na danym terenie jest artykuł „Towards story-based content generation:

From plot-points to maps” [114]. Autorzy generują wiele wariantów uproszczonych, dwuwymiarowych schematów, które mogą reprezentować teren w grze, oceniają je zaś z punktu widzenia opowiadanych historii (np. spotkanie wskazanej osoby, wykonanie dla niej zadania, powrót do miejsca początkowego).

2.6.2. Generacja grywalnych map.

Kolejny zestaw rozwiązań skupia się na tworzeniu grywalnych map, dostosowanych do konkretnych gier komputerowych, bądź wybranych gatunków. Barros i Togelius [13]

wykorzystują dane ze świata rzeczywistego, takie jak mapy terenu oraz rozmieszczenie surowców, w celu tworzenia map do gier typu Cywilizacja. Lanzi, Loiacono i Stucchi [53]

stosują algorytmy ewolucyjne, w celu tworzenia poziomów na przykładzie gry Cube 2:

(35)

35

Subterran. Ich podejście ma na celu zrównoważenie szans różnych graczy, biorą pod uwagę takie elementy jak różnica w umiejętnościach, obranych strategiach czy używanej broni.

Mourato, Santos i Bidarra [66] za pomocą algorytmów genetycznych produkują i ewaluują poziomy dla gry platformowej Prince of Persia (sprawdzają np. czy istnieje ścieżka prowadząca do wyjścia poziomu). Praca zatytułowana „Multiobjective exploration of the starcraft map space” [109] skupia się na generowaniu map dla gry StarCraft. Autorzy wykorzystują algorytmy ewolucyjne oraz proceduralną generację opartą na przeszukiwaniu, w celu jak najlepszego dostosowania generowanego poziomu, później zaś oceniają jego jakość za pomocą funkcji dostosowania (ang. fitness function).

Olsen [68] w swojej pracy zaproponował metodę szybkiego generowania realistycznie wyglądających terenów, oraz dwa usprawnienia do istniejących algorytmów erozji.

Zaprezentowany algorytm jest dużo szybszy, dostosowany do wykorzystania np. w grach komputerowych, zawierający elementy umożliwiające np. poprawę grywalności ostatecznej mapy (Rys. 2.23). Preuss, Liapis i Togelius [76] za pomocą schematycznych map projektują dwuwymiarowy teren do różnych zastosowań.

W artykule zatytułowanym „PCG-based game design: creating EndlessWeb” [101]

zaprezentowano proces projektowania całej gry, opartej na algorytmach proceduralnej generacji. Autorzy prezentują napotkane problemy, zaś poszczególne poziomy (poza kluczowymi pokojami, w których odbywają się główne walki), są w całości wygenerowane przez zaimplementowane procedury.

Dahlskog i Togelius [27] przygotowali kompleksowy opis wzorców występujących w projektowaniu gier, za przykład obierając wyzwania w grze Super Mario Bros. W swojej pracy przedstawiają też metodę proceduralnej generacji zawartości w wybranej grze, produkując grywalne poziomy.

Rysunek 2.23.: Przykład poziomu wygenerowanego dla gry Tribal Trouble, wykorzystującej usprawniony algorytm erozji w celu nadawania kształtu wynikowemu terenowi (źródło: [68]).

Cytaty

Powiązane dokumenty

Uogólnienie jest nietrywialne i wymaga wprowadzenia dodatkowego zało˙zenia dotycz ˛ acego macierzy intensywno´sci oraz wypro- wadzenia wielu lematów i stwierdze´n

1 Zgodnie z Uchwałami Rady Wydziału Matematyki i Nauk Informacyjnych w sprawie zasad przyjmowania na studia stacjonarne II stopnia na kierunkach, Informatyka i

1 Zgodnie z Uchwałami Rady Wydziału Matematyki i Nauk Informacyjnych w sprawie zasad przyjmowania na studia stacjonarne II stopnia na kierunkach, Informatyka i

Skuteczność proponowanego algorytmu jest weryfikowana eksperymentalnie na zestawie standardowo wykorzystywanych 21 instancji testowych, spopularyzowa- nych pracami Kilby’ego

Akceptuję proponowany zakres praktyk, jako nie wchodzący w zakres obowiązków

Akceptuję proponowany zakres praktyk, jako nie wchodzący w zakres obowiązków pracownika. (Dziekan

Zastosowanie sieci neuronowych w zagadnieniach predykcji zależy od kilku czynników, wśród których wyróżnić można między innymi wybór struktury sieci neuronowej oraz

Zbiór wszystkich przekrojów Dedekinda zbioru liczb wymiernych nazywa się zbiorem liczb rzeczywistych.. Oznaczamy go