2016-11-22 2 views
0

Ich benutze die GLM-Bibliothek für OpenGL, um Formen relativ zu einer Kamera mit Perspektive und Modelview Matrizen zu rendern. Die drei Kamera Vektoren sind wie folgt:OpenGL Translate Point mit Maus Drag

glm::vec3 cam_pos(0.0f, 0.0f, 20.0f);  // e | Position of camera 
    glm::vec3 cam_look_at(0.0f, 0.0f, -1.0f); // d | This is where the camera looks at 
    glm::vec3 cam_up(0.0f, 1.0f, 0.0f);   // up | What orientation "up" is 

Die Perspektive und modelviews über glm Funktionen werden wie folgt generiert:

P = glm::perspective(fov, (float)width/(float)height, 0.1f, 1000.0f); 
    V = glm::lookAt(cam_pos, cam_look_at, cam_up); 

I Trackball Kamerabewegung durchgeführt haben, die Richtung einzustellen, bei dem die Kamera schaut .

Jetzt versuche ich ein ziehbares Punktobjekt zu codieren, das der Mausbewegung folgt, je nachdem, auf welche Weise die Kamera schaut. Allerdings habe ich Probleme mit der Mathematik dafür.

Wie bekomme ich die Übersetzungsmatrix, um den Punkt innerhalb des GLFW-Maus-Callbacks zu übersetzen, wenn die Maus in x- und y-Koordinaten und den drei Kameravektoren verschoben wird?

Antwort

0

Übersetzen Sie Ihre 3 Kamera-Vektoren in eine Rotations-Translations-Matrix (RT). Mit dieser RT Matrix können Sie nun jedes starre Objekt (im Grunde alles in der Computergrafik) in Bezug auf Ihren Kamerastandort und Ihre Pose linear transformieren.

Werfen Sie einen Blick auf diese http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/

Hoffnung dieser Ansatz hilft.