Math Formel für die erste Person 3D-Spiel
Frage
Ich mag ein erstes 3D-Spiel machen, aber ich kann die Kamera Formel rechts nicht festgelegt.
Also ich habe eine Rotation: 0 bis 359. Als nächstes werden die x, y-Koordinaten, bleiben z gleich.
Kameradrehung: 0 - vorn, 90 - links, 180 - zurück, 270 - richtig, aber ich kann es anpassen
Was ist die Formel für die Kamera?
Plattform: Panda3d, Python, opengl
Danke
Lösung
OK, es sieht aus wie Sie eine Doom-Stil Kamerabewegung benötigen, das heißt, keine Auf-Ab-Kurve. Bedenken Sie:
- Sie müssen die „Welt“ zu machen, wie durch die Kamera gesehen.
- positive x Unter der Annahme, nach rechts und positive y auf Ihrer Frontseite, wenn die Kamera bewegt sich nach rechts bewegt sich das Bild der Welt auf der linken Seite.
- Wenn die Kamera schaltet sich positiv auf der linken Seite, das Bild dreht der Welt nach rechts.
Jetzt wollen wir versuchen, die Gleichungen zu konstruieren:
1.First, übersetzt die Weltkoordinaten auf die Position der Kamera:
Xwt = Xw - Xc;
Ywt = Yw - Yc;
Zwt = Zw;
(Xc,Yc,Zc) = camera position
(Xw,Yw,Zw) = world coordinates of object in the scene
(Xwt,Ywt,Zwt) = world coordinates of object translated to camera position
2.Now drehen sich die übersetzten Koordinaten um einen Winkel entgegengesetzt zu der Drehung der Kamera:
Xwc = Xwt * Cos(psi) + Ywt * Sin(psi);
Ywc = -Xwt * Sin(psi) + Ywt * Cos(psi);
Zwc = Zwt
Psi = angle of camera rotation
(Xwc,Ywc,Zwc) = world coordinates of object transformed to camera orientation
Sie können die beiden Schritte kombinieren und es zu einer Matrixform umwandeln.
Andere Tipps
fand ich später ein Tutorial, das mein Problem behoben: