Programujeme grafický engine XXXIV.

V tej­to čas­ti se­riá­lu vám v struč­nos­ti pred­sta­ví­me tzv. sys­té­my čas­tíc (par­tic­le sys­tems). Kva­lit­ne navr­hnu­tý­mi sys­té­ma­mi čas­tíc do­ká­že­me veľ­mi rých­lo a ele­gan­tne zvý­šiť dy­na­mi­ku gra­fic­kých ap­li­ká­cií.

Sys­té­my čas­tíc
Sys­té­my čas­tíc sú mno­ži­ny in­di­vi­duál­nych pr­vkov – čas­tíc (par­tic­les), z kto­rých kaž­dá má svo­je vlas­tné at­ri­bú­ty, ale zá­ro­veň je zvia­za­ná so sys­té­mom, ku kto­ré­mu pat­rí. Kaž­dá čas­ti­ca a zá­ro­veň ce­lý sys­tém ma­jú svoj „ži­vot“ (li­fe), po­čas kto­ré­ho sa vop­red de­fi­no­va­ným ale­bo aj ná­hod­ným spô­so­bom me­nia (vy­ví­ja­jú) ich at­ri­bú­ty. Sys­té­my čas­tíc sa v gra­fic­kých (her­ných) en­gi­noch po­uží­va­jú naj­mä na zob­ra­ze­nie ta­kých ob­jek­tov, ako sú oheň, dym, rôz­ne expló­zie, kvap­ky vo­dy (daž­ďa), spre­jov, sne­že­nie, hviez­dy...

engine obr1.jpg

Obr. 1 Prík­la­dy textúr po­uží­va­ných na otextú­ro­va­nie čas­tíc

Čas­ti­ca
Kaž­dá čas­ti­ca pre­zen­tu­je svo­ju prís­luš­nosť k ur­či­té­mu sys­té­mu tým, že od ne­ho pre­be­rá at­ri­bú­ty. To sa mô­že di­ať buď v oka­mi­hu vzni­ku čas­ti­ce, ale­bo ke­dy­koľ­vek v prie­be­hu jej „ži­vo­ta“. Voľ­ba at­ri­bú­tov čas­tíc a ce­lé­ho sys­té­mu je po­nec­ha­ná na vý­vo­já­ro­vi, vo všeo­bec­nos­ti sa však po­uží­va­jú tie­to at­ri­bú­ty:

- Po­lo­ha a rých­losť – po­lo­ha čas­ti­ce sa pri si­mu­lá­cii vy­po­čí­ta­va na zá­kla­de jej rých­los­ti. Tá je v mno­hých prí­pa­doch zá­vis­lá od pô­so­be­nia exter­ných síl, po­mo­cou kto­rých do­ká­že­me si­mu­lo­vať rôz­ne fy­zi­kál­ne ja­vy (vie­tor, gra­vi­tá­ciu atď.). Po­lo­ha a rých­losť čas­tíc v ko­neč­nom dôs­led­ku de­fi­nu­jú vzhľad sys­té­mu.
- Far­ba a textú­ra – gra­fic­ké en­gi­ny čas­to po­uží­va­jú na vy­kres­le­nie čas­ti­ce vhod­né otextú­ro­va­nie. Zme­na far­by textú­ry sa reali­zu­je mo­du­lá­ciou pô­vod­nej far­by. V mno­hých prí­pa­doch sa vy­uží­va tzv. al­fa zlož­ka far­by. Far­ba a textú­ra ma­jú pria­my sú­vis s prie­be­hom „ži­vo­ta“ čas­ti­ce.
- Veľ­kosť, hmot­nosť a ďal­šie fy­zi­kál­ne at­ri­bú­ty – sú po­treb­né na do­siah­nu­tie čo naj­reál­nej­šie­ho gra­fic­ké­ho vzhľa­du.
- Dĺžka „ži­vo­ta“ – tak­mer vo všet­kých prí­pa­doch čas­ti­ce vzni­ka­jú tzv. vy­mr­šte­ním (em­mi­te) zo zdro­ja. Nás­led­ne ur­či­tý čas „ži­jú“ svoj sa­mos­tat­ný (auto­no­mous), ne­zá­vis­lý (in­de­pen­dent), resp. čias­toč­ne zá­vis­lý „ži­vot“, kto­rý je ukon­če­ný po up­ly­nu­tí vop­red sta­no­ve­né­ho ča­su.
- Vlas­tník čas­ti­ce – ob­jekt (sys­tém), kto­rý je emi­to­rom čas­tíc – ne­mu­sí to byť bod, ale aj ploc­ha, resp. aký­koľ­vek iný pries­to­ro­vý út­var.

engine obr2.jpg

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

Rep­re­zen­tá­cia
Jed­not­li­vé čas­ti­ce sú v rám­ci svoj­ho sys­té­mu rep­re­zen­to­va­né rôz­nym spô­so­bom. Nap­riek to­mu, že naj­čas­tej­šie po­uží­va­ná rep­re­zen­tá­cia je otextú­ro­va­ný tro­ju­hol­ník, mô­že­me sa stret­núť aj s iný­mi út­var­mi, ako sú nap­rík­lad:
- Bo­dy – zme­nou ich veľ­kos­ti do­ká­že­me si­mu­lo­vať rôz­ne efek­ty, po­zor však na ore­zá­va­nie bo­dov v zá­vis­los­ti od ich geo­met­ric­ké­ho stre­du. Bo­dy ne­do­ká­že­me ro­to­vať a ich veľ­kosť ne­mô­že­me me­niť v blo­ku gl­Be­gin() – glEnd().
- Čia­ry – ele­gant­ný spô­sob vy­kres­le­nia tzv. chvos­tov (trails), pri kto­rom však po­tre­bu­je­me po­znať nie­len ak­tuál­nu, ale aj pre­doš­lú po­lo­hu čas­tíc.
- Kom­plexné ob­jek­ty (koc­ky, gu­le a pod.) – naj­zlo­ži­tej­ší spô­sob, čo sa tý­ka rých­los­ti ren­de­ro­va­nia. Vzni­ká veľ­ké množ­stvo tro­ju­hol­ní­kov, kto­ré tre­ba spra­co­vať a vy­kres­liť. Pri ma­lom po­čte čas­tíc však mô­že­me do­siah­nuť veľ­mi za­ují­ma­vý gra­fic­ký vzhľad.

Po­znám­ka: Naj­čas­tej­šie po­uží­va­ná rep­re­zen­tá­cia čas­tíc je po­mo­cou otextú­ro­va­ných štvo­ru­hol­ní­kov, kto­ré sú vy­kres­le­né me­tó­dou bi­llboar­din­gu so sú­čas­ným skom­bi­no­va­ním far­by čas­ti­ce s po­za­dím (blen­ding).

At­ri­bú­ty sys­té­mu čas­tíc
Ho­ci sa kaž­dá čas­ti­ca sys­té­mu sprá­va auto­nóm­ne, na do­siah­nu­tie tzv. ko­lek­tív­ne­ho efek­tu mu­sia jej at­ri­bú­ty ko­reš­pon­do­vať s at­ri­bút­mi ce­lé­ho sys­té­mu. Tie sú v mno­hých prí­pa­doch rov­na­ké ako at­ri­bú­ty čas­tíc. Na­vy­še sú dopl­ne­né napr. o vý­cho­dis­ko­vé at­ri­bú­ty no­vov­zni­ka­jú­cich čas­tíc, čas a rých­losť emi­sie čas­tíc, exter­ne pô­so­bia­ce si­ly, štan­dar­dné hod­no­ty po­uži­té pri kom­bi­ná­cii fa­rieb, ale hlav­ne o zoz­nam všet­kých čas­tíc pat­ria­cich do sys­té­mu so sta­no­ve­ním maximál­ne­ho po­čtu čas­tíc.

Na­bu­dú­ce...
Na­bu­dú­ce bu­de­me po­kra­čo­vať v za­ča­tej té­me. Teo­re­tic­ké po­znat­ky ap­li­ku­je­me v praxi pria­mo do prip­ra­vo­va­né­ho en­gi­nu.

Ďal­šie čas­ti >>

Zdroj: Infoware 3/2011



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