2015-06-30 2 views
6

Ich habe cpp-Code, der einfache OpenGL-Formen in Maya anzeigt. Wenn die Legacy-Ansichtsfenster verwendet wird, dann habe ich genau das, was ich will: Pfeile entlang der gehen x-Achse:
Verschiedene OpenGL-Verhalten abhängig von Maya-Ansichtsfenster verwendet

enter image description here

Allerdings, wenn ich den gleichen Code in der 2.0 Viewport verwenden dann die Pfeile sind folgende Kamera Bewegungen:

enter image description here

enter image description here

Dies geschieht nur wenn ich den glTranslatef anwende (den ich benutzen muss).

Dies ist das Stück Code:

for (int i=0;i<10;i++) 
{ 
    glPushMatrix(); 
    glTranslatef(i,0,0); 
    glBegin(GL_LINES); 
    // Arrow 
    glVertex3f(0, y, z); 
    glVertex3f(1, y, z); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z+0.5); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z-0.5); 

    glEnd(); 
    glPopMatrix(); 
} 

Wie kann ich die richtige Verhalten in den "neuen" Maya Ansichtsfenstern hat?

+0

Ein Teil von mir in Ihren Anruf fühlt sich an wie Sie fehlt a 'glLoadIdentity()' nach der 'glPushmatrix()', fühlt sich der andere zu leicht um wahr zu sein. – Borgleader

+0

Der andere Teil ist leider richtig. Danke für den Vorschlag trotzdem :-) –

+0

Das seltsame Matrixverhalten lässt mich fragen, ob die verschiedenen Ansichtsfenster unterschiedliche Matrixstapel gebunden haben, und im letzteren Fall wenden Sie eine Transformation auf die Projektionsmatrix und nicht auf die Modellansicht an. .. – JasonD

Antwort

2

Im Anschluss an meinen Kommentar sieht das so aus, als würde die Übersetzung in einem anderen Koordinatensystem als dem Rendering ablaufen, was darauf hindeutet, dass ein anderer Matrixstack gebunden ist.

So im alten Ansichtsfenster (wo Ihr Ergebnis ist ‚richtig‘) können Sie eine Übersetzung auf die Model-View-Matrix verketten, aber in dem 2,0 Fall, werden Sie vielleicht eine Übersetzung auf die Projektion Matrix verketten - was zur Folge hätte in der Übersetzung scheint relativ zum Bildschirm zu sein, anstatt die Ansicht.

würde ich empfehlen, um sicherzustellen, dass alle relevanten Zustand richtig machen eingerichtet ist, wie die gewünschte glMatrixMode(), bevor mit dem Matrixstapel Messing usw. Einstellung

+0

Das hat den Trick gemacht, danke! Ich musste glMatrixMode implementieren (GL_MODELVIEW) –