Как разместить объекты в ARCore, которые указывают в заданном географическом направлении - PullRequest
1 голос
/ 02 апреля 2019

В настоящее время я работаю над приложением ARCore и хочу разместить объекты (например, стрелки) на сцене AR, которые начинаются с текущего местоположения пользователя и указывают на географический север.

Моя идея заключалась в том, чтобыпоместите объекты на ось X, поверните их вокруг оси Y и, наконец, переведите объекты, чтобы они находились в положении пользователя.Я планировал сначала получить ориентацию устройства относительно севера (что я могу сделать), а также получить ориентацию относительно мировой системы координат ARCore.Я сейчас изо всех сил, чтобы сделать последнее.Я думаю, что мне нужен угол вокруг оси Y между осью X и текущим направлением обзора.Я понял, что это можно каким-то образом получить через позу:

arFragment.getArSceneView().getArFrame().getCamera().getDisplayOrientedPose();

Я понятия не имею, что делать с этой позой.Значения qx (), qy (), qz (), getXAxis (), getYAxis () и getZAxis () не соответствуют ожиданиям.Когда я наблюдал, как они меняются при перемещении устройства (после преобразования их в градусы), они варьировались примерно от -55 до 55.

TL; DR: Как вращать объекты в ARCore, чтобы указывать в заданном географическом направлении?

Я нашел это решение, но не знаю, каким должен быть «dHelper»: Размещение объекта с указанным компасом в ARCore

1 Ответ

1 голос
/ 04 апреля 2019

, чтобы поставить стрелку на экране камеры, которая будет направлять вас, вам не нужен аркора в любом случае.Это вращение siple, равное na ImageView

, если вы хотите повернуть 3D-объект в соответствии с осью, вам нужно получить фактическое положение, целевое положение, посчитать ось и повернуть в зависимости от значения int, заданного вами в градусах.получил из расчета.

...