maanantaina 12. toukokuuta 2008

PaperVision 3D

Koska rasterointi pikseli pikseliltä on Flashilla erittäin hidasta pitää Flashin kanssa kikkailla, jotta pystytään renderoimaan 3d kamaa ruudulle. Tähän tarkoitukseen on olemassa useita 3d-moottoreita, jotka suoriutuvat tehtävästä jotakuinkin. Yksi näistä on suosittu PV3D, joka on ns. "skew rendaaja". Useimmat Flash 3d-enginet ovat skew rendaajia. Tämä on matemaattisesti oikeaa 3d:tä, mutta se on silti "huijausta". Mitään ei oikeasti rasteroida, joten emme tiedä pikselien 3d koordinaatteja paitsi verteksien kohdalla. Tästä johtuen emme voi mm. perspektiivikorjata tekstuureita. Syvyysdatan puute aiheuttaa myös paljon muitakin rajoituksia joita tosin joitain voidaan kiertää. Skew nimitys tulee tavasta jolla tekstuurit rendataan. Flash ei tue perspektiivitekstuureja, mutta spritejä voidaan skewata. Eli rotaatoimme ja skewaamme spriten sopivaan asentoon ja leikkaamme siitä polyn tarvitsevan osan ja piirrämme tämän polyn kohdalle. Näin saadaan aikaan tektuurit, mutta ilman perspektiivikorjausta, joka näkyy isoissa polyissa teksturen vääristymisenä. Jotkut enginet tosin dynaamisesti tesselloi polyja jolloin vääristyminen vähenee, mutta ei kuitenkaan kokonaan katoa. Oikea tapa tehdä 3d-moottori olisi rasterointi, josta olemmekin tässä blogissa puhuneet, mutta flashin tehot eivät siihen vielä riitä. Tässä kuitenkin tulevaisuuden varalle open source 3d rasteroija http://drawlogic.com/2008/04/11/as3-swfz-source-code-goes-open-source/.

Tällä kertaa kuitenkin on tarkoitus kokeilla PaperVisionia. Teemme sillä upean pyörivän laatikon :). Olen varma, että tulette hämmästymään lopputuloksen upeutta, mutta tarkoitus on kokeilla miten PV3D saadaan käyttökuntoon ei pörhistellä graafisilla hienouksilla.

http://www.verajankorva.com/blog/HelloCube.swf

Kuten huomaatte tekstuurit vääristyvät laatikon pyöriessä. Tämä johtuu juuri mainituista syistä ja laatikkoa ei dynaamisesti tesselloida pienempiin polyihin niin vääristyminen näkyy hyvin selvästi.

Koodi tähän on erittäin simppeliä ja suurempi haaste on saada PV3D sorsat donattua :).

Lähdekoodi http://www.verajankorva.com/blog/HelloCube.as

0 kommenttia: