Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: OpenGL pikselit eivät riitä

kayttaja-3842 [23.01.2014 18:16:30]

#

Terve,

Olen tässä pohtinut, että olisiko 3d modellin pikselien häviämiseen ratkaisua.

Eli ongelmani on seuraava:

Minulla on 3d modelli ( AITA ). Aidassa on "lautoja" vierekkäin, pienellä välillä. Läheltä katsoessa aidan kaikki yksityis kohdat näkyvät hienosti.

Aita läheltä

Kauas zoomattaessa alkaa ilmenee ongelmia, nimittäin selväähän on että, mitä kauempaa modellia katsotaan sitä pienempi = vähemmän pikseleitä.

Aita kaukaa

Olisiko kuitenkin mahdollista jollain esim. shaderillä saada pienet yksityis kohdat esiin?

Korjaava shader?

The Alchemist [23.01.2014 19:12:30]

#

Eiköhän tuommoiset jutut perinteisesti jätetä reunanpehmennyksen harteille.

Lahha [23.01.2014 19:15:13]

#

Millaiset suodatukset sulla on päällä?
Oisko näistä mitään apua?

glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

Tai

glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);

kayttaja-3842 [23.01.2014 21:33:10]

#

Käytän FXAA reunojenpehmennystä, mutta tuokaan ei korjaa ko. ongelmaa. Sahalaitasuudet toki poistuvat, mutta ei tuo näkyviin ko. "lauta" välejä.

Metabolix [27.01.2014 22:27:07]

#

Eikö FXAA ole tavoitteeseesi nähden aivan väärä antialiasointitekniikka? Siinähän pehmennetään keinotekoisesti lopputuloksena olevaa kuvaa, eli jos raot eivät näy, ne eivät mistään ilmesty. Sinun pitäisi käyttää MSAA:ta tai vastaavaa.

Jos et saa riittävää tarkkuutta MSAA:lla, ei auta kuin tehdä jokin hieno varjostin, joka tunnistaa raot ja jotenkin nostaa ne esiin.

Joonazan [28.01.2014 15:40:04]

#

Vaikuttaa siltä, että haluat piirtää ääriviivat kuten esim. Antichamberissä.

täältä saa jopa lähdekoodia

lainaus:

There is a very simple way to render outlines, using the Z-buffer: the object is first rendered, then it is rendered a bit closer, culling the front faces. Thanks to the Z-buffer, only the outline will appear.

User137 [05.02.2014 15:57:18]

#

Jos tarkoitus on piirtää viivoja niin silloin piirretään viivoja... GL_LINES muunmuassa yksi renderointitila. Tietysti silloin ei ole yksittäistä kuvaa aidasta, vaan sinun pitää luoda sen rautalankamalli.

Vastaus

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

Tietoa sivustosta