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

OpenGL problem sa spojem dvije plohe

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

[ Pregleda: 2776 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Almedin

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



+27 Profil

icon OpenGL problem sa spojem dvije plohe07.03.2005. u 20:42 - pre 232 meseci
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.
 
Odgovor na temu

tosa
上海, 中国

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

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: OpenGL problem sa spojem dvije plohe07.03.2005. u 22:34 - pre 232 meseci
Bilo bi dobro da okacis te dve slike (dobro i lose), bice jasnije u svakom slucaju.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.86.*



Profil

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

yooyo
 
Odgovor na temu

Almedin

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



+27 Profil

icon Re: OpenGL problem sa spojem dvije plohe08.03.2005. u 22:27 - pre 232 meseci
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
 
Odgovor na temu

yooyo

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



Profil

icon Re: OpenGL problem sa spojem dvije plohe09.03.2005. u 11:55 - pre 232 meseci
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
 
Odgovor na temu

Almedin

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



+27 Profil

icon Re: OpenGL problem sa spojem dvije plohe09.03.2005. u 22:06 - pre 232 meseci
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.
 
Odgovor na temu

yooyo

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



Profil

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

yooyo
 
Odgovor na temu

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

[ Pregleda: 2776 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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