Вероятно, задумался над проблемой. Вот простой способ получить угол, с которым камера обращена к оси -Z (положительный угол находится справа от оси -Z). Этот метод также можно использовать для определения угла, на который камера направлена и к другой оси.
// get the camera
Camera arCamera = arFragment.getArSceneView().getScene().getCamera();
// get forward vector of the camera
Vector3 cameraPos = arCamera.getWorldPosition();
Vector3 cameraForward = Vector3.add(cameraPos, arCamera.getForward().scaled(1.0f));
Vector3 forwardVector = Vector3.subtract(cameraForward, cameraPos);
forwardVector = new Vector3(forwardVector.x, 0, forwardVector.z).normalized();
double degreesFromCamToNegZAxis = Vector3.angleBetweenVectors(Vector3.forward(), forwardVector);
// take the dot product between the two vectors
// to see from what side of the -Z axis it is facing
float dotProduct = Vector3.dot(Vector3.right(), forwardVector);
// value is between -1 to 1
// if negative, forward vector is facing to the right of -Z axis
if (dotProduct < 0) {
degreesFromCamToNegZAxis = -degreesFromCamToNegZAxis;
}
Если вы хотите разобраться с другой осью, просто измените вектор на мир, который вы пытаетесь связать с ним, вот так. В этом примере положительный угол находится справа от положительной оси Z.
double degreesFromCamToZAxis = Vector3.angleBetweenVectors(Vector3.back(), forwardVector);
// take the dot product between the two vectors
// to see from what side of the Z axis it is facing
float dotProduct = Vector3.dot(Vector3.left(), forwardVector);
// value is between -1 to 1
// if negative, forward vector is facing to the left of Z axis
if (dotProduct < 0) {
degreesFromCamToZAxis = -degreesFromCamToZAxis;
}
Это изображение, которое визуализирует систему координат, которую использует ARCore (аналогично сенсорам Android). Справочная система координат ARCore