Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

OpenGL problem sa spojem dvije plohe

[es] :: 3D programiranje :: OpenGL problem sa spojem dvije plohe

[ Pregleda: 1314 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Almedin

Član broj: 5895
Poruke: 256
*.as54.tz.bih.net.ba.



Profil

icon OpenGL problem sa spojem dvije plohe07.03.2005. u 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.
07.03.2005. u 20:42 

tosa

Moderator
Član broj: 1811
Poruke: 1272
*.bg.wifi.vline.verat.net.



Profil

icon Re: OpenGL problem sa spojem dvije plohe07.03.2005. u 22:34
Bilo bi dobro da okacis te dve slike (dobro i lose), bice jasnije u svakom slucaju.
Soylent green: over 6 billion served!
07.03.2005. u 22:34 

yooyo
Centroid / Technical director

Član broj: 4891
Poruke: 1101
195.252.86.*



Profil

icon Re: OpenGL problem sa spojem dvije plohe07.03.2005. u 23:11
Mislim da je to problem sa z-bufferom. Napisi deo code-a u kome si postavio projektivnu matricu (gluPerspective).

yooyo
07.03.2005. u 23:11 

Almedin

Član broj: 5895
Poruke: 256
*.bih.net.ba.



Profil

icon Re: OpenGL problem sa spojem dvije plohe08.03.2005. u 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.
Prikačeni fajlovi
08.03.2005. u 22:27 

yooyo
Centroid / Technical director

Član broj: 4891
Poruke: 1101
*.sbb.co.yu.



Profil

icon Re: OpenGL problem sa spojem dvije plohe09.03.2005. u 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
09.03.2005. u 11:55 

Almedin

Član broj: 5895
Poruke: 256
*.as54.tz.bih.net.ba.



Profil

icon Re: OpenGL problem sa spojem dvije plohe09.03.2005. u 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.
09.03.2005. u 22:06 

yooyo
Centroid / Technical director

Član broj: 4891
Poruke: 1101
*.sbb.co.yu.



Profil

icon Re: OpenGL problem sa spojem dvije plohe10.03.2005. u 13:22
Mozes da pokusas sa GL_ARB_multisample extenzijom (http://oss.sgi.com/projects/og...e/registry/ARB/multisample.txt)

yooyo
10.03.2005. u 13:22 

[es] :: 3D programiranje :: OpenGL problem sa spojem dvije plohe

[ Pregleda: 1314 | Odgovora: 6 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.