Ich versuche, meine Kamera in einer sphärischen Bewegung um ein Modell in meiner Welt zu bewegen. Ich habe gesehen, wie man Kugelkoordinaten (rho, theta, phi) in kartesische Koordinaten (x, y, z) umrechnet, aber ich bin mir nicht sicher, wie ich das einrichten soll. Hier ist, was ich bisher versucht habe, aber es ist nicht kontinuierlich um das Modell. Es kommt zu einem bestimmten Punkt und dann scheint sich die Rotation umzukehren.Move Kamera um Kugel
Initialize theta
und phi
:
private float theta = 0.0f;
private float phi = 0.0f;
aktualisieren theta
und phi
jeder Rahmen:
// This should move the camera toward the upper-right continuously, correct?
theta = (theta+1.0f)%360;
phi = (phi+1.0f)%360;
Konvertieren theta
und phi
zu kartesischen Koordinaten für die Kamera:
camera.position.x = CAMERA_DISTANCE * (float)Math.sin(theta*MathHelper.PIOVER180) * (float)Math.cos(phi*MathHelper.PIOVER180);
camera.position.y = CAMERA_DISTANCE * (float)Math.sin(theta*MathHelper.PIOVER180) * (float)Math.sin(phi*MathHelper.PIOVER180);
camera.position.z = CAMERA_DISTANCE * (float)Math.cos(theta*MathHelper.PIOVER180);
aktualisieren Sie dann die Kamera Blick auf Punkt und Blick Matrix:
camera.lookAt(0, 0, 0);
camera.update();
Hinweis: Ich bin mit Java auf Android mit dem Libgdx Rahmen und ich versuche, um die Drehung zu steuern, um einen 2D-Bildschirm-virtuellen Joystick und ich muss noch eine Möglichkeit finden, den Joystick auf theta
und phi
abzubilden.
Jede Hilfe wird sehr geschätzt!
Das hat perfekt funktioniert! Vielen Dank!! –
Dies funktioniert nur, wenn Sie in origo schauen. – lacas