Proceduralnie generowanie siatki w Unity #01


Wypadało by zacząć pisać o czymś innym niż tylko o projekcie, dlatego też dzisiejszy post będzie o czymś innym niż zazwyczaj.
Dzisiejszy post rozpocznie serie postów (tak myślę) na temat Proceduralnego Generowania Siatki w Unity. Brzmi strasznie, ale takie nie jest 😈


Wstęp

Przygodę z proceduralnym generowaniem siatki w Unity musimy zacząć od klasy Mesh. To ona odpowiedzialna jest za przechowywanie wszystkich danych na temat siatki. A owymi danymi są:
  • Współrzędne punktów tworzących siatkę
  • Informacje na temat tworzenia poligonów
  • Informacje na temat współrzędnych UV (Nałożenie 2-wymiarowej tekstury na 3-wymiarowy obiekt)
I wiele wiele innych, ale nie ma potrzeby tu o tym wspominać.

Zacząć czas

Na sam początek utworzymy sobie coś 2-wymiarowego, by nie było za trudno. Będzie to zwykły kwadrat, bez żadnych bajerów. Jakoś zacząć trzeba prawda? 😏

Na początku stworzymy klasę o nazwie MeshGenerator i zadeklarujemy by komponent do swojego działania potrzebował paru innych komponentów. Wydaję się to zawiłe, ale już tłumaczę.
By zobaczyć efekt naszej pracy, czyli utworzoną bryłę na scenie, potrzebujemy dwóch komponentów:
Nie będę się zagłębiał co konkretnie robią te komponenty, na to przyjdzie czas 😉
Sprawienie by dodanie jakiegoś komponentu wymagało dodania innego wygląda tak:



Dobrze, teraz zajmijmy się obsługą owych komponentów. Wpierw najpierw się do nich dobierzmy:


Okej, mamy już potrzebne komponenty. Teraz czas zająć się tym co tygryski lubią najbardziej, czyli generowaniem siatki.

Zdefiniujmy sobie 4 punkty, tak jak na rysunku. 
Pozycje punktów będą wyglądały następująco:


Stwórzmy nową siatkę i zdefiniujmy owe punkty:


No to połowa rzeczy za nami. Teraz musimy zdefiniować poligony.
Aby utworzyć poligony musimy stworzyć tablice zmiennych typu int które reprezentować będą indeksy punktów w tablicy verticles. I owa tablica zawsze jest 3 razy większa od tablicy zawierającej punkty. Trzeba również pamiętać że tutaj kolejność ma znaczenie. To znaczy, kolejność decyduje o tym w którą stronę będzie zwrócony poligon. 
Tak więc do dzieła:



Zadanie dla ciebie: zobacz w jaki sposób tworzony jest poligon i co zależy od tego gdzie jest zwrócony 😉

I teraz uwaga, bo łączymy w końcu wszystko w jedno! 🚀


Przypisujemy odpowiednie tablice w widoczny na screenie sposób.
Teraz pozostaje wrzucić gotowy kod na scenę i zobaczyć co z tego wyszło.


I oto efekt:


Nie wygląda zbyt fajne co? Wrzućmy jeszcze do tego materiał i ustawmy wyświetlanie na "Shaded Wireframe".



I oto finalny efekt:


Teraz wygląda znacznie lepiej.
Udało nam się stworzyć naszą pierwszą siatkę w Unity!
Tak oto kończy się ten post. W następnej części stworzymy sześcian wraz z kolizjami.
A to już niedługo 😉






Kamil Roszak

Tu miał być mój opis, ale prawdopodobnie nie chciało mi się go napisać :)

3 komentarze:

  1. Dodał byś w końcu jakiś plugin do wyświetlania kodu...

    OdpowiedzUsuń
    Odpowiedzi
    1. Musze wpierw zobaczyć czy w bloggerze da się takie coś zrobić :P

      Usuń