У меня есть серверная функция, которая обнаруживает и оценивает позу маркера aruco по изображению.
Используя функцию estimatePoseSingleMarkers
Я нашел вектор вращения и перемещения.
Мне нужно использовать это значение в приложении Android с ARCore для создания позы.
В документации сказано, что Pose нужны два массива с плавающей точкой (ротация и перевод): https://developers.google.com/ar/reference/java/arcore/reference/com/google/ar/core/Pose.
float[] newT = new float[] { t[0], t[1], t[2] };
Quaternion q = Quaternion.axisAngle(new Vector3(r[0], r[1], r[2]), 90);
float[] newR = new float[]{ q.x, q.y, q.z, q.w };
Pose pose = new Pose(newT, newR);
Положение трехмерного объекта, размещенного в этой позе, совершенно случайно.
Что я делаю не так?
Это снимок с изображения сервера после оценки и отрисовки оси. Изображение, которое я получаю, повернуто на 90 °, не уверен, относится ли оно к чему-либо.