Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Alukset pyörii

Burton [22.08.2007 15:58:50]

#

Pelasin viime viikonloppuna Wings ykköstä ja kakkosta ja mietin, miten aluksien pyöritys on voitu toteuttaa? Olen tietoinen "rotozoomereista", mutta ensinnäkin tuossa vain pyöritetään alusta eikä zoomata, ja toiseksi eikös rotozoomaaminen ole varsin raskas operaatio toteutettavaksi usealle kappaleelle samanaikaisesti ruudulla?
Tiedän myös mahdollisuuden pyörittää kappaleita OpenGL-funktioilla, mutta Wings ykkönen ei varmaan käyttänyt OpenGL:ää? Miten tuollaisen DOS-ajan pelin pyöritys on voitu toteuttaa, jos ei rotozoomerilla?

os [22.08.2007 16:03:46]

#

Alukset on joko piirretty valmiiksi eri kulmissa (esim 32 eri kulmaa) suoraan kuvankäsittelyohjelmalla tai pyöritetty/"esirenderöity" valmiiksi spriteiksi ohjelmaa ladatessa yhden valmiiksi piirretyn kuvan perusteella. Tämä on varsin helppoa geometriaa, johon ei todellakaan tarvita OpenGL:ää.

Lebe80 [22.08.2007 16:07:20]

#

Lisäksi useinmiten 90 ja 180 ( ja -90) asteen käännökset onnistuvat ihan jouhevasti "reaaliajassakin", jolloin noita ennalta laskettuja käännöskuvia ei tarvitse tehdä kuin välille 0-90. Yleensä 16 - 32 kpl riittää vallan mainiosti jo koko 360 asteen pyöräytykseen Wingsin grafiikan tasoiseen peliin.

os [22.08.2007 16:14:45]

#

Tässä vielä pseudokoodina kuvan kaksiulotteinen pyöritys:

jokaiselle mahdolliselle kulmalle, k :
  jokaiselle kuvapisteelle (x,y) :
   kuva_aluksessa_kulmassa[k] [x][y] =
    alkuperäinen_kuva_aluksesta[(x-x0)*cos(-k) - (y-y0)*sin(-k) + x0]
                               [(x-x0)*sin(-k) + (y-y0)*cos(-k) + y0]

missä x0 ja y0 ovat aluksen keskipisteen kuvakoordinaatit.
Oikeaan koodiin kuulu tietenkin vielä pakollista säätöä kulmayksiköiden, kuvarajojen ja mahdollisesti interpoloinnin kanssa.

Burton [22.08.2007 21:15:45]

#

Kiitti nopeista vastauksista, mutta onko noi cosit ja sinit radiaanimuodossa vai tarviiko ne muuttaa asteiksi? Eikös math.h:n trigonometriset funktiot käytä radinaaneja?

Blaze [22.08.2007 21:25:00]

#

Burton kirjoitti:

Eikös math.h:n trigonometriset funktiot käytä radinaaneja?

Kyllä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta