Katedra Inżynierii Wiedzy Wykład 4
O czym dzisiaj? Projekt w Unity 3D; Podstawy dotyczące interfejsu; Praca kamery i skróty klawiszowe; Czym jest scena i jej podstawowe komponenty; Budowa prostej sceny; Elementy oświetlenia; Widok na scenę.
Pierwsze kroki założenie własnego konta Unity; pierwszy projekt i katalog domyślny; 2D a 3D; paczki asetów (prototypowanie, kamery, efekty i inne);
Rysunek: Unity widok ogólny
Elementy GUI - Hierarchy Okno Hierarchy - elementy na scenie (od kamery i oświetlenia, poprzez podłogę, ściany sceny, obiekt gracza, przeciwników inne obiekty typu GameObject); Pomiędzy obiektami w Hierarchy można ustawić relacje: równorzędne, nadrzędne względem danego obiektu (np. Obiekt nadrzędny - budynek, obiekty podrzędne: sciany, sufit, podłoga); Możliwość utworzenia obiektu pustego, który może przechowywać inne obiekty typu GameObject;
Elementy GUI - Assets Okno zawierające elementy dołączone do projektu; Zaimportowane elementy dodatkowe (np. paczkę do prototypowania), lub elementy płatne zakupione w Asset Store; W przypadku gier wielopoziomowych w oknie Assets znajdą się wszystkie stworzone sceny (sceny = poziomy); Dla programowania zdarzeniowego i skryptów stworzonych na potrzeby gry w oknie Assets przechowywane są także skrypty w wybranym języku; Należy pamiętać o odpowiedniej strukturze folderów, np. skrypty trzymamy w katalogu scripts, który to może zawierać dalsze podkatalogi.
Rysunek: Unity widok ogólny - Inspector
Elementy GUI - Inspector informacje i możliwości konfiguracji zaznaczonego obiektu; położenie danego obiektu w przestrzeni, jego obrót i skala; dodanie komponentu RigidBody dla postaci; dodanie skryptu; dodanie tekstury dla danego obiektu.
Elementy GUI - scena elementy widoczne na scenie pokazane są też w oknie Hierarchy; domyślnie widoczna jest kamera oraz oświetlenie (które też są obiektami widocznymi w oknie Hierarchy); każdy obiekt dodany do sceny widoczny jest w oknie Hierarchy, ale obiekty z Hierarchy trzeba dopiero przeciągnąć na okno sceny; Przydatne skróty klawiszowe związane z kamerą Ważne alt + LPM - obrót sceną; alt + PPM - przybliżenie/oddalenie widoku; ŚPM - przesuwanie sceny; PPM - obrót kamery w miejscu (obrót wokół własnej osi); PPM + WASD - poruszanie się po scenie; ustawienie widoku wzdłuż osi X, Y lub Z - kliknięcie w odpowiedni element w prawym górnym rogu sceny; możliwość zmiany widoku na widok perspektywiczny lub izometryczny. Do organizacji plików używamy tylko widoku Project w edytorze Unity!
Tryby tryb wyświetlania - tylko tekstury, siatka, siatka i tekstury; oświetlenie sceny - włączone lub wyłączone oświetlenie sceny; warstwy - elementy takie jak niebo, lub graficzny interfejs użytkownika (włączone, lub wyłączone w panelu sceny); odtwarzanie dźwięków powiązanych ze sceną.
Podstawy modeli model a siatka - siatka jest definicją dowolnego obiektu 3D. Zawiera wszystkie informacje o jego kształcie (wgłębienia i wierzchołki); model jest obiektem zawierającym siatkę, ale oprócz tego może zawierać np. teksturę. Innymi słowy: siatka zawiera tylko informacje o wierzchołkach; każda siatka 3D składa się z trójkątów - jako najefektywniejszego elementu składowego siatki; każda grafika 3D przetwarzana jest jako zbiór wierzchołków, zatem im mniej wierzchołków, tym szybsze przetwarzanie; trójkąt - 3 wierzchołki, ale 2 trójkąty, to tylko 4 wierzchołki; im więcej wierzchołków (trójkątów), tym model jest dokładniejszy, ale też kosztowniejszy obliczeniowo.
Podstawy modeli 2 - złożoność zwracamy przede wszystkim uwagę na liczbę poligonów mniej, tym łatwiej przetworzyć, czyli renderowanie trwa krócej; sylwestka modelu (silhouette) pozwala sprawdzić, jakie elementy są kluczowe, a jakie możemy pominąć; jeżeli chcemy widzieć jakiś element, ale ograniczyć liczbę poligonów, to może lepiej tekstura? Rysunek: Przykład sylwetki (źródło: wikipedia.org)
Podstawy modeli 3 - złożoność czy cały obiekt jest widoczny na scenie? jeżeli możemy ustalić sposób poruszania na scenie (np. NPC), gdzie model zawsze jest bokiem do gracza, to ograniczamy złożoność drugiej strony; modele LOD (Level Of Details) w przypadku, kiedy postać porusza się po scenie i może być oddalona od kluczowego obiektu; więcej pracy, ponieważ musimy stworzyć na przykład dwa różne modele jeden, kiedy gracz jest blisko (większa szczegółowość); drugi kiedy gracz jest oddalony.
Rysunek: Podstawowe obiekty GameObject Podstawowe obiekty Cube; Sphere; Capsule; Cylinder; Plane. GameObject - Inspector komponent Transform - umiejscowienie w przestrzeni (pozycja), rotacja, skala;
Dalej o obiektach - transformacje Translacja - zmiana położenia obiektu w układzie współrzędnych 3D Rotacja - zmiana relacji obiektu względem przestrzeni bez jego przesunięcia w tejże. Inaczej: rotacja to nowe zdefiniowanie kierunku osi X, Y oraz Z. Uwzględnienie tylko jednej osi określane jest jako rotacja względem osi. Skalowanie - zmiana wielkości obiektu względem jednej z trzech osi. Transformacje a obiekty zagnieżdżone W przypadku obiektów zagnieżdżonych dowolna transformacja wpływa jednocześnie na wszystkie obiekty będące potomkami aktywnego rodzica.
Dalej o obiektach - transformacje 2 Translacja - transformacja bierna, która nie powoduje modyfikacji obiektu, a zatem jest wykonanie operacji odwrotnej do początkowej sprowadza obiekt do stanu początkowego; Rotacja - to zmiana orientacji osi lokalnego układu współrzędnych. Każda kolejna translacja powoduje przesunięcie obiektu według nowego układu współrzędnych; Skalowanie - zmiana siatki lokalnego układu współrzędnych, co prowadzi do wrażenia, że dany obiekt jest większy(mniejszy). Skalowanie może dotyczyć wszystkich współrzędnych jednocześnie, lub też wybranej współrzędnej. Np. dla obiektu cube skalowanie dowolnej osi i zmiana wartości tej współrzędnej na wartość minimalną większą od zera powoduje utworzenie płaszczyzny, dla której dwa wymiary mają wielkość analogiczną do cube.
Przydatne skróty klawiszowe związane z obiektami f - focus na wybranym obiekcie; ctrl + d - duplikowanie obiektu; W - na wybranym obiekcie ustawia opcję przesuwania; E - to opcja obrotu; R - to opcja skalowania. Obiekt dokładnie na środku sceny W celu ustalenia położeniu obiektu dokładnie na środku sceny w oknie Inspectora Transform wpisujemy wartości (0,0,0).
Game view - widok gry Gizma widok gry renderowany jest z użyciem kamer naniesionych na scenę podczas projektowania; Play Mode - uruchomienie grywalnej wersji (po dodaniu obsługi poruszania się możliwe będzie przemieszczanie); Menu pozwalające wskazać, które elementy sceny zostaną włączone/wyłączone podczas dalszej edycji. W przypadku dużej liczby obiektów na ekranie można np. wyłączyć wyświetlanie drzew na scenie.
Filtr wizualny i wyszukiwanie Podczas pracy z edytorem możliwe jest wyszukanie konkretnych elementów, które dodatkowo zostaną podświetlone na scenie. Focus na obiekcie Pozwala na wycentrowanie widoku na wskazanym przez nas obiekcie. Przemieszczanie obiektu Przytrzymanie CTRL pozwala na przemieszczanie obiektu po scenie o określoną stałą wartość (analogicznie dla rotacji i skalowania). Rysunek: Snap Settings
Światło na scenie Directional Light - światło kierunkowe (np. światło słoneczne) - powinno być skierowane nieznacznie w dół, chociaż jego położenie powinno też zależeć od elementów na scenie. Nie powinno znajdować się na jednej wysokości z innymi obiektami; Point Light - światło punktowe, które daje równomierne światło we wszystkich kierunkach. Jego intensywność spada wraz ze wzrostem odległości od punktu centralnego i dla pewnego promienia wynosi 0. Światło punktowe doskonale nadaje się do symulowania oświetlenia lampą; Spotlight - zbliżone do światła punktowego, przy czym dla powyższego kąt wynosi 360 stopni, natomiast dla światła Spotlight kąt ten jest ograniczony. Ograniczenie dotyczy zarówno zasięgu (promień) jak i kąta. Ten typ stosowany jest do sztucznych źródeł światła takich jak latarki, czy światła samochodu. Area Light - definowane w postaci prostokąta. Światło rozchodzi się we wszystkich kierunkach, ale tylko z jednego boku prostokąta. Metoda ta jest bardzo kosztowna obliczeniowo.
Mapowanie i rodzaje map Mapowanie tekstur jako etap nadania właściwości zewnętrznych takich jako kolor, przezroczystość, czy poziom odbijania światła; Diffuse Map czyli najprostszy mechanizm, gdzie na gotowy model nakładamy obraz (oryginalne kolory są zachowane); Bump map pozwala na oddanie wrażenia głębi i trójwymiarowości symulacja wgłębień i odkształceń na powierzchni obiektu. Podejście określane jako przestarzałe. Wrażenie głębi tworzone jest poprzez nałożenie dodatkowej tekstury w odcieniach szarości, gdzie w zależności od odcienia obiekt może być odbierany jako bardziej odstający (w przypadku zbliżania się do bieli); Normal map podobnie, jak w przypadku bump maps, tutaj także widoczny efekt jest fałszywy. Tutaj jednak zamiast informacji w skalach szarości mamy dane w formacie RGB. Kłopot w tym, że ten typ map jest trudniejszy do przygotowania. Dodatkowo, w przypadku aplikacji mobilnych wciąż bazujemy na bump maps.
Mapowanie i rodzaje map 2 Displacement map czyli rzeczywista ingerencja w model (w przeciwieństwie do bump map i normal map). W tej mapie mamy informację o rzeczywistej wysokości elementów, co pozwala na ich opuszczanie / podnoszenie; Glow map czyli informacja o tym, które fragmenty powinny się świecić; Opacity map kiedy chcemy mieć możliwość podglądu wnętrza obiektu, czyli określenie poziom Opacity; Specular map informacja o jaśniejszych punktach, miejscach. Może być stosowane zamiennie zamiast źródła światła. Jeżeli wiemy, że obiekt jest poza zasięgiem gracza, to warto pomyśleć o teksturze, która sprawie wrażenie oświetlonej.
Rysunek: Model bazowy (z lewej); Bump map (środek); Displacement map (z prawej) (źródło: nvidia.pl)
Mapy świetlne i wypalanie W celu redukcji złożoności obliczeń można zastosować tak zwane mapy świetlne; Obiekt + tekstura + oświetlenie terenu == Obiekt + tekstura z nałożonym oświetleniem; Proces wypalania obejmuje wykonanie obliczeń związanych z oświetleniem obiektu, a następnie zmodyfikowaniem tekstury w taki sposób, aby uwzględnić oświetlenie (rozjaśnienie fragmentu tekstury); Tak przygotowana tekstura w czasie gry łączona jest ze zwykłą teksturą bez oświetlenia naniesioną na obiekt - złudzenie oświetlenia; mapa świetlna sprawadza się świetnie w przypadku obiektów statycznych (nieruchomych), ale nie w przypadku dynamicznych, kiedy nie można określić dokładnego położenia obiektu; wypalanie nawigacji - sprawdza się w przypadku postaci NPC, które mogą posiadać jedną, lub kilka ścieżek przejścia danego obszaru.
Jeszcze o kamerze Dolly zoom - efekt, w którym obiekt wypełnia całą przestrzeń (pionowo/wertykalnie) podczas zbliżania lub oddalania się kamery; Kamera znad głowy - obiekt poruszający się za graczem; efekt flary - podczas interakcji kamery ze źródłem światła. Rysunek: Widok bliższy i dalszy - równoległe
Środowisko modułowe a kafelkowe modułowa budowa świata sprowadza się do tworzenia małych elementów (przestrzeni), z których budowany jest większy obszar; w przypadku grafiki 2D analogiczny mechanizm nazywa się środowiskiem kafelkowym; Środowisko modułowe - zalety możliwość ponownego wykorzystania niektórych komponentów (prefaby i Asset Store); wydajność - przy skomplikowanych obiektach zawsze zaleca się ich powielenia, a nie tworzenie kolejnej instancji tego samego/zblizonego obiektu; teksturowanie - nakładanie tekstur na małe obiekty jest mniej kosztowne obliczeniowo, niż przygotowanie tekstur dla dużych obiektów/dużego terenu; możliwość równoległej pracy nad kilkoma modułami, które następnie zostają połączone (każdy moduł na określony wymiar);
Rysunek: Klocek podstawowy - wzorzec Klocek podstawowy klocek podstawowy jako wzorzec - nie modyfikujemy; zawsze trzymamy jego kopię zapasową (najlepiej na innej warstwie); służy do ustalenia rozmiaru innych elementów na scenie (skala).
Scena, kamera, światła - co dalej? Własny model - tekstura, shadery, materiały. Ewentualnie... Asset Store - zbiór gotowych elementów. Ewentualnie... Prototypowanie.
Od modelu do teksturowanego modelu Tekstura - jest płaskim obrazem nakładanym na obiekty 3D (np. na rozciągnięty i przeskalowany GameObject typu cube nałożony zostaje obrazek ściany cegieł); Co z bardziej złożonymi modelami? - unwrap, czyli rozwinięcie siatki modelu tak, aby uzyskać płaską mapę; Rysunek: Prosta siatka dla cube. Źródło: blender
Rysunek: Złożona siatka. Źródło: UnrealEngine example
Shadery Sposób wyświetlania powierzchni (tekstury) na modelu - czyli np. nadanie połysku albo innego oświetlenia dla danego elementu; Przykłady w Unity 3D Diffuse - najprostszy shader - światło rozprowadzone równomiernie po całej powierzchni obiektu; Specular - połysk obiektu, czyli efekt odbijania światła. Materiały Shader + tekstura.
Asset Store gotowe tekstury; modele 3D i 2D; obiekty; prefaby; animacje; dźwięki; shadery; systemy cząsteczek skrypty.
Rysunek: Paczka do prototypowania
Rysunek: Paczka do prototypowania - materiały Rysunek: Paczka do prototypowania - modele Rysunek: Paczka do prototypowania - tekstury
Co na następnym wykładzie? Prototypowanie aplikacji i prototypowanie GUI; Level design; Rzeźba terenu i wirtualny spacer;
Dziękuję za uwagę