Какова ориентация пространства камеры ARKit? - PullRequest
0 голосов
/ 09 января 2020

Я хочу лучше понять пространство координат камеры, в котором находится преобразование ARCamera ARKit. В документации написано

Это преобразование создает локальное пространство координат для камера, которая является постоянной относительно ориентации устройства. В пространстве камеры ось x направлена ​​вправо, когда устройство находится в UIDeviceOrientation.landscapeRight ориентации, то есть ось x всегда направлена ​​вдоль длинной оси устройства от лицевой стороны камера в направлении кнопки «Домой». Ось Y указывает вверх (относительно ориентации UIDeviceOrientation.landscapeRight), а ось Z указывает в сторону от устройства на стороне экрана.

После этого UIDeviceOrientation.landscapeRight документация гласит:

Устройство находится в горизонтальном режиме, устройство находится в вертикальном положении, а кнопка «Домой» находится слева.

Когда я пытаюсь понять похоже, что существует конфликт между "the x-axis points to the right when the device is in UIDeviceOrientation.landscapeRight orientation" и "that is, the x-axis always points along the long axis of the device, from the front-facing camera toward the Home button". У первого + x справа, а у последнего + x слева.

Вот как я рисую "the x-axis points to the right when the device is in UIDeviceOrientation.landscapeRight orientation":

enter image description here

И вот как я рисую "that is, the x-axis always points along the long axis of the device, from the front-facing camera toward the Home button":

enter image description here

Спасибо за любую помощь, спасибо!

Обновление: это не влияет на этот вопрос, но, чтобы сделать его более ясным, причина, по которой я я спрашиваю об этом, потому что мне интересно получить значения данных x, y и z geomagneti c из Core Location . В Базовом местоположении, если телефон находится в Портретном режиме, + x - вправо, + y - вверх, а + z - к пользователю. Так что может показаться, что система координат камеры для ARKit отличается от системы координат камеры в Базовом местоположении.

Ответы [ 2 ]

1 голос
/ 10 января 2020

Давайте сначала разберемся с чем-то, у landscapeRight есть кнопка «Домой» справа и верхняя часть телефона слева, в отличие от того, что вы показываете на своих фотографиях. Поэтому на ваших рисунках телефон должен поворачиваться на 180 градусов. landscapeRight в этом случае отличается от ориентации устройства

Прежде всего, система координат вашего сеанса Arkit будет зависеть от настройки мирового выравнивания вашего сеанса AR

Таким образом, у вас есть три варианта

Гравитация

  • В этом случае Y будет направлен параллельно гравитации независимо от ориентации вашего устройства

Для оси z, ARKit выбирает базисный вектор (0,0, -1), указывающий в направлении камеры устройства и перпендикулярно оси гравитации

  • В соответствии с этим, ось z будет указывать в направлении камеры (таким образом, для фронтальной камеры ось z будет указывать от экрана, а для задней камеры - ось z будет go от телефона и от вас)

  • Затем ось X определяется с помощью правила правой руки

enter image description here

Гравитация и курс

  • Ось Y будет направлена ​​параллельно гравитации
  • Ось Z будет указывать на юг (-z будет указывать на истинный север)
  • Ось X будет указывать на восток

enter image description here

Камера

В этом случае камера всегда будет в положении (0,0,0 ) в вашем мировом координатном пространстве ось Y будет направлена ​​вверх (или вправо, если ваш телефон находится в портретном режиме), ось X будет указывать от верхней части телефона в направлении кнопки «Домой», а ось Z будет указывать в сторону от устройства.

0 голосов
/ 30 января 2020

Хорошо, поэтому мои исходные диаграммы были неверными, как правильно заметил @ Mart10. Пейзаж прямо в контексте камеры ARKit означает, что телефон находится в горизонтальной ориентации с кнопкой «Домой» на правой стороне. Этот пост объясняет это более подробно.

Это означает, что в системе координат камеры используется стандартная кнопка «домой» с правой стороны: + x: вправо, + y: вверх , + z: назад.

Это отличается от «системы координат датчика», которая является системой координат, в которой значения данных x, y и z geomagneti c из Базового местоположения войдите. «Система координат датчика» - это когда в альбомной ориентации с кнопкой «Домой» справа: + x: вверх, + y: влево, + z: назад. Вы можете использовать преобразование в go между ними.

...