www.math.uni.lodz.pl/ radmat
Warunki zaliczenia przedmiotu Na ćwiczeniach przez cały semestr będą realizowane dwa projekty w Unity (3D i 2D). Do uzyskania 3 z ćwiczeń wystarczy poprawnie zrealizować oba projekty. Ponadto na wykładach będą zadawane projekty obejmujące różne zagadnienia i technologie dotyczące tworzenia gier komputerowych, które także będą realizowane na ćwiczeniach (i oceniane na wykładach). liczba zrealizowanych projektów ocena projekty z Unity i 7-8 projektów 5 projekty z Unity i 5-6 projektów 4.5 projekty z Unity i 3-4 projekty 4 projekty z Unity i 1-2 projekty 3.5 projekty z Unity 3 Do zaliczenia przedmiotu wystarczy zaliczenie ćwiczeń.
Cel wykładu Celem wykładu jest prezentacja rzutu perspektywicznego oraz rzutu równoległego, które mogą być wykorzystywane w grach komputerowych, grafice komputerowej czy też aplikacjach multimedialnych.
Przestrzeń modelu i przestrzeń świata Niezwykle ważnym pojęciem z punktu widzenia twórcy gier komputerowych jest zasadnicza różnica między przestrzenią modelu, a przestrzenią świata. W aplikacji 3D świat jest technicznie nieskończony, wobec czego trudno jest w nim ustalić położenie obiektów. Dlatego zdefiniowano punkt początkowy, który ma współrzędne (0, 0, 0). Powyższe współrzędne oznaczają odpowiednio współrzędną poziomą, współrzędną pionową oraz współrzędną wyznaczającą głębię.
W przestrzeni modelu zakładamy, że każdy obiekt ma swój punt zerowy, z którego wychodzą osie współrzednych x, y oraz z. Tym punktem jest zazwyczaj środek obiektu. Definicja Przekształcenie pozwalające na przedstawianie obiektów trójwymiarowych na płaszczyźnie (rzutni) nazywamy rzutowaniem.
Rysunek: Obiekt umieszczony w początku układu współrzędnych
Rysunek: Obiekt umieszczony w punkcie (3, 2, 1)
W grafice komputerowej stosuje się dwa rodzaje rzutów: perspektywiczny - gdy w scenie określimy położenie obserwatora; równoległy - gdy w scenie nie określimy położenia obserwatora lub też gdy obserwator znajduje się w nieskończoności.
Rzut perspektywiczny Definicja (źródło Wikipedia) Perspektywa - określenie stosowane w architekturze, malarstwie, fotografii i innych sztukach wizualnych oznaczające sposób oddania trójwymiarowych obiektów i przestrzeni na płaszczyźnie. Istnieje kilka rodzajów perspektywy: linearna (zbieżna, geometryczna), barwna (malarska), kulisowa, powietrzna, odwrócona, perspektywa krzywoliniowa (poprawna).
perspektywiczne jest zbliżone do tego, co widzimy własnymi oczami: obraz jest bardziej realistyczny i posiada wrażenie głębi (obiekty znajdujące na dalszym planie są mniejsze, ponieważ obiekty trójwymiarowenie nie są rzutowane wzdłuż linii równoległych). W rzutowaniu perspektywicznym promienie rzutujące tworzą pęk prostych.
Rysunek: perspektywiczne
Rysunek: Perspektywa
Rysunek: Perspektywa
Rysunek: Perspektywa
Na podstawie powyższych zdjęć widać, że linie zbiegają do jednego punktu, zwanego punktem zbiegu. Rzut perspektywiczny zwykle dzieli się na: jednopunktowy dwupunktowy; trzypunktowy. Powyższy podział zależy od orientacji płaszczyzny rzutowania w kierunku osi rzutowanego obiektu (gdy przy wyborze rzutni jedna z krawędzi rzutowanego obiektu nie jest równoległa do rzutni, to mamy do czynienia z rzutem jednopuktowym, gdy dwie nie są równległe - z dwupunktowym, a gdy trzy - z trzypunktowym).
Rysunek: Rzut jednopunktowy
Rysunek: Rzut dwupunktowy
Rysunek: Rzut trzypunktowy
W każdym rzucie perspektywicznym istnieje przynajmniej jedna rodzina prostych równoległych i nierównoległych do rzutni, taka, że rzuty tych prostych przecinają się w jednym punkcie. Ten punkt nazywamy punktem zbiegu. W zależności od położenia rzutni względem obiektu mówimy o rzutowaniu perspektywicznym jednozbiegowym, dwuzbiegowym lub trójzbiegowym.
Rysunek: jednozbiegowe
Rysunek: dwuzbiegowe
Załóżmy, że wykonujemy rzutowanie wzłuż osi Z. Wówczas gdzie x = x y = y d z + d d z + d x, y, z są współrzędnymi w przestrzeni trójwymiarowej; x, y są współrzędnymi rzutowanego punktu na ekranie (czyli w przestrzeni dwuwymiarowej); d - jest odległością od obserwatora (oczywiście zakładamy, że obserwator także znajduje się na osi Z).
Ostrosłup widzenia Zauważmy, że dotychczas nie zwróciliśmy w ogóle uwagi na to, które obiekty przestrzeni zostaną zrzutowane. Każdy użytkownik aparatu fotograficznego wie, że tylko wybrany przez niego fragment przestrzeni zostanie utrwalony na zdjęciu. To znaczy, że operacje matematyczne wynikające z rzutowania powinny zostać zrealizowane tylko w odniesieniu do określonego zbioru punktów. Jeżeli przyjmiemy, że dokonujemy rzutowania perspektywicznego na płaszczyznę i interesuje nas pewien prostokąt obrazu jako część rzutni, to środek rzutowania i prostokąt obrazu wyznaczają pewien fragment przestrzeni. Jeżeli do tego dodamy dwie płaszczyzny równoległe do rzutni, które ograniczają wybrany fragment obiektu, to powstanie figura będąca ostrosłupem ściętym o podstawie prostokątnej nazywana ostrosłupem widzenia.
Rysunek: Ostrosłup widzenia O - środek rzutowania R - rzutnia S1, S2 - płaszczyzny odcinające
Rzut równoległy Z rzutowaniem równoległym mamy najczęściej do czynienia w różnego typu zastosowaniach technicznych, np. rzuty prostokątne na 3 lub 6 płaszczyzn w tradycyjnym rysuneku technicznym. równoległe nie pozwala na przedstawienie obiektu zgodnie z naszym wyobrażeniem. Umożliwia natomiast zdefiniowanie wymiarów danego przedmiotu poprzez zachowanie równoległości prostych oraz proporcji długości odcinków równoległych. Jednym z rodzajów rzutowania równoległego jest aksonometria. Cechą charakterystyczną aksonometrii jest dążenie do zachowania rzeczywistych wymiarów rzutowanego obiektu (przynajmniej w jednym kierunku).
Rysunek: równoległe
W metodzie aksonometrycznej rzutnią jest pewna płaszczyzna, dowolnie ustawiona względem osi x, y oraz z układu współrzędnych o początku w punkcie 0, a sam przedmiot umieszcza się w układzie współrzednych tak, że jego krawędzie oraz płaszczyzny są równoległe lub prostopadłe do osi układu. Oczywiście obraz przedmiotu na rzutni aksonometrycznej zależy od ustawienia układu współrzędnych względem płaszczyzny rzutowej oraz kierunku rzutowania. Rzut można wykonać w kierunku prostopadłym do rzutni lub też ukośnym. W pierwszym przypadku mówimy o aksonometrii prostokątnej, a w drugim o aksonometrii ukośnej.
Rysunek: Problem z rzutowniem równoległym
Rysunek: Problem z rzutowniem równoległym
W aksonometrii obiekty trójwymiarowe odwzorowywane są przez figury dwuwymiarowe w następujący sposób: odcinki pozostają odcinkami; mogą się zmieniać jedynie ich długości; odcinki równoległe pozostają równoległe; jednocześnie są jednakowo skracane lub wydłużane; rzutem okręgu jest elipsa lub okrąg, jeśli leży w płaszczyźnie równoległej do rzutni.
aksonometryczne W rzutowaniu aksonometrycznym: linie projekcji są równoległe tak w rzeczywistości, jak i na płaszczyźnie projekcji; obiekt jest obracany wzdłuż jednej lub więcej osi względem płaszczyzny projekcji; płaszczyzna lub osie obiektu nie są równoległe do płaszczyzny projekcji tak, że różne części danego obiektu są widoczne w tym samym obrazie.
Niezwykle istotną właśnością aksonometrii jest jej związek pomiędzy wielkością obiektów w przestrzeni świata i przestrzeni rzutowej, niezależnie od położenia obiektów w przestrzeni rzutowej. W perspektywie liniowej obiekty stają się mniejsze, gdy się od nich oddalamy. Inaczej sytuacja wygląda w przypadku perspektywy aksonometrycznej. Tutaj możemy zmierzyć wielkość przedmiotu na rysunku aksonometrycznym i dowiedzieć się, jakie wymiary ma ten obiekt w rzeczywistości (musimy znać jedynie skalę rysunku i właściwości projekcji). W przypadku perspektyty liniowej nie jesteśmy w stanie odtworzyć rzeczywistych wymiarów przedmiotu.
Własności perspektywy aksonometrycznej: Brak punktów zbiegu. Umożliwia to przewijanie dużych obrazów. Widok ma tę samą perspektywę w każdym punkcie. Linie, które są równoległe w przestrzeni trójwymiarowej pozostają równoległe na obrazie dwuwymiarowym. Obiekty leżące dalej mają ten sam rozmiar, co obiekty bliskie; obiekty te nie są mniejsze, gdy się od nich oddalamy. Jeśli znamy skalę osi, możemy zmierzyć wielkość rozmiar obiektu (długość, wysokość, głębokość) bezpośrednio z obrazu, niezależnie od jego pozycji na osi z; stąd nazwa aksonometria. Projekcje aksonometryczne są powszechnie stosowane do rysunków technicznych.
Wyróżniamy trzy typy rzutowania aksonometrycznego: izometryczne; dimetryczne; trimetryczne.
izometryczne Izometria - wszystkie osie układu prostokątnego w przestrzeni tworzą taki sam kąt z rzutnią. Ich obrazy ulegają jednakowemu skrótowi, wobec czego na rzutni powstaje obraz trzech osi tworzących pomiędzy sobą kąty po 120 każdy. Wymiary przedmiotu równoległe do którejkolwiek osi ulegają jednakowemu skróceniu 0, 816 : 1 (po zaokrągleniu 0, 82 : 1) w stosunku do rysunku przedmiotu w rzucie prostokątnym. W praktyce często pomija się wpływ skrótu.
Rysunek: Układ osi dla rzutu izometrycznego
Rysunek: Przedmiot w rzucie izometrycznym
Izometria w grach komputerowych Gry komputerowe z odwzorowaniami izometrycznymi często są oparte na kafelkach. Żeby połączyć kafelki, projektant gier musi wziąć pod uwagę w jaki posób przekątne są rysowane w dyskretnych krokach. Jak się okazuje, linia pod kątem 30 stopni (sinus tego kąta oczywiście wynosi 0, 5) powoduje, że kroki są zbyt nieregularne. Natomiast linia pod kątem, której tangens wynosi 0, 5 ma ładny, regularny wzorzec: dwa kroki w prawo i jeden krok do góry. Wobec tego projekcja izometryczna używana w większości gier powoduje nachylenie osi x oraz y w przybliżeniu pod kątem 27 stopni (dokładniej: kąt nachylenia wynosi arc tg 0, 5). Stąd romb jest dwukrotnie szerszy, niż wyższy. Dlatego w wielu źródłach skala izometrii wynosi 1 : 2.
Rysunek: Przedmiot w rzucie izometrycznym w grach komputerowych h w = 1 2
Przekształcenie z 3D do 2D Przekształcenie ze współrzędnych (x, y, z) do współrzędnych (x, y ) dokonamy za pomocą następujących wzorów: x = (x z) cos 30 y = y + (x + z) sin 30
Przekształcenie z 3D do 2D w grach komputerowych Przekształcenie ze współrzędnych (x, y, z) do współrzędnych (x, y ) na ekranie dokonamy za pomocą następujących wzorów: x = x z y = y + x + z 2
dimetryczne Dimetria - dwie z osi układu prostokątnego tworzą z rzutnią jednakowe kąty, a zatem układ współrzędnych posiada jednakowe skróty na co najmniej dwóch osiach. Wymiary przedmiotu równoległe od osi y lub z są przedstawiane bez zkrótów, natomiast wymiary równoległe do osi x ulegają skróceniu o połowę.
Rysunek: Układ osi dla rzutu dimetrycznego
Rysunek: Przedmiot w rzucie dimetrycznym
Dimetria w grach komputerowych W przypadku dimetrii oś z jest nachylona w przybliżeniu pod kątem 27 stopni (dokładnie pod kątem arc tg 0, 5). Jest to taki sam kąt, jak w przypadku rzutu izometrycznego. Skala jest następujca: szerokość sześcianu mierzona wzdłuż osi x jest połową szerokości sześcianu widocznego z przodu. Warto zauważyć, że w przypadku dimetrii współczynnik skali jest stosowany do odległości mierzonej wzdłuż osi x (a nie jak w przypadku izometrii - względem osi z).
Rysunek: Przedmiot w rzucie dimetrycznym w grach komputerowych h w = 1 6
Przekształcenie z 3D do 2D Przekształcenie ze współrzędnych (x, y, z) do współrzędnych (x, y ) dokonamy za pomocą następujących wzorów: x = x cos 7 + y = y + z sin 42 2 z cos 42 2 x sin 7
Przekształcenie z 3D do 2D w grach komputerowych (widok z boku) Przekształcenie ze współrzędnych (x, y, z) do współrzędnych (x, y ) na ekranie dokonamy za pomocą następujących wzorów: x = x + z 2 y = y + z 4
Przekształcenie z 3D do 2D w grach komputerowych (widok z góry) Przekształcenie ze współrzędnych (x, y, z) do współrzędnych (x, y ) na ekranie dokonamy za pomocą następujących wzorów: x = x + z 4 y = y + z 2
Mapy heksagonalne w izometrii Multimedialne gry planszowe (tak jak tradycyjne gry planszowe) rozgrywają się na planszy, która jest podzielona na niewielkie pola. Najczęściej są w kształcie: kwadratu; rombu; sześciokąta.
Rysunek: Plansza z kwadratowymi polami
Dla mapy posiadającej kwadratowe pola mamy następujące wzory: x = współrzędnax szerokość y = współrzędnay wysokość
Przykład Niech: szerokość = 10, wysokość = 10, współrzędnax = 1, współrzędnay = 2. Wówczas x = 10 1 = 10 y = 10 2 = 20 Stąd [x, y] = [10, 20].
Rysunek: Przykład
Rysunek: Plansza z polami w kształcie rombu
Dla mapy posiadającej pola w kształcie rombów ułożonych jak powyżej mamy następujące wzory: x = współrzędnax szerokość + (współrzędnay % 2) szerokość 2 y = współrzędnay wysokość 2
Przykład Niech: szerokość = 10, wysokość = 10, współrzędnax = 1, współrzędnay = 2. Wówczas x = 1 10 + (2%2) 10 2 = 10 + 0 5 = 10 Stąd y = 2 10 2 = 10 [x, y] = [10, 10].
Rysunek: Przykład
Rysunek: Plansza z polami w kształcie rombu
Dla mapy posiadającej pola w kształcie rombów ułożonych jak powyżej mamy następujące wzory: x = (współrzędnax współrzędnay) szerokość 2 y = (współrzędnax + współrzędnay) wysokość 2
Przykład Niech: szerokość = 10, wysokość = 10, współrzędnax = 1, współrzędnay = 2. Wówczas x = (1 2) 10 2 = 5 y = (1 + 2) 10 2 = 15 Stąd [x, y] = [ 5, 15].
Rysunek: Przykład
Rysunek: Plansza z polami w kształcie sześciokąta
Dla mapy posiadającej pola w kształcie sześciokątów ułożonych jak powyżej mamy następujące wzory: x = współrzędnax szerokość + (współrzędnay % 2) szerokość 2 y = współrzędnay wysokość 2
Przykład Niech: szerokość = 10, wysokość = 10, współrzędnax = 1, współrzędnay = 2. Wówczas x = 1 10 + (2%2) 10 2 = 10 + 0 5 = 10 Stąd y = 2 10 2 = 10 [x, y] = [10, 10].
Rysunek: Przykład
Rysunek: Plansza z polami w kształcie sześciokąta
Dla mapy posiadającej pola w kształcie sześciokątów ułożonych jak powyżej mamy następujące wzory: x = (współrzędnax współrzędnay) szerokość 2 y = (współrzędnax + współrzędnay) wysokość 2
Przykład Niech: szerokość = 10, wysokość = 10, współrzędnax = 1, współrzędnay = 2. Wówczas x = (1 2) 10 2 = 5 y = (1 + 2) 10 2 = 15 Stąd [x, y] = [ 5, 15].
Rysunek: Wysokość pola w kształcie sześciokąta
Należy zwrócić uwagę, że w przypadku pól w kształcie sześciokątów dosyć mało intuicyjnie rozumiemy wysokość pola. Rysunek: Wyznaczanie wysokości
Ponieważ pola zakreskowane są sobie równe, to wysokością jest również następujący odcinek: Rysunek: Wyznaczanie wysokości
Poruszanie się po planszy Ważnym zagadnieniem z punktu widzenia gier komputerowych opartej na polach jest przechodzenie z jednego pola na inne. W zasadzie - w zależności od typu pola - aby poruszyć się w danym kierunku wystarczy dodać odpowiednie liczby.
Chodzenie po polach w kształcie kwadratów kierunek współrzędna X współrzędna Y północ (N) 0-1 północny wschód (NE) 1-1 wschód (E) 1 0 południowy wschód (SE) 1 1 południe (S) 0 1 południowy zachód (SW) -1 1 zachód (W) -1 0 północny zachód(nw) -1-1
Rysunek: Plansza o polach w kształcie kwadratów Na przykład: pole NE = (2, 2) + (współrzędna X, współrzędna Y) = (2, 2) + (1, 1) = (3, 1).
Chodzenie po polach w kształcie rombów kierunek współrzędna X współrzędna Y północ (N) -1-1 północny wschód (NE) 0-1 wschód (E) 1-1 południowy wschód (SE) 1 0 południe (S) 1 1 południowy zachód (SW) 0 1 zachód (W) -1 1 północny zachód(nw) -1 0
Rysunek: Plansza o polach w kształcie rombów Na przykład: pole NE = (2, 2) + (współrzędna X, współrzędna Y) = (2, 2) + (0, 1) = (2, 1).
Chodzenie po polach w kształcie sześciokątów kierunek współrzędna X współrzędna Y północ (N) 0-2 północny wschód (NE) współrzędna y %2-1 wschód (E) 1 0 południowy wschód (SE) współrzędna y %2 1 południe (S) 0 2 południowy zachód (SW) współrzędna y %2 1 1 zachód (W) -1 0 północny zachód(nw) współrzędna y %2 1-1
Rysunek: Plansza o polach w kształcie sześciokątów Na przykład: pole NE = (2, 2) + (współrzędna X, współrzędna Y) = (2, 2) + (0, 1) = (2, 1).