2012-10-18 11 views
5

Ich arbeite auf der interaktiven Szenen für einen Computergrafik-Kurs. Ich habe ein Programm eingerichtet, das Farbwürfel erzeugen wird und ich kann sie mit der Tastatur drehen. Allerdings sind sie durch die in der Nähe von Clip-Ebene meiner Kamera aufgeschnitten zu werden:OpenGL Near Clip Flugzeug

Color cubes being clipped

Ich habe versucht, gluPerspective zu verwenden, aber die OpenGL-Dokumentation gibt keine Beispiele für seine Verwendung. Ich fand es online in einem Beispielprogramm verwendet wird, und semi-replizierten ihren Code:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(65, 1, 0.01, 100); 
glMatrixMode(GL_MODELVIEW); 

Irgendwelche Gedanken?

UPDATE: Wie unten in den Kommentaren vorgeschlagen, habe ich versucht, glFrustum stattdessen mit dem folgenden Code:

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustum(-0.5, 0.5, -0.5, 0.5, 0.1, 100); 
glMatrixMode(GL_MODELVIEW); 

Auch hier gibt es keinen Unterschied. Drehe ich die resultierenden Matrizen nicht richtig oder so?

+1

Sie nehmen eine Rechen Grafik Kurs, perspektivische Projektion beinhaltet und sie sprachen nicht über die in der Nähe von Clip-Ebene? –

+1

Vielleicht müssen Sie Ihre Objekte etwas weiter von der Kamera entfernen. Im Moment scheint es, dass sie herauskam näher, dass 0,0 – Kromster

+0

Sie als Krom ausgedrückt oder passen Sie Ihre Sichtstumpfs – CStreel

Antwort

2

Vielleicht müssen Sie Ihre Objekte ein wenig weiter weg von der Kamera bewegen. Im Moment scheint es, dass sie näher als 0.0 sind.

In Anbetracht Ihres Updates "Ich habe die Würfel eine ganze Einheit von der Kamera wegbewegt, und jetzt, da sie sich drehen, werden sie sowohl von der nahen als auch von der entfernten Schnittebene abgeschnitten" - 0,1). Bewege die Würfel um 50 von der Kamera weg und setze deine Schnittebenen auf 0,1 bis 1000, um sicherzustellen, dass alles passt.

Wenn das Problem weiterhin besteht könnten wir an Ihren Matrizen Code zu suchen.

+0

Meine Würfel werden aus der folgenden Punktmatrix konstruiert: 'point4 Vertices [8] = { point4 (-0,5, -0,5, 0,5, 1,0), point4 (-0,5, 0,5, 0,5, 1,0), Punkt4 (0,5, 0,5, 0,5, 1,0), Punkt4 (0,5, -0,5, 0,5, 1,0), Punkt4 (-0,5, -0,5, -0,5, 1,0), Punkt4 (-0,5, 0,5, -0,5, 1.0), Point4 (0.5, 0.5, -0.5, 1.0), Point4 (0.5, -0.5, -0.5, 1.0) }; ' sie positioniert sind (-0,75, 0, 0) und (0,75, 0), 0 bzw. (-0.75, 0, 1) und (0,75, 0, 1), nachdem ich sie weiter weg von der Kamera bewegt – Nick

+1

Sie wissen, dass, wenn ein Würfel bei -1 und gedreht um 45 Grad seiner Kanten angeordnet ist, sind 1.41 weg von m es ist in der Mitte und sollte abgeschnitten werden? – Kromster

+0

Ich verstehe, dass ein Teil des Bildes außerhalb der Kamera sein wird, und sollte abgeschnitten werden, aber es ist so sichtbar, und Sie können in die Innenseiten der Würfel sehen. Ganz zu schweigen vom weit entfernten Clip-Flugzeug. Wenn ich eine echte Szene haben will, wird es nicht gut aussehen.Nichts, was ich im Aufruf von glFrustum oder gluPerspective ändere, scheint irgendetwas zu verändern, also glaube ich nicht, dass ich sie richtig verwende. Wie benutzt du sie? – Nick