Pamācības

Citādāks veids, kā mocīt attēlu uz ekrāna...

Citādāks veids, kā mocīt attēlu uz ekrāna...

snake5, 06.03.2010

Lejupielādēt: šeit

Ir tāds efekts, kuru gan jau daudzi labi pazīst kā „screen space distortion” jeb ekrāna skata deformācija (ja te kādu interesē mana šī termina latviskā versija). Tātad, šis efekts pārveido gatavo ekrāna attēlu dažādos veidos. Mūsdienās cilvēki ir vairāk pazīstami ar šī darba darīšanu pikseļu šeiderī, tomēr pirms dažiem gadiem dažiem cilvēkiem vēl bija pazīstama cita metode.

Šeit redzams kāds mans WIP projekts (veidots uz Game Maker):

Šeit redzami pēcapstrādes efekti:

Mēs visi labi zinām, ka Game Maker neatbalsta pikseļu šeiderus un pat šeiderus vispār. Pieliktajā arhīvā var apskatīties, kā viss strādā. Lai gan tur ir viens paša veidots hacks, kurš salabo dažas Game Maker’a problēmas ar tekstūrām, uz kurām var zīmēt, tas šo efektu nerada. Kāds trakais var mēģināt pārtvert visus īstos IDirect3DDevice8 interfeisa funkciju izsaukumus un redzēs, ka nekādus šeiderus es neuzstādu. Vai arī lasiet tālāk, lai noskaidrotu, kas tas pa brīnumu ir.

Varbūt šis attēls palīdzēs saprast:

Tātad, šī metode nozīmē to, ka tiek ģenerētas virsotnes (vertex’i), ar kuriem tiek uzzīmēta tā tekstūra, kura satur ekrāna attēlu.

Šādā veidā iespējams dabūt dažādus attēlus, piemēram šādu:

(Neslēpu malas, lai varētu labāk saprast, kā izskatās rezultāts.)

Virsotņu ģenerēšanas vietā var lietot gatavu 3d modeli.

Ir pat šādi iespējams izveidot „salauztās kameras” efektu:

Šeit lietots speciāls 3d modelis ar šādām tekstūru koordinātām:

Tagad parādīšu pēcapstrādes efektu lietošanas algoritmu un to, cik vienkārši ir ielikt šādu efektu algoritmā:

  1. Pārslēdzamies uz kameras skatu (uzstādām vajadzīgās matricas);
  2. Uzstādām tekstūru, kurā zīmēsim visu;
  3. Uzzīmējam visu, ko parasti zīmējām (pasauli, varoņus, efektus..);
  4. Pārslēdzamies uz tālākai lietošanai ērtām matricām vai izlaižam šo soli, ja zīmēsim netransformētus 3d modeļus/trijstūrus.

- un šeit var izvēlēties, vai tiek lietots parastais variants un zīmēts viss ar pikseļu šeideri, tādā gadījumā tiek zīmēts taisnstūris; vai arī zīmējam speciālo 3d modeli/trijstūrus, kurš(-i) deformē kameras skatu.

Kas notiek tad, kad vajag apvienot šo efektu ar pikseļu šeideri? Atbilde ir pavisam vienkārša – virsotņu šeiderī jāizrēķina koordinātas citādāk (no pozīcijas vektora) vai arī 3d modelim / trijstūriem jāiedod 2. tekstūru koordinātas.

Pagaidām atceros, ka šādu pēcapstrādes efektu lieto tikai GTA: San Andreas un Metal Gear Solid 2. Tomēr tas nenozīmē, ka efekts vecuma dēļ ir izmetams – drīzāk ir otrādi - vienkāršā implementācija un plašās modifikāciju iespējas to ļauj lietot.

Es ceru, ka šis īsais raksts palīdzēja saprast, kā ievietot šo efektu spēlē un to, ko var ar to izdarīt. Ja ir vēl kādi jautājumi, pacentīšos uz tiem atbildēt komentāros.

Līdzīgi raksti:

Autorizācija

Lietotājs

Parole


Reģistrēties Aizmirsu paroli