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

Podobne dokumenty