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.
Kauas zoomattaessa alkaa ilmenee ongelmia, nimittäin selväähän on että, mitä kauempaa modellia katsotaan sitä pienempi = vähemmän pikseleitä.
Olisiko kuitenkin mahdollista jollain esim. shaderillä saada pienet yksityis kohdat esiin?
Eiköhän tuommoiset jutut perinteisesti jätetä reunanpehmennyksen harteille.
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);
Käytän FXAA reunojenpehmennystä, mutta tuokaan ei korjaa ko. ongelmaa. Sahalaitasuudet toki poistuvat, mutta ei tuo näkyviin ko. "lauta" välejä.
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.
Vaikuttaa siltä, että haluat piirtää ääriviivat kuten esim. Antichamberissä.
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.