Programujeme grafický engine XXXIII.

V pred­chád­za­jú­cej čas­ti se­riá­lu sme do­kon­či­li ka­pi­to­lu, v kto­rej sme sa ve­no­va­li si­mu­lá­cii fy­zi­ky. Na zá­ver sme uvied­li, že fy­zi­kál­ne zá­ko­ny vy­uži­je­me na si­mu­lá­ciu deš­truk­cie ob­jek­tov. Naj­nov­šiu ver­ziu ap­li­ká­cie En­gi­ne v2.4 sme te­da dopl­ni­li o ob­jekt pred­sta­vu­jú­ci skle­nú plat­ňu, kto­rú mož­no roz­biť (rozstrieľať) na men­šie čas­ti. Ap­li­ká­ciu sme nás­led­ne dopl­ni­li o ob­jekt zr­kad­la (mirror). Sú­vis­los­ti tý­ka­jú­ce so zob­ra­ze­nia zr­kad­la a ob­jek­tov, kto­ré sa v ňom od­rá­ža­jú, sú té­mou toh­to člán­ku.

engine obr1.jpg
Obr. 1 Ob­jekt pred­sta­vu­jú­ci zr­kad­lo


Zr­kad­lo
Zr­kad­lá vy­tvá­ra­jú roz­hra­nie med­zi „sku­toč­ným“ a „od­ra­ze­ným“ pros­tre­dím. Sú to špe­ciál­ne ob­jek­ty, kto­ré ma­jú vý­raz­ný vplyv na ce­lý ren­de­ro­va­cí pro­ces gra­fic­kých en­gi­nov, a to naj­mä v prí­pa­de, ak v zr­kad­lách vzni­ka­jú viac­ná­sob­né od­ra­zy (mul­tip­le ref­lec­tions).

V en­gi­ne po­uží­va­me úda­jo­vé štruk­tú­ry, po­mo­cou kto­rých mož­no iden­ti­fi­ko­vať tie ob­jek­ty, kto­ré sa bu­dú v zr­kad­le od­rá­žať a kto­ré nie. Iden­ti­fi­ko­va­né pr­vky scé­ny bu­dú vy­kres­le­né vždy dvak­rát – pr­výk­rát ako od­ra­ze­né a dru­hýk­rát ako „sku­toč­né“. Sa­moz­rej­me, že obe zob­ra­ze­nia mu­sia byť rov­na­ké vrá­ta­ne správ­nej ap­li­ká­cie sha­de­rov a zob­ra­ze­nia dy­na­mic­kých ob­jek­tov. Vý­nim­kou mô­žu byť tie pr­vky scé­ny, kto­ré sú vo všeo­bec­nos­ti má­lo vi­di­teľ­né.
Zob­ra­ze­nie ob­jek­tu pred­sta­vu­jú­ce­ho zr­kad­lo nie je ná­roč­né. Naj­čas­tej­šie ide o pries­vit­ný, resp. po­lop­ries­vit­ný štvo­ru­hol­ník, kto­rý mô­že, ale aj ne­mu­sí byť otextú­ro­va­ný.

engine obr2.jpg
Obr. 2 Scé­na so zr­kad­lom a od­ra­ze­ný­mi ob­jek­tmi


Od­ra­ze­né ob­jek­ty
Pri po­uži­tí zr­kad­la tre­ba de­fi­no­vať kon­krét­ne štruk­tú­ry priere­zo­vo v rám­ci via­ce­rých mo­du­lov en­gi­nu. Od­ra­ze­né ob­jek­ty je vhod­né iden­ti­fi­ko­vať ih­neď po spus­te­ní ap­li­ká­cie (prep­ro­ces­sing) a nes­kôr sa pri ich zob­ra­ze­ní vy­va­ro­vať ná­roč­ných vý­poč­tov. Mno­ži­nu od­ra­ze­ných ob­jek­tov mož­no zís­kať via­ce­rý­mi spô­sob­mi. Ten zlo­ži­tej­ší je vý­ber ob­jek­tov na zá­kla­de geo­me­trie scé­ny. Jed­no­duc­hší spô­sob je iden­ti­fi­ká­cia od­ra­ze­ných ob­jek­tov pria­mo návr­há­rom scé­ny, napr. po­mo­cou ob­klo­pu­jú­ce­ho ob­je­mu (boun­ding vo­lu­me). Nes­mie­me pri tom za­bud­núť na sa­mot­ný ob­jekt rep­re­zen­tu­jú­ci po­sta­vu hrá­ča.

Od­ra­ze­né ob­jek­ty sú ren­de­ro­va­né rov­na­ko ako „sku­toč­né“ ob­jek­ty s tým roz­die­lom, že sú šká­lo­va­né hod­no­tou -1.0 na prís­luš­nej osi. Tým dôj­de k zr­kad­le­niu sú­rad­níc a ta­kis­to k oto­če­niu po­ra­dia vr­cho­lov de­fi­nu­jú­cich priv­rá­te­né a od­vrá­te­né stra­ny tro­ju­hol­ní­kov. Vo via­ce­rých prí­pa­doch je ne­vyh­nut­né po­užiť správ­ne tran­sfor­mo­va­nú ore­zá­va­ciu ro­vi­nu (clip pla­ne).

engine obr3.jpg
Obr. 3 Po­sta­va hrá­ča – od­raz v zr­kad­le


Sten­cil tes­ty
Via­ce­ré en­gi­ny po­uží­va­jú na zob­ra­ze­nie od­ra­ze­ných ob­jek­tov tzv. sten­cil zá­sob­ník (sten­cil buf­fer). Nie je to však všeo­bec­né pra­vid­lo a sten­cil zá­sob­ník mô­že byť vy­uži­tý aj na iné úče­ly. Správ­ne nas­ta­ve­ným sten­cil tes­to­va­ním do­ká­že­me od­ra­ze­né ob­jek­ty vy­kres­liť iba v tej čas­ti ob­ra­zov­ky, v kto­rej sa nac­hád­za ob­jekt zr­kad­la. Pr­vky sten­cil zá­sob­ní­ka sa pred vy­kres­le­ním napl­nia hod­no­ta­mi, s kto­rý­mi sa vy­ko­ná po­rov­ná­va­cí test. Tie bo­dy vý­sled­né­ho ob­ra­zu, kto­ré nespl­nia po­ža­do­va­né kri­té­riá, bu­dú z ďal­šie­ho spra­co­va­nia vy­lú­če­né.

Po­sta­va hrá­ča
Na zís­ka­nie kva­lit­né­ho doj­mu mu­sí­me ok­rem sta­tic­kých a dy­na­mic­kých ob­jek­tov zob­ra­ziť aj od­raz po­sta­vy hrá­ča. Pre nás to nie je prob­lém, pre­to­že už dáv­nej­šie vie­me, ako mož­no ten­to krok reali­zo­vať po­mo­cou tzv. mo­de­lov MD3. For­mát MD3 sa v mi­nu­los­ti po­uží­val na de­fi­no­va­nie vzhľa­du po­stáv (cha­rac­ters) zob­ra­zo­va­ných v rám­ci her­ných en­gi­nov. Naj­väč­ší prob­lém zob­ra­ze­nia po­sta­vy hrá­ča je je­ho dy­na­mi­ka rie­še­ná po­mo­cou ani­má­cií (ani­ma­tions).
V na­šom prí­pa­de sú fun­kcie sú­vi­sia­ce so zob­ra­ze­ním ob­jek­tu zr­kad­la a od­ra­ze­ných pr­vkov scé­ny vrá­ta­ne po­sta­vy hrá­ča za­hr­nu­té do mo­du­lov Bac­kend, Fron­tend, ale aj mo­du­lov Inter­fa­ce a Ava­tar.


Na­bu­dú­ce...
Aj keď sme sa v pred­chád­za­jú­com ob­do­bí dosť dl­ho ve­no­va­li fy­zi­ke, náš­mu en­gi­nu stá­le chý­ba dy­na­mi­ka. Ok­rem po­sta­vy hrá­ča a pev­ných te­lies ap­li­ká­cia neob­sa­hu­je ni­ja­ké dy­na­mic­ké ob­jek­ty. Ten­to prob­lém sa po­kú­si­me od­strá­niť v nas­le­du­jú­cej čas­ti se­riá­lu.

Ďal­šie čas­ti >>

Zdroj: Infoware 1-2/2011



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Kniž­né no­vin­ky
S touto publikáciou sa naučíte všetko, čo budete skutočne potrebovať. čítať »
 
Naj­ho­rú­cej­šie tec­hno­ló­gie na rok 2011 v IT
Ďalší rozvoj cloudu, mobilných technológií a sociálnych platforiem, nové bezpečnostné hrozby, pokročilé formy analýz dát či pokračujúce zmeny v ukladaní informácií budú podľa analytikov patriť medzi najvýznamnejšie trendy v oblasti IT v tomto roku. čítať »
 
Pred­sta­vu­je­me pro­fi­ly ľu­dí z IT ko­mu­ni­ty - Ro­man Ja­no­vič, Cis­co
V roku 1995 absolvoval Katedru telekomunikačnej techniky na Fakulte elektrotechniky a informatiky na Slovenskej technickej univerzite v Bratislave. čítať »
 
Prog­ra­mu­je­me GPU / 1. časť
Myšlienka napísať sériu článkov týkajúcich sa programovania grafických procesorov (GPU – Gra­phics Processing Unit) vznikla v období prípravy záverečných častí seriálu OpenGL v Linuxe. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXIII.
V predchádzajúcej časti seriálu sme dokončili kapitolu, v ktorej sme sa venovali simulácii fyziky. čítať »
 
SQL De­na­li je už v CTP1
SQL Server 2008 R2 (s kódovým menom Kilimanjaro) je už dávnejšie dostupný v ostrej verzii. čítať »
 
Kni­ha: Alfres­co 3 Web Con­tent Ma­na­ge­ment
Na trhu sa nachádza veľké množstvo systémov web content managementu. čítať »
 
Ap­li­kač­ný server Glas­sFish 3 / In­šta­lá­cia a kon­fi­gu­rá­cia - 1. časť
K bontónu patrí v úvode každého seriálu predstaviť jeho hlavného aktéra. Zoznámte sa – aplikačný server GlassFish. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter