Рассчитать угол X между ImageTarget и ARCamera в Vuforia Unity? - PullRequest
0 голосов
/ 25 октября 2018

У меня есть одна imageTarget, я отслеживаю эту imageTarget с помощью ARCamera, я хочу найти угол X для imageTarget относительно ARCamera (мобильное устройство), потому что мне нужно переместить мой объект (imageTarget) к камере.Я использую Vuforia в Unity.Если возможно, пожалуйста, предоставьте мне пример кода, так как я новичок в Unity, мало что знаю.Я делюсь с вами своими усилиями здесь.Я использую этот код для расчета угла, я думаю, что это не правильно.Пожалуйста, просмотрите это.Пожалуйста, помогите мне.

Transform dummy = new GameObject("Dummy").transform;
dummy.SetParent(trackableEventHandler.transform);
dummy.LookAt(Camera.main.transform, trackableEventHandler.transform.up);
float angle = Mathf.Atan2(dummy.forward.z, dummy.forward.x) - Mathf.Atan2(trackableEventHandler.transform.forward.z, trackableEventHandler.transform.forward.x);
angle *= Mathf.Rad2Deg;
text.text = angle.ToString();

1 Ответ

0 голосов
/ 25 октября 2018

Попробуйте это

Transform dummy = new GameObject("Dummy").transform;
dummy.SetParent(trackableEventHandler.transform);
dummy.LookAt(Camera.main.transform, trackableEventHandler.transform.up);
float angle = Vector3.Angle(Camera.main.transform.forward, dummy.position - Camera.main.transform.position);
text.text = angle.ToString();

Редактировать: Используйте это вместо углов со знаком

float angle = Vector3.SignedAngle(Camera.main.transform.forward, dummy.position - Camera.main.transform.position, Vector3.up);

Для двумерных углов со знаком используйте вместо этого

float angle = Vector2.SignedAngle(Vector2(Camera.main.transform.forward.x, Camera.main.transform.forward.z), Vector2(dummy.positionx.x - Camera.main.transform.position.x, dummy.positionx.z - Camera.main.transform.position.z));
...