Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: 3D-pintojen piirtojärjestys

kpzpt [07.03.2010 13:40:31]

#

Hello!

Eli Java Applet jossa on oma 3D kirjasto rakenteilla.

En tällä hetkellä omaa aiempaa kokemusta 3D rakentelu nikseistä.
Ongelmana on kun minulla on lukuisia tasoja, niin, minkä logiikan
mukaan nämä tasot tulisi piirtää ruudulle, ei ole ihan niin helppoa
että kauimmainen ensin, kun nyt kerran on kuitenkin neljä pointtia jokaisessa ??

Myöskin tekniikoita joilla rakentaa mahdollinen z-bufferi ??

//----

Kiitos,,

(Mod. selvensi otsikkoa.)

Metabolix [07.03.2010 13:52:23]

#

Jos rasteroit polygoneja yksitellen, sinun täytyy toteuttaa z-puskuri, joka tulee ihan samanlaisella matematiikalla kuin ne 3D-pisteiden 2D-projektiotkin. Jos taas käytät jotain ray casting -tyyppistä menetelmää, tutkit vain jokaiselle piirrettävälle pikselille, mikä polygoni tulee ensimmäisenä vastaan. (Toki tämäkin tavallaan on z-puskuri, mutta koska käsitellään yhtä pikseliä kerrallaan, puskuriksi riittää yksi luku.)

Ongelma ei siis ole tekninen, vaan ainoa apu on, että kynällä ja paperilla lasket 3D-geometriaa oikein olan takaa. Sieltä ne yksittäisten pikselien syvyydet löytyvät.

Grez [07.03.2010 16:01:57]

#

Kannattaa myös muistaa, että jos pinnat leikkaavat toisiaan, niin ei riitä että ne piirtää tietyssä järjestyksessä.

Ja tulikin mieleen, että mikäköhän on tehokas sorttausalgo, jos vertailusta voi tulla tulokseksi "ennen", "jälkeen" tai "ei väliä"

kpzpt [07.03.2010 16:38:42]

#

Z-Bufferi!

Hmmm, tässä mietin tuota z-bufferia.

Ajattelin että se on aika vaikeata toteuttaa Javan kanssa, Java2D kun on aika hidas,
Ajattelin kuitenkin seuraavaa.

Minulla on kaikki pinnat, luokka pinta arrayssa pinnat[].
Pinta luokka sisältää x1-x4 y1-y4 z1-z4 ja värin.

Pinta luokat käännetään seuraavaksi 2D muotoon.

Jos minä tuollaisen z-bufferin rakennan ray casting tyylisesti yhdelle arvolle.

Eli, alan käymään appletin tuplabufferia pixeli kerrallaansa lävitse värin löydölle.

Jokaisen pixelin kohdalla tarkastan ovatko 2D muodon ääri x ja y koordinaatit
"ristissa" tuplabufferin pixelin kohdalla.

Jos ovat niin lasken kaikkien neljän 2D z koordinaatin mukaan keskiarvon z bufferiksi ja näin jatkan jokaisen pinnan kohdalla, kunnes lähin löytyy ??

Tuon kaltainen nyt ensin tuli ajateltua, en kuitenkaan omaa kovinkaan kummoista
matemaattista tasoa, olisi mukava jos joku vielä vahvistaisi mahdolliset virheeni.

Ajattelin shakki peliäni rakentaa 3D muotoon, ja mahdollisesti lentokone pelinikin.

Shakki Demo rakentumassa -> http://88.192.212.114
Java Peli Sivustoni rakentuu sitten seuraavaan -> http://temp4321.dy.fi

Kiitos avusta, olen yksin jo toisella vuodella projektini kanssa.

//----

Kiitos,,

User137 [08.03.2010 03:00:48]

#

Jos oikeasti ajattelit 3D:tä ohjelmoida Javalla niin kannattaa tutustua OpenGL:ään.

Vastaus

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

Tietoa sivustosta