Table of Contents

Выбор подходящего режима центра

Выбор подходящего режима центра имеет решающее значение для создания контента. В этом разделе вы узнаете, как получить и изменить режим центра, а также получите рекомендации по выбору подходящего режима центра.

Перед началом

  • Ознакомьтесь с основными концепциями, компонентами и рабочим процессом сессии в разделе Введение в AR Session.
  • Узнайте основные понятия режима центра и его влияние на поведение движения объектов в сцене в разделе Режим центра в AR Session.

Получение доступных режимов центра

Во время работы сессии в выпадающем меню Center на панели Inspector отображаются только доступные для текущей сессии режимы центра. Если сессия не запущена, отображаются все режимы центра.

alt text

На этом изображении показаны режимы центра, доступные для сессии при использовании CameraDeviceFrameSource в редакторе.

В скриптах список доступных режимов центра для текущей сессии можно получить через свойство ARSession.AvailableCenterMode после успешной сборки сессии.

Например, следующий код показывает, как определить, доступен ли определенный режим центра в текущей сессии:

if (Session.AvailableCenterMode.Contains(mode))
{
    // режим mode доступен в текущей сессии
}

Изменение режима центра

Откройте панель Inspector и в выпадающем меню Center выберите нужный режим центра.

alt text

В скриптах режим центра можно изменить через свойство ARSession.CenterMode.

Например, следующий код демонстрирует циклическое переключение между доступными режимами центра:

while (true)
{
    Session.CenterMode = (ARSession.ARCenterMode)(((int)Session.CenterMode + 1) % Enum.GetValues(typeof(ARSession.ARCenterMode)).Length);
    if (Session.AvailableCenterMode.Contains(Session.CenterMode)) { break; }
}

При каждом обновлении сессии проверяется, действителен ли текущий режим центра. Если он действителен, сессия немедленно пытается использовать новый режим центра.

В этом видео сессия изначально использует режим FirstTarget, где центральным объектом является рождественская елка (светло-голубое облако точек). Затем мы вручную меняем режим центра на Camera, и центральным объектом становится камера (синий конус). Подробное описание содержимого видео см. в разделе Режим центра в AR Session.

При обновлении сессии, если измененный режим центра недействителен для текущей сессии, свойство CenterMode автоматически изменяется на первый доступный режим центра (обычно FirstTarget или SessionOrigin), и в журнал выводится предупреждение:

Center mode {Value} is unavailable in this session, reset to {NewValue}.

Как выбрать режим центра

Согласование с объектами реального мира является ключевым требованием при создании AR-контента, а режим центра определяет, какой объект сессия использует в качестве точки отсчета для расчета положения и ориентации других объектов в сцене. Поэтому выбор подходящего режима центра крайне важен для создания контента.

Общие рекомендации

Во многих случаях использование режимов FirstTarget или SpecificTarget с target в качестве центра более удобно для создания контента, так как точка отсчета контента, размещенного под target, остается неподвижной и не подвергается нежелательному влиянию движения XR Origin или camera (например, влиянию на расчеты физической системы). Однако это не абсолютное правило. Конкретно:

  • Если вы не знаете, что выбрать, используйте значение по умолчанию, т.е. режим центра FirstTarget
    Поскольку большинство AR-функций имеют погрешности, и во время работы эти погрешности постоянно корректируются, объекты, которые кажутся неподвижными относительно реального мира (например, target разреженной пространственной карты и XR Origin отслеживания движения), на самом деле движутся относительно друг друга в виртуальном пространстве. В таких случаях использование target в качестве центра больше соответствует потребностям создания контента, чем использование XR Origin.

  • Одновременное отслеживание нескольких target
    В случае одновременного отслеживания нескольких target, также из-за вычислительных погрешностей, даже если объекты реального мира неподвижны относительно друг друга, эти target могут двигаться относительно друг друга. Выбор центрального объекта зависит от конкретных потребностей, но обычно режим FirstTarget является более подходящим выбором.

  • Когда использовать режим SessionOrigin
    Режим SessionOrigin подходит для сценариев, где работает только отслеживание движения, и XR Origin является единственной точкой отсчета. Он также подходит для особых случаев, если производитель гарнитуры не реализовал точку отсчета отслеживания движения правильно, тогда необходимо использовать центр мира Unity, что вынуждает использовать режим SessionOrigin.

  • Сценарии использования режима Camera
    Режим Camera больше подходит для сценариев, где физическая камера неподвижна (например, AR для карточных игр с фиксированной камерой), так как использование этого режима облегчает создание контента.

Распространенные режимы центра для различных AR-функций

При использовании отдельных AR-функций некоторые режимы центра применяются чаще. В таблице ниже перечислены распространенные режимы центра для соответствующих AR-функций:

Функция Распространенный режим центра
Mega FirstTarget или SpecificTarget
Отслеживание движения SessionOrigin
Обнаружение плоскостей SessionOrigin
Разреженная пространственная карта FirstTarget или SpecificTarget
Плотная пространственная карта SessionOrigin
Отслеживание поверхности FirstTarget или SpecificTarget
Отслеживание изображений FirstTarget, SpecificTarget или Camera
Облачное распознавание изображений FirstTarget, SpecificTarget или Camera
Отслеживание объектов FirstTarget, SpecificTarget или Camera

Проблемы, которые следует учитывать при разработке для нескольких устройств

При разработке кроссплатформенных AR-приложений необходимо учитывать поддержку различных режимов центра на разных устройствах.

  • Если задействованы только телефоны и планшеты, обычно проблем не возникает. Если требуется использовать SessionOrigin, убедитесь, что отслеживание движения может работать.
  • При использовании гарнитур необходимо проявлять особую осторожность:
    • Ознакомьтесь с разделом Доступные режимы центра, чтобы определить, какие режимы центра поддерживаются на устройствах, которые вы планируете использовать. При использовании сторонних расширений обратите внимание на используемый ими OriginType.
    • При использовании устройств Rokid по возможности избегайте UXR. Использование XRI гарантирует доступность большинства режимов центра.
    • На гарнитурах, не поддерживающих режимы FirstTarget и SpecificTarget, имейте в виду, что контент для таких функций, как Mega или отслеживание изображений, в большинстве случаев не сможет оставаться неподвижным относительно мировой системы координат Unity.

Контент, корректно отображаемый в любом режиме центра

Предупреждение

В Unity AR любой объект, существующий в мировой системе координат Unity и не имеющий скорректированного transform в соответствии с компонентами сессии, может отображаться некорректно.

Если модели размещены в мировой системе координат, их положение и ориентация могут не соответствовать ни одному объекту реального мира. Фактический результат работы может случайно выглядеть нормально, а может казаться парящим в воздухе или хаотично двигающимся.

Чтобы гарантировать корректное отображение контента в любом режиме центра, необходимо:

  • Всегда размещайте отображаемый контент под соответствующим узлом target или под узлом XR Origin (если контенту необходимо следовать за движением XR Origin)
  • ИЛИ выравнивайте положение и ориентацию контента и target или XR Origin вручную, но делайте это после события ARSession.PostSessionUpdate
Примечание

Это не гарантирует корректную работу всех элементов контента, поскольку некоторые функции Unity могут работать только в мировой системе координат (например, физическая система). Поэтому выбор подходящего режима центра по-прежнему важен.

Связанные темы