pobierz - microbot.com.pl
Transkrypt
pobierz - microbot.com.pl
Jacek Matulewski, Tomasz Dziubak Grafika 3D na przykładzie XNA 3.1 ITA-106 Wersja 1.02 (XNA 3.1, PS 2.0) Toruo, listopad 2010 Piotr Bubacz ITA-103 Aplikacje Internetowe 2010 Jacek Matulewski, Tomasz Dziubak. Autor udziela prawa do bezpłatnego kopiowania i dystrybuowania wśród pracowników uczelni oraz studentów objętych programem ITAcademy. Wszelkie informacje dotyczące programu można uzyskad: [email protected]. Wszystkie inne nazwy firm i producentów wymienione w niniejszym dokumencie mogą byd znakami towarowymi zarejestrowanymi przez ich właścicieli. Inne produkty i nazwy firm używane w treści mogą byd nazwami zastrzeżonymi przez ich właścicieli. Kontakt z autorami: Jacek Matulewski, e-mail: [email protected], WWW: http://www.fizyka.umk.pl/~jacek Tomasz Dziubak, e-mail: [email protected] Adres do korespondencji: Jacek Matulewski Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu ul. Grudziądzka 5 87-100 Toruo Strona i-2 Piotr Bubacz ITA-103 Aplikacje Internetowe Spis treści I. Podstawy grafiki 3D 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Podstawowe koncepcje grafiki 3D (podstawy teoretyczne) Komponenty gry Oświetlenie Odwzorowywanie tekstur Dźwięk w XNA 3.0. Komponenty wizualne Gra, czyli sterowana animacja (kontrolery gier) Projekt gry Light Cycles Modelowanie rzeczywistości, czyli o fizyce w grach Wczytywanie i rysowanie gotowych modeli Kolokwium 1 II. Programowanie karty graficznej (shadery) 11. 12. 13. 14. 15. Tworzenie efektów. Pixel Shader i Vertex Shader Implementacja oświetlenia w HLSL Teksturowanie w HLSL Odwzorowywanie cieni (shadow mapping) Kolokwium 2 Dodatki A. B. C. D. Dystrybucja gier Blob Futro Krzywe i płaszczyzny Béziera Strona i-3 Piotr Bubacz ITA-103 Aplikacje Internetowe Wprowadzenie Informacje o kursie Opis kursu Kurs zawiera informacje dotyczące tworzenia programów korzystających z grafiki trójwymiarowej czasu rzeczywistego, w szczególności gier. Narzędziem wykorzystywanym do tworzenia grafiki jest Microsoft XNA. Wspomniane są również inne zagadnienia związane z grami, a mianowicie odtwarzanie dźwięku, obsługa kontrolerów gier (gamepad, myszka, klawiatura) oraz elementy grafiki 2D. Kurs rozpoczynamy od zagadnieo zasadniczych dla grafiki trójwymiarowej, a więc tworzenia brył, oświetlenia i teksturowania. Omawiane są również kwestie techniczne związane z tworzeniem gier w XNA i C#, a mianowicie tworzenie komponentów gier, czy posługiwanie się modelami. Następnie zajmiemy się obsługą jednostek programowalnych kart graficznych tj. shaderami. W jego ramach m.in. budowany jest program w języku HLSL, który wykorzystuje model Phonga oświetlenia, realizuje teksturowanie oraz generowanie cieni metodą shadow mapping. Cel kursu Celem kursu jest przedstawienie zagadnieo związanych z tworzeniem aplikacji korzystających z grafiki 3D w XNA, dzięki czemu będziesz w stanie samodzielnie tworzyd gry. Uzyskane kompetencje Po zrealizowaniu kursu będziesz: budowad obiekty trójwymiarowe oraz obracad i przesuwad je w przestrzeni użyd koloru użyd oświetlenia do cieniowania obiektów trójwymiarowych użyd tekstur korzystad z komponentów gier do sprawnego zarządzania kodem używad dźwięku i efektów dźwiękowych w XNA używad gamepada, myszki i klawiatury do wpływania na stan gry potrafił używad podstawowych zasad fizyki klasycznej do modelowania zachowania obiektów programowad karty graficzne w języku HLSL Wymagania wstępne Do zrealizowania tego kursu powinieneś posiadad: wiedzę z zakresu programowania obiektowego w języku C#, którą obejmują kursy ITA-104 „Wprowadzenie do programowania„ i ITA-105 „Programowanie obiektowe” Zakres tematyczny kursu Opis modułów W Tab. 1 przedstawiony został opis modułów, zawierający podział na zajęcia. Każde zajęcie jest zaplanowane na 90 minut. Wykładowca może dostosowad harmonogram do swoich potrzeb. Strona i-4 Piotr Bubacz ITA-103 Aplikacje Internetowe Tab. 1 Zakres tematyczny modułów Numer moduł Tytuł Opis Moduł 1 Podstawowe koncepcje grafiki 3D (podstawy teoretyczne) VS/XNA GS. Projekt gry. Werteksy. Prymitywy. Nawijanie. Kolor. Przekształcenia w przestrzeni 3D. Rzutowanie perspektywiczne i izometryczne. Ustawienie kamery. Animacja. Antyaliasing. Bufor werteksów i dynamiczny bufor werteksów. Ustawienia okna gry. Projektowanie komponentów. Metody Update i Draw komponentu. Rejestracja instancji komponentu. Komunikacja za pośrednictwem usług gier. Moduł 2 Komponenty gry Moduł 3 Oświetlenie Moduł 4 Odwzorowywanie tekstur Moduł 5 Dźwięk w XNA 3.0. Komponenty wizualne Definiowanie formatów werteksów. Wektory normalne. Oświetlenie domyślne. Typy światła. Mieszanie kolorów (przezroczystośd, mgła). Rzutowanie cieni. Współrzędne teksturowania. Wczytywanie i nakładanie tekstur. Zawijanie. Mipmapy. Skybox. Detekcja możliwości karty graficznej w zakresie teksturowania. Klasa MediaPlayer (odtwarzanie dźwięku z plików skompresowanych, kontrola głośności, transformata Fouriera natężenia dźwięku). XACT (przygotowanie „paczek” dźwiękowych, odtwarzanie paczek, odtwarzanie w pętli, miksowanie, efekty 3D). Moduł 6 Gra, czyli sterowana animacja Klawiatura (wykrycie przytrzymania i naciśnięcia klawiszy). Mysz (odczytywanie pozycji kursora, rzutowanie na przestrzeo 3D, detekcja naciśnięcia przycisków myszy, obsługa rolki). Gamepad (thumbstick, spusty, wibracje). Projektowanie gier 2D.). Moduł 7 Projekt gry Light Cycles Projekt prostej gry korzystającej z gamepada lub klawiatury (bez oświetlenia i teksturownia). Korzystanie z kolejki. Proste AI. Użycie dźwięku. Równanie Newtona. Siły sprężyste z tłumieniem. Siły kontaktowe. Metody Eulera i Verleta. Kolizje kul. Moduł 8 Modelowanie rzeczywistości, czyli fizyka w grach Strona i-5 Piotr Bubacz ITA-103 Aplikacje Internetowe Moduł 9 Korzystanie z gotowych modeli i modelowanie terenu za pomocą map wysokości W tym module dowiesz się, jak w projekcie Microsoft XNA Game Studio 3.0 wczytad oraz wyświetlid trójwymiarowe modele zapisane w plikach, w formatach *.fbx lub *.x (formaty plików wprowadzone zostały odpowiednio przez firmę Autodesk oraz Microsoft). Dodatkowo zapoznasz się z techniką generowania terenu na podstawie tzw. mapy wysokości (heightmap) oraz techniką uśredniania normalnych. Moduł 11 Tworzenie efektów. Pixel Shader i Vertex Shader W tym module znajdziesz informacje dotyczące programowania jednostek Pixel i Vertex Shader znajdujących się na współczesnych kartach graficznych. Poznasz język HLSL umożliwiający oprogramowanie tychże jednostek. Zapoznasz się także ze środowiskiem programistycznym FX Composer przeznaczonym do szybkiego tworzenia efektów graficznych w czasie rzeczywistym. W tym module znajdziesz informacje dotyczące oświetlenia oraz jego modeli, których poznanie jest niezbędne w przygotowywaniu różnego typu efektów specjalnych. Opisują one zarówno kolor jak i przestrzenny rozkład odbijanego światła. Każdy model powinien byd na tyle prosty aby wyznaczanie oświetlenia przy jego pomocy było jak najszybsze. W tym module znajdziesz informacje na temat wykorzystania tekstur w efektach graficznych. Poznasz metod tworzenia bardziej wyrafinowanych efektów niż poznane w poprzednich modułach (multiteksturing, bump-mapping). W module będzie także pokazany sposób ich implementacji w języku HLSL. Moduł opisuje także sposób wykorzystania efektów w projekcie XNA. Przygotowanie i użycie mapy głębi. Pozaekranowy cel renderowania. Moduł 12 Implementacja oświetlenia w HLSL Moduł 13 Teksturowanie w HLSL Moduł 14 Odwzorowywanie cieni (shadow mapping) Dodatek A Dystrybucja gier Dodatek B Blob Dodatek C Futro Dodatek D Krzywe i powierzchnie Béziera Dystrybucja gier do komputerów PC z systemem Windows. Uruchamianie gier na konsoli Xbox 360. Interfejs Guide. Konstrukcja i rysowanie bloba Generowanie tekstury wyznaczającej położenie kępek futra. Renderowanie warstw. Ruch futra. Tworzenie parametrycznych krzywych wielomianowych Strona i-6