Próbuję przenieść kamerę w sferyczny ruch wokół modelu w moim świecie. Widziałem konwersję współrzędnych sferycznych (rho, theta, phi) na współrzędne kartezjańskie (x, y, z), ale nie jestem pewien, jak to ustawić. Oto, co próbowałem do tej pory, ale nie jest to ciągły orbitujący wokół modelu. Dochodzi do pewnego punktu, a potem rotacja wydaje się odwracać.Przenoszenie kamery wokół kuli
Initialize theta
i phi
:
private float theta = 0.0f;
private float phi = 0.0f;
Aktualizacja theta
i phi
każda ramka:
// This should move the camera toward the upper-right continuously, correct?
theta = (theta+1.0f)%360;
phi = (phi+1.0f)%360;
Konwersja theta
i phi
do współrzędnych kartezjańskich do kamery:
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);
Następnie zaktualizować okiem kamery w punkcie a widok matrycy:
camera.lookAt(0, 0, 0);
camera.update();
Uwaga: używam Java na Android z ramami libgdx i staram się kontrolować obrót przy użyciu na ekranie wirtualny joystick 2D i nadal potrzebuję znaleźć sposób mapowania joysticka na theta
i phi
.
Każda pomoc jest bardzo doceniana!
To działało idealnie! Dziękuję Ci!! –
Działa to tylko wtedy, gdy wyglądasz w oryginale. – lacas