[ Pobierz całość w formacie PDF ]
martwić o obci enie głównego procesora komputera rysowaniem grafiki OpenGL
zajmuje si przecie procesor karty graficznej11.
3URMHNW 5\VRZDQLH RVL XNäDGX ZVSÑäU]öGQ\FK
Narysujmy dwa układy współrz dnych: biały i zielony. W naszym przykładzie białe
osie b d odgrywały rol nieruchomej cz ci sceny. Ustalamy, e wszystkie przekształ-
cenia macierzy model-widok wyprzedzaj ce narysowanie owych białych osi nazywać
b dziemy ruchem kamery. Wszystkie pó niejsze ruchem aktorów.
Definiujemy metod 4[UWL1UKG rysuj c osie układu współrz dnych OXYZ
(listing 11.23):
/LVWLQJ Je eli chcemy narysować dwa układy współrz dnych, wygodnie przygotować
odpowiedni metod , któr b dziemy mogli wielokrotnie wykorzystywać
RTQEGFWTG 6(QTO 4[UWL1UKG TQ\OKCT 5KPING
DGIKP
IN$GIKP ).A.+0'5
IN8GTVGZ H IN8GTVGZ H TQ\OKCT 1: Y RTCYQ
IN8GTVGZ H IN8GTVGZ H TQ\OKCT 1; FQ IQT[
IN8GTVGZ H IN8GTVGZ H TQ\OKCT 1
IN'PF
GPF
Metod 4[UWL1UKG wywołujemy po raz pierwszy przed poleceniami wykonuj cymi
obroty i translacje ostrosłupa, a po raz drugi ju po narysowaniu ostrosłupa
(listing 11.24). Pierwsze wywołanie poprzedzamy zmian koloru na biały,
a drugie na zielony.
/LVWLQJ Rysowanie nieruchomego i ruchomego układu współrz dnych
XQKF AAHCUVECNN 6(QTO 4[UWL5EGPG
]
EQPUV HNQCV Z
EQPUV HNQCV [
EQPUV HNQCV \
2T\[IQVQYCPKG DWHQTC
IN%NGCT ).A%1.14A$7(('4A$+6 ^ ).A&'26*A$7(('4A$+6
IN.QCF+FGPVKV[ OCEKGT\ OQFGN YKFQM OCEKGT\ LGFPQUVMQYC
IN6TCPUNCVGH QFUWPKGEKG ECNQUEK Q
PKGTWEJQOG QUKG WMNCFW YURQNT\GFP[EJ
IN%QNQT WD
4[UWL1UKG Z
11
Oczywi cie, je eli nie mamy jakiej archaicznej karty graficznej nie obsługuj cej standardu OpenGL
i korzystamy z programowej emulacji.
&]ö è ,,, 0 :\EUDQH WHFKQRORJLH :LQGRZV
QDTQV[
IN4QVCVGH 2JK YQMQN 1;
IN4QVCVGH 6JGVC YQMQN 1:
RT\GUWPKGEKC
IN6TCPUNCVGH 2Q\[ELC: 2Q\[ELC; 2Q\[ELC
T[UQYCPKG QUVTQUNWRC
4[UWL1UVTQUNWR Z [ \
TWEJQOG QUKG WMNCFW YURQNT\GFP[EJ
IN%QNQT WD
4[UWL1UKG Z
IN(NWUJ
5YCR$WHHGTU WEJY[V&%
_
Metoda 4[UWL1UKG wywoływana jest dwukrotnie. Pierwsze wywołanie nast puje tu
po ustaleniu pozycji kamery i poprzedza obroty i przesuni cia, które interpretujemy jako
ruch aktorów. Dlatego ten rysowany na biało układ współrz dnych mo na traktować jak
zwi zany z nieruchom scen (por. rysunek 11.10). Drugi raz metoda 4[UWL1UKG wywo-
ływana jest tu przed wymian buforów, dotycz jej zatem wszystkie przekształcenia
macierzy model-widok innymi słowy, osie zwi zane s z rysowanymi na scenie
aktorami.
5\VXQHN
Rysujemy dwie pary
osi współrz dnych
pierwsza zwi zana
jest z nieruchomym
układem odniesienia
sceny, druga
z układem
zwi zanym
z ostrosłupem
3URMHNW 'RGDZDQLH NROHMQ\FK ILJXU
Do pierwszego ostrosłupa dorysujemy kolejne, uzupełniaj c metod 4[UWL5EGPG o p tl
wyró nion w listingu 11.25. Ka dy z ostrosłupów obrócony jest o 90 stopni wzgl dem
poprzedniego. Wszystkie b d wzgl dem siebie nieruchome, ale dodanie wzgl dnego
ruchu mi dzy nimi byłoby jedynie kwesti uzmiennienia wielko ci obrotu, jaki jest
wykonywany przed kolejnym wywołaniem metody 4[UWL1UVTQUNWR. Uzyskany efekt
widoczny jest na rysunku 11.11.
5R]G]LDä 0 2SHQ*/
/LVWLQJ Klonowanie ostrosłupów
XQKF AAHCUVECNN 6(QTO 4[UWL5EGPG
]
EQPUV HNQCV Z
EQPUV HNQCV [
EQPUV HNQCV \
2T\[IQVQYCPKG DWHQTC
IN%NGCT ).A%1.14A$7(('4A$+6 ^ ).A&'26*A$7(('4A$+6
IN.QCF+FGPVKV[ OCEKGT\ OQFGN YKFQM OCEKGT\ LGFPQUVMQYC
IN6TCPUNCVGH QFUWPKGEKG ECNQUEK Q
PKGTWEJQOG QUKG WMNCFW YURQNT\GFP[EJ
IN%QNQT WD
4[UWL1UKG Z
QDTQV[
IN4QVCVGH 2JK YQMQN 1;
IN4QVCVGH 6JGVC YQMQN 1:
RT\GUWPKGEKC
IN6TCPUNCVGH 2Q\[ELC: 2Q\[ELC; 2Q\[ELC
T[UQYCPKG QUVTQUNWRC
4[UWL1UVTQUNWR Z [ \
MQNGLPG QUVTQUNWR[
HQT KPV K K K
]
IN4QVCVGH
4[UWL1UVTQUNWR Z [ \
_
IN4QVCVGH FQRGNPKGPKG RGNPGIQ QDTQVW
TWEJQOG QUKG WMNCFW YURQNT\GFP[EJ
IN%QNQT WD
4[UWL1UKG Z
IN(NWUJ
5YCR$WHHGTU WEJY[V&%
_
: NRG]LH XPLHV]F]RQ\P QD Sä\FLH U\VRZDQLH GRGDWNRZ\FK RVWURVäXSÑZ PR QD Z\
äñF]\è NODZLV]HP :
3URMHNW %DUG]LHM SUHF\]\MQH XVWDZLDQLH NDPHU\
Jak pami tamy z komentarza do zada 194. i 195., renderowanie rozpoczynamy od prze-
suni cia całej sceny o w kierunku osi OZ, a wi c o w gł b frustum. Zgodnie ze sche-
matem przedstawionym we wprowadzeniu do projektu 200. przekształcenie to znajduje
&]ö è ,,, 0 :\EUDQH WHFKQRORJLH :LQGRZV
5\VXQHN
Korona zbudowana
z czterech ostrosłupów
si w punkcie 3., a wi c powinni my mówić raczej o odsuni ciu kamery od sceny. Re-
alizacj tego schematu w tej chwili w metodzie 4[UWL5EGPG przedstawia tabela 11.3.
7DEHOD Schemat etapów w metodzie RysujScene
(WDS &]\QQR FL
1. Inicjacja Macierz model-widok ustalana na jednostkow
2. Przedmioty trwale zwi zane z kamer Brak
3. Ruch kamery Odsuni cie kamery o jednostek w kierunku osi OZ
4. Rysowanie nieruchomej cz ci sceny Rysowanie białych osi współrz dnych
5. Ruch pierwszego aktora Obroty i przesuni cia kontrolowane z klawiatury
6. Rysowanie pierwszego aktora Rysowanie ostrosłupa (oraz jego klonów)
7. Ruch drugiego aktora Brak
8. Rysowanie drugiego aktora Rysowanie zielonych osi współrz dnych
Czynno ć ustawienia kamery (mo na sobie wyobrazić, e etap 3. obejmuje znacznie
wi cej przekształce ni tylko nasze przesuni cie) mo na znacznie upro cić, korzy-
staj c z funkcji INW.QQM#V. Jej argumentami s trzy trójki współrz dnych. Pierwsza
ustala poło enie kamery. W naszym przypadku b dzie to punkt . Argumenty
od czwartego do szóstego wskazuj punkt, na który kamera jest skierowana. My wybrali-
my rodek układu współrz dnych, czyli miejsce, w którym znajduje si nasza figura
(pami tajmy, e kamera została odsuni ta na pozycj ). Ostatnia trójka argu-
mentów okre la sposób, w jaki ustawiona jest kamera, wskazuj c jej kierunek do góry .
My ustawili my j w kierunku osi OY, czyli tak, jak trzymaliby my prawdziw kamer ,
[ Pobierz całość w formacie PDF ]