Ich habe ein grundlegendes OpenGL-Spiel programmiert und ich habe Code, der die Maus in Bezug auf das Bewegen der Kamera handhabt.Wie könnte man einfach Pitch() und Yaw() aufrufen, um die Kamera schließlich zu rollen()?
Ich verwende die folgende Methode:
int windowWidth = 640;
int windowHeight = 480;
int oldMouseX = -1;
int oldMouseY = -1;
void mousePassiveHandler(int x, int y)
{
int snapThreshold = 50;
if (oldMouseX != -1 && oldMouseY != -1)
{
cam.yaw((x - oldMouseX)/10.0);
cam.pitch((y - oldMouseY)/10.0);
oldMouseX = x;
oldMouseY = y;
if ((fabs(x - (windowWidth/2)) > snapThreshold) || (fabs(y - (windowHeight/2)) > snapThreshold))
{
oldMouseX = windowWidth/2;
oldMouseY = windowHeight/2;
glutWarpPointer(windowWidth/2, windowHeight/2);
}
}
else
{
oldMouseX = windowWidth/2;
oldMouseY = windowHeight/2;
glutWarpPointer(windowWidth/2, windowHeight/2);
}
glutPostRedisplay();
}
Doch nach im Kreis umsah werden Sie die Kamera finden beginnt zu „rollen“ (drehen). Da ich nur Pitch and Yaw rufe, sehe ich nicht, wie das möglich ist.
Hier ist der Code, den ich für meine Kamera-Klasse: http://pastebin.com/m20d2b01e
Soweit ich weiß, meine Kamera „Rollen“ sollte nicht passieren. Es sollte einfach auf und ab oder gieren nach links und rechts. NICHT rollen.
Was könnte das verursachen?
heh, sieht aus, als ob wir genau dasselbe gedacht hätten ;-) –