Ganon
2012-09-09, 10:04:59
Heyho.
Jedes Tutorial im Netz ist anders, und irgendwie kriege ich es mit keinem oder einem Schnitt von allen nicht hin xD Darum frag ich mal hier...
Es geht am Anfang erst mal um eine First Person Camera. Ich nutze zur Darstellung erst mal OpenGL und als Mathe-Bibliothek GLM.
Ich habe eine für die Kamera z.B. folgende Werte:
pos = (0,0,5)
direction = -pos // gucke zum Zentrum
up = (0,1,0)
Diese übergebe ich dann ans Frustum für's Frustum Culling und für das LookAt(pos, pos+direction, up).
Als Input bekomme ich von der Maus jetzt die relativen x,y Werte, seit der letzten Bewegung. Also den 2D-Vektor wohin ich drehen will. Jetzt würde ich gerne den direction-Vektor in die Richtung des Maus-Vektors drehen. Eben wie man sich so eine FPS-Kamera so vorstellt.
Aber wie mache ich das genau, wenn man das denn überhaupt so macht. Bin gerade was das anbelangt so verwirrt... xD
Habe halt die Funktionen von:
http://glm.g-truc.net/api/a00195.html und http://glm.g-truc.net/api/a00149.html
Hatte halt mal "stumpf" sowas probiert, aus einem der Tutorials, aber das klappt "überraschenderweise" nicht... :
void HandleMouseMotion(glm::vec2 &dir) {
glm::quat orientation;
glm::quat r1 = glm::angleAxis(dir.x, 0.0f,1.0f,0.0f);
glm::quat r2 = glm::angleAxis(dir.y, 1.0f,0.0f,0.0f);
orientation = r1 * r2;
direction = orientation * direction;
}
Hat jemand vllt. einen Tipp dazu?
Jedes Tutorial im Netz ist anders, und irgendwie kriege ich es mit keinem oder einem Schnitt von allen nicht hin xD Darum frag ich mal hier...
Es geht am Anfang erst mal um eine First Person Camera. Ich nutze zur Darstellung erst mal OpenGL und als Mathe-Bibliothek GLM.
Ich habe eine für die Kamera z.B. folgende Werte:
pos = (0,0,5)
direction = -pos // gucke zum Zentrum
up = (0,1,0)
Diese übergebe ich dann ans Frustum für's Frustum Culling und für das LookAt(pos, pos+direction, up).
Als Input bekomme ich von der Maus jetzt die relativen x,y Werte, seit der letzten Bewegung. Also den 2D-Vektor wohin ich drehen will. Jetzt würde ich gerne den direction-Vektor in die Richtung des Maus-Vektors drehen. Eben wie man sich so eine FPS-Kamera so vorstellt.
Aber wie mache ich das genau, wenn man das denn überhaupt so macht. Bin gerade was das anbelangt so verwirrt... xD
Habe halt die Funktionen von:
http://glm.g-truc.net/api/a00195.html und http://glm.g-truc.net/api/a00149.html
Hatte halt mal "stumpf" sowas probiert, aus einem der Tutorials, aber das klappt "überraschenderweise" nicht... :
void HandleMouseMotion(glm::vec2 &dir) {
glm::quat orientation;
glm::quat r1 = glm::angleAxis(dir.x, 0.0f,1.0f,0.0f);
glm::quat r2 = glm::angleAxis(dir.y, 1.0f,0.0f,0.0f);
orientation = r1 * r2;
direction = orientation * direction;
}
Hat jemand vllt. einen Tipp dazu?