[ Almedin @ 07.03.2005. 20:42 ] @
Pokusam napraviti jednostavnu scenu sa dva predmeta jedan, dvije plohe koje formiraju slovo T. Problem je sto je ugao gdje se sastaju dvije plohe stepenicast ako gledam iz daljine a ako gledam izbliza nije. Ako nisam jasno opisao stavicu sliku.
[ tosa @ 07.03.2005. 22:34 ] @
Bilo bi dobro da okacis te dve slike (dobro i lose), bice jasnije u svakom slucaju.
[ yooyo @ 07.03.2005. 23:11 ] @
Mislim da je to problem sa z-bufferom. Napisi deo code-a u kome si postavio projektivnu matricu (gluPerspective).

yooyo
[ Almedin @ 08.03.2005. 22:27 ] @
Evo slike.

Kod je sljedeci ('gl' je panel):

SetupGLWindow(gl);
glViewport(0, 0, gl.Width, gl.Height);
glMatrixMode(GL_PROJECTION);
gluPerspective(5, gl.Width/gl.Height, 0.1, 120);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);


Kod za crtanje scene:

glLoadIdentity;
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glPushMatrix;
gluLookAt(LookX.Position, 3, LookZ.Position, 0, 0, 0, 0, 1, 0);

Cube.Size.x := 0.018;
Cube.Size.y := 1.0;
Cube.Size.z := 0.4;
Cube.Position.x := 0;
Cube.Position.y := 0;
Cube.Position.z := 0;
CubeGL(Cube);

Cube.Size.x := 1.0;
Cube.Size.y := 0.018;
Cube.Size.z := 0.4;
Cube.Position.x := 0.509;
Cube.Position.y := 0.091;
Cube.Position.z := 0;
CubeGL(Cube);

Cube.Size.x := 0.018;
Cube.Size.y := 1.0;
Cube.Size.z := 0.4;
Cube.Position.x := 1.018;
Cube.Position.y := 0;
Cube.Position.z := 0;
CubeGL(Cube);
glPopMatrix;

SwapBuffers(wglGetCurrentDC);

Dio koda procedure CubeGL:

begin
glPushMatrix;
glTranslate(ACube.Position.x, ACube.Position.y, ACube.Position.z);
glBegin(GL_QUADS);
// These vertices create the Front Side
ColorGL(ACube.Color.Front);
glVertex3f(-ACube.Size.x/2, -ACube.Size.y/2, ACube.Size.z/2);
glVertex3f(-ACube.Size.x/2, ACube.Size.y/2, ACube.Size.z/2);
glVertex3f(ACube.Size.x/2, ACube.Size.y/2, ACube.Size.z/2);
glVertex3f(ACube.Size.x/2, -ACube.Size.y/2, ACube.Size.z/2);
...
...
glEnd;
glPopMatrix;


Kada se udaljavam od objekata cak se jedan vidi kroz drugi.
[ yooyo @ 09.03.2005. 11:55 ] @
Iz ovoga sto si mi poslao nemogu bas puno da zakljucim... Moram ti dati par generalnih saveta pa proveri tvoj code:

1. Kada je gl u matrix modu GL_PROJECTION onda matricu menjaj iskljucivo pomocu glLoadIdentity, gluPerspective, glFrustum ili glOrtho funkcijama. U GL_MODELVIEW mozes koristit sve ostale osim gluPerspective, glFrustum ili glOrtho. Ovo je jako bitno jer mnogi grese pa u projektivnu matricu ubace kompoziciju camera_matrix * projection_matrix. Ovakav nacin nije ispravan jer ce kasnije biti problema sa fog-om, svetlima, normalama,...

2. Postavio si near na 0.1 a far na 120. AKo su to npr mere u metrima tvoji objekti su suvise mali, tj. cube.size.x je 0.018m. Jednostavno dubinska rezolucija ne moze da podnese tako tanke objekte. Probaj da promenis far na 10 pa ce ti verovatno sve proraditi.

3. Kada si inicijalizovao opengl sta si izabrao za depth bits. 16, 24 ili 32 bit? AKo je 16bit probaj da promenis na 24 ili 32bit

4. u gluPerspective si postavio fov na 5. To je prilicno mala vrednost i slike ti vise izgledaju "izometrijski" nego "perspektivno". Probaj 45.

yooyo
[ Almedin @ 09.03.2005. 22:06 ] @
Svaka cast, majstore, pomoglo je. Ja inace ne poznajem opengl nego mi treba da vidim kako ce nesto izgledati.

Postoji li neka jednostavna mogucnost da ovaj prikaz bude antialiased (da rubovi ne budu nazubljeni). Citao sam u dokumentaciji pojasnjenje nekog postupka gdje bi izmedju ostalog trebalo da crtam objekte redom po dubini. Postoji li metod da ih crtam bilo kojim redom a da ivice ne budu nazubljene. Inace svi objekti bi bili ovakve plohe.
[ yooyo @ 10.03.2005. 13:22 ] @
Mozes da pokusas sa GL_ARB_multisample extenzijom (http://oss.sgi.com/projects/og...e/registry/ARB/multisample.txt)

yooyo