Programujeme grafický engine XXXVI.

opengl_logo.jpg V tej­to čas­ti se­riá­lu sa bu­de­me ve­no­vať to­mu, ako mož­no do gra­fic­kých (her­ných) en­gi­nov im­ple­men­to­vať ob­jek­ty rep­re­zen­tu­jú­ce reb­rí­ky (lad­ders). Člá­nok bu­de kon­ci­po­va­ný v po­dob­nom duc­hu, v akom sme opí­sa­li im­ple­men­tá­ciu zr­ka­diel. Texto­vú časť dopĺňa vzo­ro­vý prík­lad (zdro­jo­vý kód ap­li­ká­cie En­gi­ne v2.6), v kto­rom sú všet­ky re­le­van­tné čas­ti kó­du po­drob­ne oko­men­to­va­né.

engine obr1.jpg
Obr. 1 Sie­ťo­vý mo­del ob­jek­tu pred­sta­vu­jú­ce­ho zbraň

Reb­rí­ky
Troj­roz­mer­né ob­jek­ty rep­re­zen­tu­jú­ce reb­rí­ky sú neod - mys­li­teľ­nou sú­čas­ťou mno­hých her­ných en­gi­nov. Naj­čas­tej­šie ide o ver­ti­kál­ne po­sta­ve­né ob­jek­ty skla­da­jú­ce sa z dvoch ver­ti­kál­nych hra­no­lov, spo­je­ných nie­koľ­ký­mi ho­ri­zon­tál­ny­mi prieč­ka­mi. Hra­no­ly a prieč­ky sa v reál­nom sve­te po­uží­va­jú ako mies­ta, na kto­ré le­zú­ca oso­ba stú­pa no­ha­mi a kto­rých sa pridŕža ru­ka­mi.

Kva­lit­né her­né en­gi­ny si­mu­lu­jú po­hyb vy­ko­ná­va­ný le­zú­cou oso­bou tak­mer reál­ne. Pri tej­to ver­nej si­mu­lá­cii no­hy vir­tuál­nej po­sta­vy (ava­ta­ra) vy­stu­pu­jú na jed­not­li­vé prieč­ky a jej ru­ky po­stup­ne uc­ho­pu­jú hra­no­ly ale­bo prieč­ky. V mno­hých prí­pa­doch sa však po­hyb si­mu­lu­jú­ci le­ze­nie vý­raz­ne zjed­no­du­šu­je. Naj­čas­tej­šie sa mô­že­me stret­núť s vop­red na­mo­de­lo­va­ným po­hy­bom po­sta­vy, kto­ré­mu sa nás­led­ne pris­pô­so­bu­jú roz­me­ry reb­rí­kov po­uži­tých v scé­ne. V mi­nu­los­ti sa le­ze­nie po reb­rí­ku nah­rád­za­lo dos­lo­va tri­viál­nym spô­so­bom, pri kto­rom po­sta­va hrá­ča ne­vy­ko­ná­va­la ni­ja­ký zvlášt­ny po­hyb. Po prib­lí­že­ní sa k reb­rí­ku jed­no­duc­ho zme­ni­la svoj po­hyb z ho­ri­zon­tál­ne­ho na ver­ti­kál­ny. Ten­to spô­sob reali­zá­cie le­ze­nia sme im­ple­men­to­va­li aj do náš­ho en­gi­nu.

engine obr2.jpg
Obr. 2 Textú­ry po­uží­va­né pri ren­de­rin­gu od­tlač­kov

Reb­rí­ky v En­gi­ne v2.6
Do ap­li­ká­cie En­gi­ne sme im­ple­men­to­va­li reb­rí­ky, kto­ré hráč pre­ko­ná­va jed­no­duc­hým ver­ti­kál­nym po­hy­bom. Je úpl­ne jed­no, aké roz­me­ry ale­bo po­čet prie­čok ma­jú reb­rí­ky. Dô­le­ži­té je, že v scé­ne vy­stu­pu­jú vo for­me pries­to­ro­vé­ho (spa­tial) ob­je­mu. V na­šom prí­pa­de sa ten­to tzv. ak­tív­ny ob­jem vy­tvo­rí po­čas konštruk­cie ob­jek­tu reb­rí­ka. Ob­jem je oh­ra­ni­če­ný mi­ni­mál­ny­mi a maximál­ny­mi sú­rad­ni­ca­mi tro­ju­hol­ní­kov, z kto­rých sú reb­rí­ky zlo­že­né. Ak­tív­ny ob­jem je pra­vouh­lo orien­to­va­ný, čím vy­tvá­ra tzv. kvá­der (pries­to­ro­vý ob­jem), za­rov­na­ný po­dľa sú­rad­ni­co­vých osí (AABB – Axis Alig­ned Boun­ding Box).

Úlo­hou ak­tív­nych ob­je­mov je kva­li­fi­ko­vať po­lo­hu ava­ta­ra vzhľa­dom na ich hra­ni­ce. V prí­pa­de, ak sa hráč nac­hád­za vnút­ri ak­tív­ne­ho ob­je­mu, je­ho ho­ri­zon­tál­ny po­hyb sme­rom vpred sa zme­ní na ver­ti­kál­ny po­hyb sme­rom ho­re. Ak má­me správ­ne nas­ta­ve­ný sys­tém de­tek­cie ko­lí­zií, ob­jekt rep­re­zen­tu­jú­ci reb­rík sa auto­ma­tic­ky in­teg­ru­je do de­tek­čné­ho sys­té­mu ako AABB. Na ava­ta­ra ne­bu­de pô­so­biť gra­vi­tá­cia a bu­de môcť vy­liezť po reb­rí­ku sme­rom ho­re. Pri po­žia­dav­ke o le­ze­nie sme­rom do­le sta­čí, ak sa ava­tar nac­hád­za­jú­ci sa nad reb­rí­kom po­sta­ví k reb­rí­ku chr­btom a vy­ko­ná po­hyb vzad. Na po­sta­vu hrá­ča za­čne pô­so­biť gra­vi­tá­cia, no pri rých­lom vy­ko­na­ní po­hy­bu vpred do­ká­že uc­ho­piť reb­rík a za­sta­viť svoj pád.

Vý­znam po­uži­tia reb­rí­kov
Na pr­vý po­hľad sa zdá po­uži­tie reb­rí­kov tri­viál­ne a ne­pot­reb­né. V reál­nom sve­te, ak ne­vez­me­me do úva­hy nie - kto­ré špe­ci­fic­ké po­vo­la­nia, ne­le­zie­me po reb­rí­koch kaž­dý deň. V prí­pa­de her­ných en­gi­nov to však nep­la­tí. Ich scé­ny nie vždy pred­sta­vu­jú (ko­pí­ru­jú) reál­ne pros­tre­die, v kto­rom sa po­hy­bu­jú ži­ví ľu­dia. Zväč­ša ide o scé­ny, kto­rých vzhľad je li­mi­to­va­ný iba fan­tá­ziou návr­há­ra. V tak­to navr­hnu­tých vir­tuál­nych scé­nach sa hráč mô­že veľ­mi ľah­ko ocit­núť na mies­tach, z kto­rých sa bez po­mo­ci reb­rí­kov ne­dos­ta­ne.

Na­vy­še po­dob­nú fun­kcio­na­li­tu, akú po­sky­tu­jú reb­rí­ky, mož­no si­mu­lo­vať aj iný­mi ob­jek­tmi, ako sú napr. la­ná, re­ťa­ze, rôz­ne po­tru­bia, prieč­ky, vý­čnel­ky... Všet­ky tie­to ob­jek­ty mô­že­me po­užiť na zme­nu ho­ri­zon­tál­ne­ho po­hy­bu na ver­ti­kál­ny, čo je v ko­neč­nom dôs­led­ku zá­klad­ný prin­cíp fun­go­va­nia reb­rí­kov.

Na­bu­dú­ce...
Na­bu­dú­ce sa vrá­ti­me k streľ­be. Al­go­rit­my, kto­ré nám pô­vod­ne po­slú­ži­li na prak­tic­kú ukáž­ku spô­so­bu im­ple­men­tá­cie kon­krét­nych kom­po­nen­tov en­gi­nu, pris­pô­so­bí­me zvo­le­nej po­sta­ve MD3, a čo je naj­dô­le­ži­tej­šie, do scé­ny umies­tni­me proti­hrá­čov.

Ďal­šie čas­ti >>

Zdroj: Infoware



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXVII.
V tejto a takisto v nasledujúcej časti seriálu budeme riešiť synchronizáciu streľby s pohybom postavy. Pôvodne sme sa tejto oblasti venovali oddelene od blokov súvisiacich so zobrazením postavy. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXVI.
V tejto časti seriálu sa budeme venovať tomu, ako možno do grafických (herných) enginov implementovať objekty reprezentujúce rebríky (ladders). čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXV.
V tejto časti seriálu podrobnejšie rozoberieme jednotlivé časti programového kódu súvisiace s implementáciou streľby. čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXIV.
V tejto časti seriálu vám v stručnosti predstavíme tzv. systémy častíc (particle systems). Kvalitne navrhnutými systémami častíc dokážeme veľmi rýchlo a elegantne zvýšiť dynamiku grafických aplikácií. čí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ť »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXII.
Touto časťou seriálu ukončíme tému implementácie fyzikálnych zákonov v rámci grafických enginov. Všetky vedomosti, ktorými v tomto okamihu disponujeme čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXXI.
Týmto článkom sa pomaly dostávame k záveru celku, v ktorom sme sa zaoberali simuláciou fyziky. Zostáva nám opísať princíp detekcie kolízií a uviesť spôsob reakcie simulačného systému čítať »
 
Prog­ra­mu­je­me gra­fic­ký en­gi­ne XXX.
V tomto pokračovaní seriálu si doplníme teoretické vedomosti potrebné na implementáciu fyzikálnych zákonov v grafických a herných enginoch. čí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