Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
J.Matulewski,T.Dziubak,M.Sylwestrzak,R.Płoszajczak,Grafika.Fizyka.Metodynumeryczne.
Symulacjefizycznezwizualizacj
ą
3D,Warszawa2010
ISBN978-83-01-16178-1,©byWNPWN2010
44
CzęśćI.GrafikatrójwymiarowawOpenGL
Przyokazjizwróćmyuwagęnato,żewmetodzieCOknoGL::UstawienieSceny
(listing1.19),określającszerokośćiwysokośćprzedniejścianyfrustum(ekranu),
uwzględniamyproporcjeaktualnegorozmiaruobszaruużytkownikaokna,wktórym
wyświetlanabędziescena(wnaszejaplikacji„ekran”OpenGLzajmujecałyobszar
użytkownikaokna).Dziękitemuzawartośćfrustumniebędziezniekształconaibędzie
zachowywałaproporcjeprzyzmianierozmiaruokna.
Pomimożedomodyfikowaniamacierzyrzutowanianajczęściejużywanesąfunk-
cjeglFrustumiglOrtho,nicniestoinaprzeszkodzie,abymacierztęprzeskalować
lubobrócić.Jednakwyniktakichoperacjirzadkodajepraktycznieużytecznerezultaty.
Niemniejmożemynp.spróbowaćodwrócićobrazdogórynogami,mnożącmacierz
rzutowaniaprzezmacierzdiagonalnązjedynkaminawszystkichelementachdiagonali
pozaelementemodpowiadającymskładowejy,któryrównyjest-1.Realizujeto
funkcjaglScalef(1,-1,1);(więcejinformacjiosamejfunkcjijużzachwilę).Jeżeli
wstawimyjąpowywołaniufunkcjiglFrustum,aprzedprzełączeniemmacierzy
aktywnejnamacierzmodel-widok,zobaczymytrójkątskierowanywierzchołkiem
wdół.
Chcępodkreślićjeszczeraz,żeprzestrzeńobejmującaobszarscenyopisanajest
wOpenGLzapomocąprawoskrętnegoukładuwspółrzędnych
2,któregoosieOXiOY
skierowanesąodpowiedniowprawoidogórywzględempłaszczyznyekranu,nato-
miastośOZskierowanajestoddalidokamery
3.Początkowepołożenieśrodkaukładu
współrzędnych,względemktóregoustalanejestpołożeniefigur,zgodnejestzpołoże-
niemkamery.ZatempołożeniepłaszczyznyekranunaosiOZrównejestwnaszym
przykładzie–0.3,anajdalszegoplanu––100.0(obiewartościsąujemne).Środek
układuwspółrzędnychznajdujesięwtensposóbpozafrustum.Zachwilęjednakprzesu-
niemykamerętak,abywjejwirtualnymobiektywieznalazłosięotoczenieśrodkaukładu
współrzędnych,coułatwiarysowaniefigur.
Macierzmodel-widok
Macierzrzutowaniazazwyczajustawianajestpouruchomieniuaplikacjiirzadko
późniejmodyfikowana
4.Inaczejjestwprzypadkumacierzymodel-widok.Jeżeli
programprzewidujejakikolwiekruchnascenie(bezwzględunato,czydotyczyon
aktorów,czykamery),macierzmodel-widokzazwyczajjestmodyfikowana.Tupoja-
2Podobnie,jakwXNA,awodróżnieniuodDirect3D,wktórymukładjestlewoskrętny(ośOZskiero-
wanajestwgłąbekranu).ZatemwOpenGLmożemybezdodatkowychprzekształceńkorzystaćze
wzorówprzepisywanychzpodręcznikówdogeometrii.
3Proszęzwrócićuwagę,żedwuwymiarowagrafikakomputerowa,jakrównieżbibliotekiwspomagające
przygotowywaniewydruków,zwyklekorzystajązukładuodniesienia,wktórymośOYskierowanajest
wdółekranu.OpenGLjestwtymwzględziebardziejzgodnyzintuicjąuzyskanąwszkolepodstawowej.
4Wyjątkiemjestnp.dynamicznazmianaperspektywywwizjachsennychwgrzeMaxPainalbozmiana
kątapatrzeniawwyścigachsamochodowychpodczasprzyspieszania,cozwiększawrażenieprędkości.