[ Nothingman @ 01.12.2004. 04:28 ] @
Evo nakon duzeg vremena i brojnih obaveza, ponovo sam se dohvatio OpenGL-a
i programiranja uopste. Odluchio sam da nastavim tamo gde sam
letos stao, tj. da se jos malo zezam sa MD2 fajlovima i da se polako
privikavam na OpenGL. Medjutim ostao mi je jedan problem koji jos nisam uspeo
da resim,iako sam celo veche razbijao glavu. Ali ovo debagovanje grafickih
programa je izgleda skoro nemoguce bez dva monitora :)
Zato sam dosao ovde da molim za pomoc sve ljude dobre volje koji imaju
neku ideju sta bi mogao biti uzrok, a bogami i resenje mog problema.

No, da predjemo na stvar. Napisao sam program koji ucitava,prikazuje i
animira MD2 fajlove. Medjutim kada ga pokrenem i pocnem da odmicem i
primicem model po Z-osi pojedini delici poligona kao da nestaju, sto
kada se spoji sa animacijom dovodi do iritirajuceg treptanja, iliti
"flickeringa" sto bi rekli Svabo, Amerikanac, a bogami i Rus.
Ono sto je zanimljivo je to da sto je model blizi kameri ovo je
sve manje izrazeno, tako da kada se skroz priblizi treptanje u
potpunosti nestaje. Prvo sto sam pomislio da je to zbog toga
sto sam koordinate tekstura iz MD2 modela morao da delim sa 256
da bi ih normalizovao izmedju 0 i 1.0 pa da tu dolazi do izvesne greske
koja postaje sve veca kada se u igru ukljuce i razne trasformacije, perspektiva
i slicno. Medjutim posto je moje znanje OpenGl-a dosta skromno(letos sam prvi put
poceo povremeno da radim sa njim), ne vidim neki drugi logican nacin kako da
izbegnem tu normalizaciju. Onda sam odluchio da kompletan kod napisem bez
Windows zavrzlama kako bi bio pregledniji, uz nadu da ce mi to pomoci
da shvatim o cemu je rec. Tako sam sve to napisao koristeci GLUT(sa kojim imam
jos manje iskustva nego sa OpenGL-om, i ne bi me cudilo da sam napisao gomilu
gluposti :) ), ali ni to nije pomoglo.

Nadam se da ce neko od vas znati o cemu je rec jer sam se vise stvarno smorio.
Okacio sam EXE file i source code, pa koga ne mrzi neka
pogleda. Code je prilicna anarhija, ali sam veceras ubacio malo komentara da
bi vam bar malo olaksao posao.(Komentari i kod su na engleskom jer
ovde ima ljudi iz Srbije, Hrvatske, Bosne... i svi
pricamo drugim jezikom, pa nam ne ostaje nista drugo nego da se sporazumevamo
na engleskom :) ).

RAR file sa kodom i programom mozete skinuti sa:
[url]http://209.245.59.156/Gimme/25292804/38789671/45824832/6266859D-1528-486C-988E-D7894D52AFF1/0.0488047/2/GlTest.rar[/url]

Komande u programu su sledece:

F6 - pokrece animaciju, F5 - vraca u frame by frame mod, F7 - prethodna animacija,
F8 - sledeca animacija, LEVO - prethodni frame(samo u frmae modu),
DESNO - sledeci frame(samo u frame modu), GORE-DOLE - translacija,
INSERT-PgUP - rotacija, HOME-END - rotacija, F1 - izlaz.

Na kraju, izvinjavam se sto sam vas smorio, ali nadam se da imate razumevanja
jer nisam spavao vec 24 sata :)

Hvala unapred!

p.s. Ako kompajlirate code obavezno iskljucite structure alignment opciju
komajlera.

[ Reljam @ 01.12.2004. 04:46 ] @
Na prvi pogled, zvuci kao da ti je Z opseg lose namesten. Pogledaj koje si vrednosti koristio za Zmin i Zmax kada si pravio projection matricu. Zmax / Zmin ne bi trebao da bude veci od 10-tak hiljada za najbolje rezultate.
[ bkaradzic @ 01.12.2004. 18:22 ] @
Citat:
Reljam: Zmax / Zmin ne bi trebao da bude veci od 10-tak hiljada za najbolje rezultate.

Mislim da prosečne kartice imaju tzv. "Z-fighting" problema i sa opsegom 1.0f-10000.0f. Ja obično po defaultu postavim Zmin na 5.0f.

@Nothingman
Citat:
http://msdn.microsoft.com/libr...en-us/opengl/glfunc02_0oj1.asp

Depth-buffer precision is affected by the values specified for znear and zfar. The greater the ratio of zfar to znear is, the less effective the depth buffer will be at distinguishing between surfaces that are near each other. If "r = Zfar / Znear" roughly log (2) r bits of depth buffer precision are lost. Because r approaches infinity as znear approaches zero, you should never set znear to zero.

Branimir
[ Nothingman @ 01.12.2004. 19:44 ] @
Kod mene je near clipping plane podesen na 0.1f a far na 400.0f.
Znaci moguce je da je problem to sto mi je Znear previse blizu nuli...
Mislim da sam pokusavao i sa Znear=1.0f, Zfar=100.0f a da je i
tada zezao.
OK, cim dodjem kuci probacu sa opsezima 1.0f-10 000f, 5.0f-10 000f i
5.0f-50 000f pa cu vas obavestiti da li je uspelo.
Pozdrav!
[ Nothingman @ 02.12.2004. 02:56 ] @
Svaka cast momci, to je bilo to!
Problem je definitivno bio u vrednosti 0.1f za Znear.
Sa vrednostima 1.0f-10000.0f, 5.0f-10000.0f i 5.0f-50000.0f
radi odlicno. Jos jedino dolazi do malih treptaja po ivicama modela
ali to i sam znam sta je i resicu ga se kad skontam kako se u OpenGL-u radi antialiasing. Jos jednom hvala i veliki pozdrav.