[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
Näide: alphablended sprited
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




gm7.gif postitati 21.8.2009 15:25 Tsiteeri
Näide: alphablended sprited



Ülimalt lihtne näide 3 koodireaga, igale algajale arusaadav.
http://www.indrek.org/i/pull/alpha.png

GM7 kood ka:
http://www.indrek.org/i/pull/alphablend.gmk
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 21.8.2009 19:55 Tsiteeri


Kui kolme koodireaga, kas saaksid äkki siia need read üles panna juhul kui Gm7 puudub?
http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 21.8.2009 20:53 Tsiteeri


Hm... see on tiba keerulisem, sest pildid on ka. Selle pärast paningi gmk, et game makeris on seda lühem ja lihtsam "jutustada" kui web-tutoriali teha.

Aga kui soovi on, okei:

Esiteks, meil on sprite.
http://www.indrek.org/i/a1.png

Nüüd tuleb talle valmistada mask, mis näitab ära, mis on kui läbipaistev:
http://www.indrek.org/i/a2.png

Kumbki sprite pole game makeris "transparent".

Mida valgem, seda tihedam ja mida mustem, seda läbipaistvam.
Maski tegin natuke tugevama valgega keskelt ja natuke väiksema. Seda selleks, et punase palli keskkoht 100% läbipaistmatu oleks aga servad läbipaistvamad. Aga muidugi võib maski teha samast spritest ja lihtsalt must-valgeks tehes. Või korralikumalt, kui võtad sprite editoris "intensity" ja näpid kahte sliderit: neist esimene on brightness ja teine saturation (mis tuleb nulli vedada must-valge jaoks).

Punase pildi nimi on sprite ja maski oma alphamask. Selle toon eraldi välja selleks, et kood arusaadav oleks algajale. Loomulikult võib suvanimed panna.

Nüüd võtame create eventi objektil, millele tahame spritet panna, ja paneme punase sprite uude muutujasse:

spr = sprite;

Ja sunnime teda transparency maski võtma teiselt spritelt:

sprite_set_alpha_from_sprite(spr,alphamask);

ja... ongi kõik. Jääb üle vaid käsitsi joonistada teda, sest nüüd peame joonistama muutuja "spr" sisu (mida käsitsi näppisime), mitte kindla nimega spritet. Seega draw event:

draw_sprite(spr,0,x,y);

Muide, neid spritesid saab ka animeerida, kuid ma pole kindel, kas ka animeeritud maskilt võtab kõik framed.
EDIT: Jah saab, ja võtab küll igale framele eraldi maski. Hiiglama tore.

3 rida koodi...
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 21.8.2009 21:57 Tsiteeri


gm8 pidavat ka transparent png'd toetama. ;) Seega paljudel juhtudel pole vaja enam spets koodi kribada, et sellist tulemust saada. Aga muidu arvatavasti nii mõnelegi annab see siin ideid. ;)
GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
valter
1


Liitunud: 19.1.2005
Postitusi: 1553
[EEMAL]




postitati 22.8.2009 03:08 Tsiteeri


gm7 toetab ka ju
http://www.dmgamez.pri.ee/GRONGO1/uss_walk.gif
Ralli I: dm11Veresaun III: dm11<br>Emo1: icedude, valter8bit I: võistlus kestabAktsioon III (2009): -<br>Aasta mäng 2009: Pilvemees, valter<br>Vabateema II: valter
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 22.8.2009 11:48 Tsiteeri


GM8 "tugi" ei nulli sellegipoolest praegust meetodit või muuda seda kasutuks.
Seda sellepärast, et kasutades punase spritega sedasama punast maski jääb hirmus hõre punane sprite, isegi keskkoht paistab läbi.

Käsitsi tehtud mask aga annab läbipaistvuse üle parema kontrolli.

Pakun, et GM8 toob meile laadungi väärkasutatud alphat ja GM-küsimustesse tulevad teemad "miks mu auto/maja läbi paistab?", julgemate poolt. MS-Paintereid aga uuendus üldse ei mõjuta.

Olgugi, et native alpha support on hirmus hea ja kasulik asi.
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.8.2009 08:53 Tsiteeri


Tsitaat:
Tsitaat: InCreatorSeda sellepärast, et kasutades punase spritega sedasama punast maski jääb hirmus hõre punane sprite, isegi keskkoht paistab läbi.

Käsitsi tehtud mask aga annab läbipaistvuse üle parema kontrolli.


Eem, seda muidugi, et jääks väga hele, kui seda punast sprite'i ka alphamask'ina kasutada, aga mis see siia puutub?

Ainus, mis eelist mina näen sellisel viisil tulevikus, on, et saad mängusiseselt dünaamiliselt alphamask'i vahetada ja nii ehk mingeid efekte luua. Seetõttu tõesti täiesti omamoodi vajalik näide. ;)

dm11, kas gm7 toetas täielikult transparent png'd? ehk siis terve alpha kanaliga või toetas ta transparent png'd sama palju, kui gif'i, et oli lihtsalt üks "värv", mis on läbipaistev?

GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
valter
1


Liitunud: 19.1.2005
Postitusi: 1553
[EEMAL]




postitati 23.8.2009 12:19 Tsiteeri


jah, alpha 0-255. Ise olen mitmes mängus kasutanud.

sprite_add_alpha('pilt.png',...);

http://www.dmgamez.pri.ee/GRONGO1/uss_walk.gif
Ralli I: dm11Veresaun III: dm11<br>Emo1: icedude, valter8bit I: võistlus kestabAktsioon III (2009): -<br>Aasta mäng 2009: Pilvemees, valter<br>Vabateema II: valter
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.8.2009 14:37 Tsiteeri


valter, jah, nii vast kyll, aga gm8'ga tuleb nt ka sprite editori transparent png toetus sisse. ;)
GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 23.8.2009 15:00 Tsiteeri


Tsitaat:
Ainus, mis eelist mina näen sellisel viisil tulevikus, on, et saad mängusiseselt dünaamiliselt alphamask'i vahetada ja nii ehk mingeid efekte luua. Seetõttu tõesti täiesti omamoodi vajalik näide.


Selles point ongi ju. GM8 tugi kasutab kindlasti täpselt sama maski, mis sprite ise.

Pealegi GM8ni on veel aega ja ma pole peale dm11 ja veel mõne teise eesti mängudes suurt alpha kasutamist näinud, spritede puhul kõige vähem veel.
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.8.2009 15:02 Tsiteeri


inc, transparent png'l on alpha channel eraldi, mitte ei tehta asja kuidagi ymber nurga maskiga. ;)
GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 23.8.2009 15:55 Tsiteeri


correct.
:P
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 23.8.2009 16:08 Tsiteeri


Png-l pole ju transparent eraldi channelis. See tähendab, et photoshopis ei saa png-de puhul midagi teha alpha kanaliga kuna alpha on integreeritud. Igale pikslile vastab alpha. See tähendab, et photoshopis ei saa sa png-st eraldada nt ainult alpha channelit. Okey, see post on natuke naljaga pooleks, sellesmõttes et photoshop on tõsiselt mul kopsu üle maksa visanud ja olen liikunud GIMP peale üle, sest GIMP-iga pole veel png formaadiga ühtegi probleemi olnud.

Ja ültse ma ei kujuta ette kuidas saab eelmainitud alpha maske kasutada effektiivselt? Point selles, et vahest on palju mõtekam kasutada RAM ja Video RAM, kui hakata ise midagi genereerima. Point selles, et viis kuidas alpha mask ja pilt kokku pannakse on väga süsteemi kurnav. Lihtsam on teha 100 erinevat pilti ise modifitseeritud alpha kanaliga ja siis panna need Imagestrip-i.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.8.2009 21:44 Tsiteeri


icedude, alpha on png's salvestatud, kui 4 v2rv/kanal. Seega ta peaks olema teoreetiliselt eemaldatav. Pm v6id lihtsalt k6ik (v2rvi) kanalid keerata maksimumi peale ja tausta mustaks teha ja saadki nii5elda alpha kanali, kui seda ei ole v6imalik otse eraldada. (pole kunagi proovinudki midagi sellist teha.) Aga jah, alpha on png's neljanda "v2rvina". ;)
GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
InCreator
baksjor!
Avatar

Liitunud: 18.12.2005
Postitusi: 1230
[EEMAL]




postitati 25.8.2009 21:20 Tsiteeri


"Point selles, et viis kuidas alpha mask ja pilt kokku pannakse on väga süsteemi kurnav"

Create event on hirmus kurnav moment jah :D
Emo2: InCreator
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm