Swoje triki zdradzą Ci prawdziwi guru ze świata twórców gier Tworzenie gier 3D wymaga opanowania nie tylko języka programowania, ale także wielu innych dziedzin wiedzy -- analizy matematycznej, rachunku macierzowego i wektorowego oraz geometrii. Oczywiście każda z tych nauk została już opisana w dziesiątkach tomów. Książka, którą trzymasz w ręce, zawiera wszystkie informacje niezbędne do stworzenia gry 3D działającej w środowisku Windows, zebrane w jednym tomie. Korzystając z niej, nie będziesz już musiał przerzucać tysięcy stron w poszukiwaniu potrzebnego Ci wzoru.
Autor książki, wykorzystując ponad dwudziestopięcioletnie doświadczenie w programowaniu, przedstawi Ci:
algorytmy matematyczne wykorzystywane w grafice 3D,
zasady programowania w Windows i DirectX,
algorytmy wyświetlania grafiki 2D i 3D,
techniki animacji i renderingu 3D,
mapowanie tekstur,
techniki symulacji oświetlenia i wiele innych informacji.
Korzystając z tej książki, opracujesz doskonały, oparty wyłącznie na warstwie oprogramowania silnik 3D dla gry, wykorzystasz w swoich grach modele i postaci stworzone w programach 3D, stworzysz realistyczną scenerię gry 3D i zoptymalizujesz kod źródłowy programu pod kątem szybkości jego wykonywania.
Takich informacji nie znajdziesz w żadnej innej książce.
O autorze:
Andre LaMothe autor uznanych przez rynek książek o programowaniu gier i grafiki trójwymiarowej. Posiada stosowne wykształcenie z zakresu matematyki, informatyki i elektrotechniki.
[więcej...\
Znajdź podobne książki
Ostatnio czytane w tej kategorii
Darmowy fragment publikacji:
IDZ DO
IDZ DO
PRZYK£ADOWY ROZDZIA£
PRZYK£ADOWY ROZDZIA£
SPIS TREĎCI
SPIS TREĎCI
KATALOG KSI¥¯EK
KATALOG KSI¥¯EK
KATALOG ONLINE
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
TWÓJ KOSZYK
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
O NOWOĎCIACH
O NOWOĎCIACH
ZAMÓW CENNIK
ZAMÓW CENNIK
CZYTELNIA
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Triki najlepszych
programistów gier 3D.
Vademecum profesjonalisty
Autor: Andre LaMothe
T³umaczenie: Adam Bochenek (wstêp, rozdz. 1 –3),
Jaros³aw Dobrzañski (rozdz. 6 – 9), S³awomir
Dzieniszewski (rozdz. 14 – 16, dod. A – F)
ISBN: 83-7361-267-X
Tytu³ orygina³u: Tricks of the 3D Game Programming Gurus
Format: B5, stron: 1312
Swoje triki zdradz¹ Ci prawdziwi guru ze ġwiata twórców gier
Tworzenie gier 3D wymaga opanowania nie tylko jêzyka programowania, ale tak¿e
wielu innych dziedzin wiedzy -- analizy matematycznej, rachunku macierzowego
i wektorowego oraz geometrii. Oczywiġcie ka¿da z tych nauk zosta³a ju¿ opisana
w dziesi¹tkach tomów. Ksi¹¿ka, któr¹ trzymasz w rêce, zawiera wszystkie informacje
niezbêdne do stworzenia gry 3D dzia³aj¹cej w ġrodowisku Windows, zebrane w jednym
tomie. Korzystaj¹c z niej, nie bêdziesz ju¿ musia³ przerzucaæ tysiêcy stron
w poszukiwaniu potrzebnego Ci wzoru.
Autor ksi¹¿ki, wykorzystuj¹c ponad dwudziestopiêcioletnie doġwiadczenie
w programowaniu, przedstawi Ci:
• algorytmy matematyczne wykorzystywane w grafice 3D,
• zasady programowania w Windows i DirectX,
• algorytmy wyġwietlania grafiki 2D i 3D,
• techniki animacji i renderingu 3D,
• mapowanie tekstur,
• techniki symulacji oġwietlenia i wiele innych informacji.
Korzystaj¹c z tej ksi¹¿ki, opracujesz doskona³y, oparty wy³¹cznie na warstwie
oprogramowania silnik 3D dla gry, wykorzystasz w swoich grach modele i postaci
stworzone w programach 3D, stworzysz realistyczn¹ sceneriê gry 3D i zoptymalizujesz
kod ĥród³owy programu pod k¹tem szybkoġci jego wykonywania.
O autorze:
Andre LaMothe to autor uznanych przez rynek ksi¹¿ek o programowaniu gier i grafiki
trójwymiarowej. Ci¹g jego sukcesów wydawniczych zapocz¹tkowa³o pierwsze wydanie
tej ksi¹¿ki (ustanowi³o ono swego czasu standardy programowania gier dla systemu
DOS). Andre LaMothe programuje od ponad 25 lat i oprócz niew¹tpliwej praktyki
posiada stosowne wykszta³cenie z zakresu matematyki, informatyki i elektrotechniki.
Znany jest równie¿ jako za³o¿yciel firm Xtreme Games LCC, Nurve Networks i XGDC.
5RKUVTGħEK
1#WVQTG
2TGFOQYC
9UVúR
úħè+ 9RTQYCFGPKGFQRTQITCOQYCPKCIKGT
4QFKCđ 9UVúRFQRTQITCOQYCPKCIKGT
Wprowadzenie ...................................................n...................................................n.................27
Elementy gier 2D/3D ...................................................n...................................................n.......29
Ogólne wskazówki dotyczące programowania gier ...................................................n...........33
Narzędzia ...................................................n...................................................n.........................36
Edytor poziomów 3D...................................................n...................................................n.39
Przygotowanie kompilatora...................................................n..........................................40
Przykładowa gra 3D: Raiders 3D ...................................................n.......................................43
Pętla obsługi zdarzeń ...................................................n...................................................n.62
Logika gry 3D...................................................n...................................................n............62
Rzutowanie 3D ...................................................n...................................................n..........64
Gwiezdne tło...................................................n...................................................n..............66
Działo laserowe i wykrywanie kolizji ...................................................n..........................66
Eksplozja ...................................................n...................................................n...................66
Zasady gry ...................................................n...................................................n.................67
Podsumowanie ...................................................n...................................................n.................67
4QFKCđ -TÎVMKMWTURTQITCOQYCPKCY9KPFQYUK KTGEV:
Model programowania Win32 ...................................................n............................................69
Programowanie w Windows — absolutne minimum ...................................................n.........70
Wszystko zaczyna się od WinMain() ...................................................n...........................70
Wzorcowa aplikacja Windows ...................................................n...........................................75
Klasa okna ...................................................n...................................................n.................76
Rejestracja klasy okna ...................................................n..................................................80
Tworzenie okna ...................................................n...................................................n.........80
Obsługa zdarzeń ...................................................n...................................................n........82
Pętla obsługi komunikatów ...................................................n..........................................87
Pętla obsługi komunikatów pracująca w czasie rzeczywistym .......................................90
DirectX i COM w pigułce...................................................n...................................................n91
HEL i HAL ...................................................n...................................................n................93
Komponenty DirectX ...................................................n...................................................n94
Wprowadzenie do COM ...................................................n...................................................n..95
Co to jest obiekt COM? ...................................................n................................................96
Tworzenie i używanie interfejsów COM biblioteki DirectX ..........................................98
Dostęp do interfejsów...................................................n...................................................n98
Podsumowanie ...................................................n...................................................n...............100
6
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
4QFKCđ #DUVTCME[LP[MQORWVGT
Założenia interfejsu abstrakcyjnego komputera ...................................................n...............101
Budujemy abstrakcyjny komputer ...................................................n....................................103
System video, bufor ramki...................................................n..........................................103
Praca z kolorami ...................................................n...................................................n......106
Kopiowanie bufora ...................................................n...................................................n..108
Kompletny system graficzny abstrakcyjnego komputera..............................................110
Dźwięk, muzyka, urządzenia wejścia...................................................n.........................110
Konsola do gier T3DLIB ...................................................n..................................................111
Podstawowa konsola do gier ...................................................n......................................111
Biblioteka T3DLIB ...................................................n...................................................n........116
Architektura modułu graficznego...................................................n...............................117
Podstawowe definicje ...................................................n.................................................117
Makra...................................................n...................................................n.......................119
Typy danych, struktury...................................................n...............................................119
Funkcje ...................................................n...................................................n....................122
Globalna dominacja...................................................n...................................................n.125
Interfejs DirectDraw ...................................................n...................................................n126
Funkcje operujące na figurach 2D...................................................n..............................130
Funkcje matematyczne i obsługa błędów...................................................n...................136
Mapy bitowe ...................................................n...................................................n............138
Obsługa palety w trybie 8-bitowym ...................................................n...........................142
Funkcje pomocnicze ...................................................n...................................................n145
Obiekty BOB ...................................................n...................................................n...........146
T3DLIB2 — moduł obsługi urządzeń wejścia ...................................................n.................154
T3DLIB3 — biblioteka obsługi dźwięku i muzyki ...................................................n..........159
Definicje ...................................................n...................................................n..................160
Typy...................................................n...................................................n.....................
....160
Zmienne globalne ...................................................n...................................................n....161
DirectSound API...................................................n...................................................n......161
DirectMusic API...................................................n...................................................n......166
Ostateczna postać konsoli T3D...................................................n.........................................168
Przypisanie funkcji graficznych abstrakcyjnemu modelowi .........................................168
Konsola T3DLIB ...................................................n...................................................n.....171
Przykładowe aplikacje ...................................................n...................................................n...179
Aplikacje okienkowe ...................................................n..................................................179
Aplikacje pełnoekranowe ...................................................n...........................................180
Dźwięk i muzyka ...................................................n...................................................n.....181
Klawiatura, myszka, joystick...................................................n......................................181
Podsumowanie ...................................................n...................................................n...............184
úħè++ 1DNKEGPKCKVTCPUHQTOCELGYVTGEJY[OKCTCEJ
4QFKCđ
6T[IQPQOGVTKCYGMVQT[OCEKGTGKMYCVGTPKQP[
ōECđCVCOCVGOCV[MC
Notacje matematyczne...................................................n...................................................n...187
Dwuwymiarowe układy współrzędnych...................................................n...........................188
Dwuwymiarowy układ współrzędnych kartezjańskich .................................................189
Dwuwymiarowy układ współrzędnych biegunowych...................................................n190
Trójwymiarowe układy współrzędnych...................................................n............................193
Trójwymiarowe współrzędne kartezjańskie ...................................................n...............193
Trójwymiarowe współrzędne cylindryczne...................................................n......................196
Konwersja trójwymiarowych współrzędnych kartezjańskich
do współrzędnych cylindrycznych...................................................n...........................196
Spis treści
7
Trójwymiarowe współrzędne sferyczne ...................................................n...........................197
Podstawy trygonometrii...................................................n...................................................n.198
Trójkąt prostokątny...................................................n...................................................n..199
Odwrotne funkcje trygonometryczne ...................................................n.........................200
Zależności trygonometryczne...................................................n.....................................201
Wektory ...................................................n...................................................n.........................202
Długość wektora ...................................................n...................................................n......203
Normalizacja...................................................n...................................................n............204
Mnożenie wektora przez wartości skalarne...................................................n................204
Dodawanie wektorów ...................................................n.................................................205
Odejmowanie wektorów...................................................n.............................................206
Iloczyn skalarny wektorów...................................................n.........................................206
Iloczyn wektorowy ...................................................n...................................................n..209
Wektor zerowy ...................................................n...................................................n........211
Wektory położenia i wektory przemieszczenia ...................................................n..........211
Wektory jako kombinacje liniowe składowych...................................................n..........211
Macierze i algebra liniowa...................................................n................................................212
Macierz jednostkowa...................................................n..................................................214
Dodawanie macierzy ...................................................n..................................................214
Transpozycja macierzy ...................................................n...............................................215
Mnożenie macierzy...................................................n...................................................n..215
Reguły mnożenia macierzy ...................................................n........................................217
Wyznaczanie macierzy odwrotnej i rozwiązywanie układów równań................................217
Reguła Cramera ...................................................n...................................................n.......219
Przekształcenia geometryczne z wykorzystaniem macierzy .........................................221
Współrzędne jednorodne ...................................................n............................................222
Przekształcenia macierzowe ...................................................n.......................................223
Podstawowe obiekty geometryczne...................................................n..................................230
Punkty...................................................n...................................................n...................
...230
Proste ...................................................n...................................................n.......................230
Proste w przestrzeni trójwymiarowej ...................................................n.........................232
Płaszczyzny ...................................................n...................................................n.............234
Równania parametryczne...................................................n..................................................238
Proste parametryczne na płaszczyźnie i w przestrzeni trójwymiarowej .......................238
Parametryczne definicje odcinków, wykorzystujące zwykły wektor kierunkowy v.....239
Parametryczne definicje odcinków,
wykorzystujące jednostkowy wektor kierunkowy |v| = 1 ...........................................240
Parametryczne proste w przestrzeni trójwymiarowej...................................................n.241
Kwaterniony — wprowadzenie ...................................................n........................................246
Teoria liczb zespolonych ...................................................n............................................247
Rozszerzenie liczb zespolonych ...................................................n.................................252
Zastosowania kwaternionów ...................................................n......................................257
Wstęp do analizy matematycznej ...................................................n.....................................261
Pojęcie nieskończoności ...................................................n.............................................261
Granice............................................n...................................................n............................263
Sumy i szeregi liczbowe skończone ...................................................n...........................264
Szeregi liczbowe nieskończone ...................................................n..................................266
Pochodne ...................................................n...................................................n.................267
Całki...............................................n...................................................n.............................274
Podsumowanie ...................................................n...................................................n...............279
4QFKCđ
+ORNGOGPVCELCOQFWđWOCVGOCV[EPGIQ
Moduł matematyczny — przegląd...................................................n....................................282
Struktura plików modułu matematycznego...................................................n................282
Konwencja nazewnicza ...................................................n..............................................282
8
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
Obsługa błędów ...................................................n...................................................n.......283
Słowo na temat języka C++...................................................n........................................284
Struktury i typy danych...................................................n...................................................n..284
Wektory i punkty ...................................................n...................................................n.....284
Równania parametryczne prostych...................................................n.............................286
Płaszczyzny w przestrzeni trójwymiarowej ...................................................n...............287
Macierze ...................................................n...................................................n..................287
Kwaterniony ...................................................n...................................................n............290
Obsługa współrzędnych niekartezjańskich...................................................n.................291
Dwuwymiarowy układ współrzędnych biegunowych...................................................n292
Trójwymiarowy układ współrzędnych cylindrycznych ................................................293
Trójwymiarowy układ współrzędnych sferycznych...................................................n...293
Liczby stałoprzecinkowe ...................................................n............................................294
Stałe matematyczne ...................................................n...................................................n.......295
Makrodefinicje i funkcje rozwijane w miejscu wywołania .................................................297
Funkcje użytkowe i funkcje konwersji...................................................n.......................301
Funkcje manipulujące punktami i wektorami ...................................................n............301
Macierze ...................................................n...................................................n..................302
Kwaterniony ...................................................n...................................................n............304
Obliczenia stałoprzecinkowe...................................................n......................................304
Prototypy...................................................n...................................................n................
........305
Zmienne globalne ...................................................n...................................................n..........308
Interfejs programowy modułu matematycznego ...................................................n..............308
Funkcje trygonometryczne ...................................................n.........................................309
Funkcje obsługi różnych układów współrzędnych...................................................n.....310
Funkcje obsługi wektorów...................................................n..........................................313
Funkcje operujące na macierzach...................................................n...............................321
Funkcje operujące parametryczną reprezentacją prostych
na płaszczyźnie i w przestrzeni trójwymiarowej ...................................................n.....333
Funkcje obsługi płaszczyzn trójwymiarowych...................................................n...........337
Funkcje obsługi kwaternionów...................................................n...................................341
Funkcje obliczeń stałoprzecinkowych...................................................n........................350
Funkcje rozwiązujące równania macierzowe ...................................................n.............355
Elementarz arytmetyki zmiennoprzecinkowej z wykorzystaniem koprocesora..................357
Architektura jednostki zmiennoprzecinkowej ...................................................n............358
Stos jednostki zmiennoprzecinkowej ...................................................n.........................359
Zestaw instrukcji jednostki FPU...................................................n.................................361
Klasyczny tryb adresowania operandów ...................................................n....................364
Tryb adresowania operandów z odwołaniem do pamięci .............................................364
Tryb adresowania operandów z odwołaniem do rejestru ..............................................365
Adresowanie operandów ze zdjęciem operandu ze stosu..............................................365
Przykłady zastosowania instrukcji jednostki FPU...................................................n......366
Instrukcje FLD...................................................n...................................................n.........366
Instrukcje FST ...................................................n...................................................n.........367
Instrukcje FADD ...................................................n...................................................n.....368
Instrukcje FSUB ...................................................n...................................................n......371
Instrukcje FMUL ...................................................n...................................................n.....372
Instrukcje FDIV...................................................n...................................................n.......373
Stosowanie modułu matematycznego — uwagi...................................................n...............374
Nowy szablon aplikacji ...................................................n..............................................375
Słowo o optymalizacji modułu ...................................................n.........................................375
Podsumowanie ...................................................n...................................................n...............376
Spis treści
9
4QFKCđ 9RTQYCFGPKGFQITCHKMK
Filozofia silnika 3D ...................................................n...................................................n.......377
Struktura silnika gry 3D...................................................n...................................................n.378
..378
Silnik 3D...................................................n...................................................n................
Silnik gry ...................................................n...................................................n...............
..379
System sterowania grą i gry sieciowej ...................................................n.......................379
System animacji...................................................n...................................................n.......379
Wykrywanie kolizji i system nawigacji...................................................n......................384
Moduł fizyki ...................................................n...................................................n............384
System sztucznej inteligencji...................................................n......................................386
Baza modeli 3D i grafiki ...................................................n............................................387
Układy współrzędnych trójwymiarowych ...................................................n........................388
Współrzędne modelu (lokalne)...................................................n...................................389
Współrzędne świata gry...................................................n..............................................392
Współrzędne kamery ...................................................n..................................................396
Ostateczna reprezentacja świata 3D za pomocą współrzędnych kamery......................404
Usuwanie ukrytych obiektów (powierzchni) i przycinanie...........................................405
Współrzędne perspektywy...................................................n..........................................411
Zakończenie potoku — współrzędne ekranowe...................................................n.........422
Podstawowe struktury danych 3D ...................................................n....................................430
Reprezentacje danych opisujących wielokąty w grafice 3D .........................................431
Definiowanie wielokątów...................................................n...........................................433
Definiowanie obiektów...................................................n...............................................439
Reprezentowanie światów ...................................................n..........................................443
Narzędzia 3D ...................................................n...................................................n.................443
Animacja i dane o ruchu...................................................n.............................................445
Ładowanie danych ze źródeł zewnętrznych ...................................................n.....................446
.446
Pliki PLG ...................................................n...................................................n................
Pliki NFF ...................................................n...................................................n................
.449
Pliki 3D Studio ...................................................n...................................................n........452
Pliki COB firmy Caligari...................................................n............................................459
Pliki .X Microsoft DirectX ...................................................n.........................................461
Formaty plików 3D — podsumowanie ...................................................n......................461
Proste przekształcenia i animacja ...................................................n.....................................462
Przesunięcie w przestrzeni...................................................n..........................................462
Obrót w przestrzeni ...................................................n...................................................n.463
Zmiana kształtu...................................................n...................................................n........465
Podsumowanie potoku 3D ...................................................n................................................466
Typy silników 3D ...................................................n...................................................n.........
.467
Silniki przestrzeni kosmicznej...................................................n....................................468
Silniki terenu......................................n...................................................n.........................468
Silniki pomieszczeń zamkniętych ...................................................n..............................470
Ray casting i silniki wokselowe ...................................................n.................................471
Silniki hybrydowe...................................................n...................................................n....472
Integracja całości w ostateczną postać silnika...................................................n..................472
Podsumowanie ...................................................n...................................................n...............473
4QFKCđ 4GPFGTQYCPKGħYKCVÎYUMKGNGVQY[EJY
Ogólna architektura silnika szkieletowego ...................................................n.......................475
Struktury danych i potok 3D ...................................................n......................................476
Główna lista wielokątów ...................................................n............................................479
Nowe moduły programowe ...................................................n........................................482
Piszemy program ładujący pliki 3D...................................................n..................................482
Program ładujący pliki PLG (PLX)...................................................n............................485
10
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
Budowanie potoku 3D ...................................................n...................................................n...491
Ogólne funkcje przekształcające ...................................................n................................491
Przekształcenie współrzędnych lokalnych na współrzędne świata 3D .........................497
Eulerowski model kamery ...................................................n..........................................500
Model kamery UVN ...................................................n...................................................n503
Przekształcenie współrzędnych świata na współrzędne kamery...................................515
Usuwanie obiektów ...................................................n...................................................n.519
Usuwanie ścian zwróconych tyłem ...................................................n............................523
Przekształcenie współrzędnych kamery na współrzędne perspektywy.........................526
Przekształcenie współrzędnych perspektywy na współrzędne ekranowe .....................530
Połączone przekształcenie do współrzędnych perspektywy
i współrzędnych ekranowych...................................................n...................................535
Renderowanie świata 3D ...................................................n..................................................538
Rzut oka na potok 3D ...................................................n.................................................538
Programy demonstracyjne 3D ...................................................n..........................................542
Pojedynczy trójkąt 3D — DEMOII7_1.CPP|EXE ...................................................n.....542
Szkielet sześcianu 3D — DEMOII7_2.CPP|EXE...................................................n......545
Szkielet sześcianu 3D z usuwaniem ścian zwróconych tyłem
— DEMOII7_3.CPP|EXE...................................................n........................................548
Czołg 3D — DEMOII7_4.CPP|EXE...................................................n..........................550
Czołgi 3D i latająca kamera — DEMOII7_5.CPP|EXE ...............................................553
Wycieczka po świecie gry à la Battle Zone — DEMOII7_6.CPP|EXE........................554
Podsumowanie ...................................................n...................................................n...............559
úħè+++ 2QFUVCY[TGPFGTQYCPKC
4QFKCđ /QFGNQYCPKGDT[đKRTQUVGQħYKGVNGPKG
Proste modele oświetlenia w grafice komputerowej ...................................................n........564
Modele kolorów i materiały ...................................................n.......................................566
Typy świateł ...................................................n...................................................n............574
Oświetlanie i rasteryzacja trójkątów...................................................n.................................582
Przygotowania do implementacji oświetlenia ...................................................n............586
Definiowanie materiałów ...................................................n...........................................587
Definiowanie świateł ...................................................n..................................................591
Cieniowanie w praktyce...................................................n...................................................n.596
Cieniowanie w trybie 16-bitowym ...................................................n.............................596
Cieniowanie w trybie 8-bitowym ...................................................n...............................597
Sprawny model RGB w trybach 8-bitowych...................................................n..............597
Model z uproszczonym natężeniem dla trybów 8-bitowych .........................................601
Cieniowanie jednorodne ...................................................n.............................................605
Cieniowanie płaskie...................................................n...................................................n.607
Cieniowanie płaskie w trybie 8-bitowym...................................................n...................622
Wstęp do cieniowania Gourauda...................................................n................................624
Wstęp do cieniowania Phonga...................................................n....................................626
Sortowanie względem głębokości i algorytm malarza ...................................................n.....627
Praca z nowymi formatami plików...................................................n...................................632
Klasa parsera......................................n...................................................n.........................632
Interpretacja funkcji pomocniczych ...................................................n...........................635
Format ASCII programu 3D Studio Max (.ASC)...................................................n.......638
Format ASCII programu trueSpace (.COB) ...................................................n...............641
Przegląd formatu binarnego .MD2 z gry Quake II...................................................n.....650
Przegląd narzędzi do modelowania 3D ...................................................n............................651
Podsumowanie ...................................................n...................................................n...............654
Spis treści
11
4QFKCđ
+PVGTRQNCE[LPGVGEJPKMKEKGPKQYCPKCKCHKPKEPGOCRQYCPKGVGMUVWT
Nowe funkcje silnika T3D...................................................n................................................655
Ulepszanie struktur danych i budowy silnika T3D...................................................n...........657
Nowe definicje...................................................n...................................................n.........657
Nowe struktury matematyczne ...................................................n...................................660
Makra pomocnicze ...................................................n...................................................n..661
Dodatkowe elementy umożliwiające reprezentację danych siatki 3D ..........................662
Aktualizacja struktur obiektów i listy renderowania...................................................n..668
Przegląd funkcji i prototypów ...................................................n....................................672
Nowe wersje procedur ładujących obiekty...................................................n.......................680
Aktualizacja starego dobrego czytnika .PLG (.PLX) ...................................................n.680
Aktualizacja czytnika formatu .ASC z 3D Studio Max.................................................691
Aktualizacja czytnika .COB firmy Caligari ...................................................n...............692
Powtórka z rasteryzacji wielokątów ...................................................n.................................697
Rasteryzacja trójkąta...................................................n...................................................n697
Konwencja wypełniania ...................................................n.............................................702
Przycinanie ...................................................n...................................................n..............704
Nowe funkcje kreślące trójkąty ...................................................n..................................706
Zabiegi optymalizacyjne...................................................n.............................................710
Implementacja cieniowania Gourauda...................................................n..............................712
Cieniowanie Gourauda bez oświetlenia ...................................................n.....................713
Uzupełnianie procedury cieniowania Gourauda o oświetlanie wierzchołków..............723
Podstawy teorii próbkowania...................................................n............................................732
Próbkowanie w jednym wymiarze ...................................................n.............................733
Interpolacja dwuliniowa ...................................................n.............................................735
Interpolacja u i v ...................................................n...................................................n......737
Implementacja afinicznego mapowania tekstur ...................................................n.........739
Uwzględnienie tekstur w module oświetlenia i rasteryzacji................................................742
Dodawanie oświetlenia do funkcji renderującej tekstury w trybie 16-bitowym ...........742
Podsumowanie strategii optymalizacyjnych dla trybów 8- i 16-bitowych..........................748
Tabele wyszukiwania ...................................................n.................................................748
Spójność wierzchołków siatki ...................................................n....................................749
Buforowanie ...................................................n...................................................n............749
Instrukcje SIMD ...................................................n...................................................n......749
Programy demonstracyjne ...................................................n................................................750
Raiders 3D II ...................................................n...................................................n...........751
Podsumowanie ...................................................n...................................................n...............754
4QFKCđ 2T[EKPCPKGUEGP
Przycinanie scen 3D — wprowadzenie ...................................................n............................755
Przycinanie w przestrzeni obiektu...................................................n..............................755
Przycinanie w obszarze obrazu sceny ...................................................n........................759
Omówienie algorytmów przycinania...................................................n................................760
Przycinanie — podstawy ...................................................n............................................761
Algorytm Cohena-Sutherlanda ...................................................n...................................766
Algorytm Cyrusa-Becka (Lianga-Barskiego)...................................................n.............768
Algorytm Weilera-Athertona...................................................n......................................771
Przycinanie — dodatkowe źródła informacji ...................................................n.............774
Przycinanie do ostrosłupa widzenia — przykład implementacji.........................................775
Potok przekształceń geometrycznych i nowe struktury danych....................................776
Dodawanie przycinania do silnika graficznego...................................................n..........777
Zabawa w terenie ...................................................n...................................................n...........799
Funkcja generowania terenu...................................................n.......................................800
Generowanie mapy wysokości ...................................................n...................................809
Rajd łazikiem terenowym...................................................n...........................................810
Podsumowanie ...................................................n...................................................n...............814
12
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
4QFKCđ $WHQTQYCPKGQFNGIđQħEKCYKFQEPQħèRQYKGTEJPK
Bufory odległości i identyfikowanie widocznych powierzchni — wprowadzenie .............815
Bufor Z...................................................n...................................................n...........................818
Trudności implementacji bufora Z ...................................................n.............................820
Przykład buforowania odległości ...................................................n...............................820
Obliczanie wartości Z piksela z równania płaszczyzny ................................................822
Interpolacja współrzędnej Z ...................................................n.......................................824
Problemy buforowania Z i buforowanie odwrotności Z ...............................................826
Przykładowa interpolacja Z i odwrotności Z...................................................n..............827
Tworzenie systemu z buforem głębokości...................................................n........................830
Dodawanie obsługi bufora Z do funkcji rasteryzacji...................................................n..833
Optymalizacje bufora odległości ...................................................n......................................845
Oszczędzanie pamięci...................................................n.................................................846
Rzadsze czyszczenie bufora ...................................................n.......................................846
Buforowanie mieszane ...................................................n...............................................848
Bufory odległości — problemy ...................................................n........................................849
Programy demonstrujące działanie buforów Z...................................................n.................849
Program 1.: Obrazowanie zawartości bufora Z ...................................................n..........849
Program 2.: Wodny rajd ...................................................n.............................................851
Podsumowanie ...................................................n...................................................n...............857
úħè+8 CCYCPUQYCPGVGEJPKMKTGPFGTQYCPKC
4QFKCđ CCYCPUQYCPGOGVQF[VGMUVWTQYCPKC
Teksturowanie — podejście drugie ...................................................n..................................861
Nowe struktury w pliku nagłówkowym ...................................................n.....................862
Podstawa funkcji rasteryzacji ...................................................n...........................................869
Przyjęcie formatu stałoprzecinkowego...................................................n.......................870
Nowe funkcje rasteryzacji bez buforowania Z ...................................................n...........870
Nowe funkcje rasteryzacji z buforowaniem Z...................................................n............873
Teksturowanie z cieniowaniem Gourauda...................................................n........................875
Przezroczystość i łączenie alfa ...................................................n.........................................882
Łączenie alfa z wykorzystaniem tablic przeglądowych ................................................883
Niezależne definiowanie łączenia alfa dla poszczególnych obiektów ..........................895
Łączenie alfa w module generowania terenu ...................................................n.............901
Teksturowanie z korektą perspektywiczną i buforowanie odwrotności Z...........................904
Matematyczne podstawy teksturowania z korektą perspektywiczną ............................905
Dodawanie do rasteryzatorów buforowania odwrotności Z..........................................913
Implementacja teksturowania poprawnego perspektywicznie ......................................921
Implementacja teksturowania częściowo poprawnego perspektywicznie.....................925
Aproksymacja kwadratowa w teksturowaniu perspektywicznym.................................931
Optymalizacja teksturowania — teksturowanie hybrydowe .........................................936
Dwuliniowe filtrowanie tekstur ...................................................n........................................938
Filtrowanie trzyliniowe tekstur i mipmapowanie ...................................................n.............943
Wprowadzenie do analizy Fouriera i efektu aliasingu ..................................................944
Tworzenie szeregu tekstur mipmapowania ...................................................n................949
Wybór poziomu teksturowania mip ...................................................n...........................958
Filtrowanie trzyliniowe...................................................n...............................................964
Wyświetlanie i teksturowanie wieloprzebiegowe...................................................n.............965
Zaawansowane teksturowanie w jednym wywołaniu...................................................n.......966
Nowy kontekst renderowania ...................................................n.....................................967
Wypełnianie struktury kontekstu renderowania ...................................................n.........969
Funkcja zbiorcza rasteryzacji ...................................................n.....................................971
Podsumowanie ...................................................n...................................................n...............979
4QFKCđ 2QFKCđRTGUVTGPP[KCNIQT[VO[QMTGħNCPKCYKFQEPQħEK
Nowy moduł silnika graficznego...................................................n......................................981
Podział przestrzenny i określanie widoczności powierzchni — wprowadzenie .................982
Binarny podział przestrzeni (BSP) ...................................................n...................................986
Spis treści
13
Binarny podział przestrzenny płaszczyznami równoległymni
do osi układu współrzędnych...................................................n...................................988
Binarny podział przestrzenny płaszczyznami arbitralnymi...........................................988
Binarny podział przestrzenny płaszczyznami wyznaczanynmi
przez płaszczyzny wielokątów...................................................n.................................989
Wyświetlanie (odwiedzanie) węzłów drzewa BSP ...................................................n....993
Struktury danych i funkcje obsługujące drzewa BSP...................................................n.995
Tworzenie drzewa BSP ...................................................n..............................................997
Strategie podziału ...................................................n...................................................n..1001
Przeglądanie i wyświetlanie węzłów drzewa BSP ...................................................n...1010
Wpasowanie drzew BSP do potoku renderowania...................................................n...1019
Edytor poziomu wykorzystujący drzewa BSP ...................................................n.........1021
Ograniczenia drzew BSP ...................................................n..........................................1032
Minimalizacja nadmiarowości odrysowywania z wykorzystaniem drzew BSP .........1033
Wykorzystanie drzew BSP do redukowania sceny ...................................................n..1035
Wykorzystanie drzew BSP do wykrywania kolizji ...................................................n..1045
Integracja drzew BSP ze standardowymi funkcjami rasteryzacji ...............................1045
Zbiory powierzchni potencjalnie widocznych...................................................n................1052
Zastosowania zbiorów PVS...................................................n......................................1053
Możliwe sposoby kodowania zbiorów potencjalnej widoczności...............................1055
Wyznaczanie zbiorów PVS ...................................................n......................................1057
Portale ...................................................n...................................................n..........................1059
Hierarchie brył otaczających i drzewa oktalne ...................................................n...............1063
Sposób użycia drzewa hierarchii BHV...................................................n.....................1065
Wydajność w czasie rzeczywistym ...................................................n..........................1065
Strategie budowy hierarchii BHV ...................................................n............................1067
Implementacja hierarchii BHV...................................................n.................................1069
Drzewa oktalne ...................................................n...................................................n......1076
Eliminowanie powierzchni zasłoniętych ...................................................n........................1078
Bryły zasłaniające...................................................n...................................................n..1079
Wybór obiektów zasłaniających...................................................n...............................1080
Hybrydowa metoda wyboru obiektów zasłaniających ................................................1081
Podsumowanie ...................................................n...................................................n.............1081
4QFKCđ KGPKGQħYKGVNGPKGKUGMTGV[KF
Nowy moduł silnika gry ...................................................n.................................................1083
Wprowadzenie i plan gry...................................................n................................................1083
Uproszczone zasady fizyki cieni...................................................n.....................................1084
Droga fotonów i wyliczanie intensywności światła ...................................................n.1085
Symulowanie cieni za pomocą rzutowanych obrazów i billboardów................................1088
Implementowanie rasteryzatorów z obsługą przezroczystości....................................1090
Nowa biblioteka...................................................n...................................................n.....1092
Proste cienie...................................................n...................................................n...........1094
Skalowanie cieni...................................................n...................................................n....1096
Śledzenie położenia źródła światła...................................................n...........................1100
Końcowe uwagi na temat tworzenia symulowanych cieni..........................................1105
Tworzenie cieni poprzez rzutowanie na płaszczyznę siatki obiektu .................................1105
Wzory przekształceń wektorowych dla potrzeb rzutowania .......................................1106
Optymalizowanie cieni rzutowanych na płaszczyznę .................................................1110
14
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
Wprowadzenie do mapowania oświetlenia i przechowywannia powierzchni
w pamięci podręcznej ...................................................n..................................................1110
Przechowywanie powierzchni w pamięci podręcznej .................................................1113
Generowanie map oświetlenia...................................................n..................................1114
Implementowanie mapera oświetlenia ...................................................n.....................1115
Mapowanie ciemności ...................................................n..............................................1118
Efekty specjalne z użyciem map oświetlenia ...................................................n...........1120
Optymalizowanie kodu mapowania oświetlenia ...................................................n......1120
Łącząc wszystko w jedną całość...................................................n.....................................1121
Podsumowanie ...................................................n...................................................n.............1121
úħè8
CCYCPUQYCPGRTQDNGO[CPKOCELK
OQFGNQYCPKGLCYKUMHK[EP[EJKQRV[OCNKCELC
4QFKCđ #PKOQYCPKGRQUVCEKRTQITCOQYCPKGTWEJWKY[MT[YCPKGMQNKLK
Nowy moduł silnika gry ...................................................n.................................................1125
Wprowadzenie do animacji trójwymiarowej...................................................n..................1126
Format .MD2 stosowany w grze Quake II...................................................n......................1126
Nagłówek pliku .MD2 ...................................................n..............................................1129
Ładowanie plików .MD2 gry Quake II ...................................................n....................1138
Animowanie plików .MD2 ...................................................n.......................................1147
Proste zasady animacji bez modeli bohaterów ...................................................n...............1158
Rotacja w ruchu i ruch w wyniku translacji ...................................................n.............1158
Złożone ruchy parametryczne i ruch po krzywej ...................................................n.....1161
Wykorzystywanie skryptów do programowania ruchu ...............................................1162
Wykrywanie kolizji w przestrzeni trójwymiarowej...................................................n........1164
Ograniczające sfery i walce...................................................n......................................1165
Wykorzystywanie struktur danych do przyśpieszania wykrywania kolizji.................1166
Poruszanie się po powierzchni terenu ...................................................n......................1167
Podsumowanie ...................................................n...................................................n.............1168
4QFKCđ 6GEJPKMKQRV[OCNKCELKMQFW
Wprowadzenie do technik optymalizacyjnych ...................................................n...............1169
Profilowanie kodu za pomocą kompilatora Microsoft Visualn C++
i programu VTune Intela ...................................................n.............................................1170
Profilowanie przy pomocy kompilatora Visual C++...................................................n1171
Analizowanie danych profilowania ...................................................n..........................1173
Optymalizowanie kodu za pomocą programu VTune.................................................1174
Korzystanie z kompilatora C++ firmy Intel...................................................n....................1182
Ściąganie kompilatora optymalizacyjnego Intela...................................................n.....1182
Korzystanie z kompilatora...................................................n........................................1183
Korzystanie z opcji optymalizacyjnych kompilatora ..................................................1184
Ręczne wybieranie różnych kompilatorów dla różnych plików źródłowych..............1185
Strategie optymalizacyjne...................................................n.........................................1185
Przykład programowania instrukcji SIMD w mechanizmie SSE......................................1185
Podstawy architektury SIMD ...................................................n...................................1187
Jak naprawdę wygląda korzystanie z instrukcji SIMD ...............................................1188
Klasa wektorów trójwymiarowych przystosowana do instrukcji SIMD.....................1199
Kilka podstawowych trików optymalizacyjnych...................................................n............1205
Trik 1. Pozbywanie się funkcji _ftol()...................................................n......................1205
Trik 2. Ustawianie słowa kontrolującego FPU...................................................n.........1206
Trik 3. Szybkie zerowanie liczb zmiennoprzecinkowych ...........................................1207
Trik 4. Szybkie wyciąganie pierwiastków kwadratowych ..........................................1207
Trik 5. Uproszczone wyliczanie arcustangens ...................................................n.........1207
Spis treści
15
Trik 6: Zwiększanie wartości wskaźnika...................................................n..................1208
Trik 7. Wyjmowanie instrukcji if z pętli ...................................................n..................1209
Trik 8. Rozgałęzianie potoków instrukcji...................................................n.................1209
Trik 9. Wyrównywanie danych ...................................................n................................1210
Trik 10. Wywoływanie wszystkich krótkich funkcji w miejscu .................................1210
Literatura...................................................n...................................................n......................1210
Podsumowanie ...................................................n...................................................n.............1210
QFCVMK T
QFCVGM# CYCTVQħè 41/W
QFCVGM$
+PUVCNQYCPKG KTGEV:KMQT[UVCPKGMQORKNCVQTC8KUWCN
Instalowanie DirectX ...................................................n...................................................n...1215
Korzystanie z kompilatora Visual C/C++...................................................n.......................1216
Kilka praktycznych porad związanych z kompilacją..................................................n.......1216
QFCVGM
6T[IQPQOGVTKCKYGMVQT[
Trygonometria ...................................................n...................................................n.............1219
Wektory ...................................................n...................................................n.......................1222
Długość wektora ...................................................n...................................................n....1223
Normalizacja...................................................n...................................................n..........1223
Mnożenie wektora przez skalar ............................
Pobierz darmowy fragment (pdf)
Gdzie kupić całą publikację:
Triki najlepszych programistów gier 3D. Vademecum profesjonalisty
Autor: Andre LaMothe
Opinie na temat publikacji:
Inne popularne pozycje z tej kategorii:
Czytaj również:
Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką :