Добавление группы источников данных кадров
AR Session может содержать несколько компонентов источников данных кадров, называемых frame source group. Во время выполнения session выбирает из frame source group наиболее подходящий источник данных кадров на основе текущего устройства и включённых AR-функций. В этой статье описано, как использовать frame source group и управлять ею.
Перед началом
- Изучите базовые понятия, типы и методы выбора во время выполнения для frame source.
Использование frame source group из preset AR Session
Session, созданная с конфигурацией по умолчанию, уже содержит группу источников данных кадров; при использовании одной AR-функции этого обычно достаточно.
Разные preset sessions содержат разные источники данных кадров.
Session, созданная с preset ARSessionFactory.ARSessionPreset.ImageTracking или через меню
AR Session (Image Tracking Preset), содержит только один источник данных кадров:
Scene hierarchy session, созданной с preset ARSessionFactory.ARSessionPreset.MegaBlock_MotionTracking_Inertial или через меню
AR Session (Mega Block Default Preset), содержит несколько компонентов источников данных кадров:
Если в сцене изначально была создана session с каким-либо preset, то при добавлении других функций во время итерации нужно не только добавить соответствующие компоненты frame filter, но и при необходимости добавить подходящие компоненты источников данных кадров.
Важно
После обновления с версии 4.7 или более ранней необходимо полностью удалить session и заново создать её через меню или ARSessionFactory, чтобы использовать preset frame source group.
Ниже перечислены компоненты источников кадровых данных, настроенные по умолчанию для всех предустановленных AR-функций. Обратите внимание, что порядок в списке совпадает с порядком компонентов источников кадровых данных в сцене:
| Предустановка | Группа источников кадровых данных |
|---|---|
Примечание
Порядок компонентов, созданных preset, гарантирует использование оптимального источника данных кадров на всех устройствах, поддерживаемых built-in frame source.
Использование конфигурации frame source по умолчанию
При использовании параметров по умолчанию конфигурация frame source автоматически настраивается в зависимости от устройства и AR-функций, включённых во время выполнения.
Если вы вручную изменяли параметры frame source, то при изменении AR-функций в session (например, при добавлении motion tracking в session, которая изначально содержала только image tracking) может потребоваться вручную настроить параметры frame source под новые требования, чтобы все AR-функции работали с наилучшим результатом.
Важно
После обновления с версии 4.7 или более ранней необходимо полностью удалить session и заново создать её через меню или ARSessionFactory, чтобы использовать корректные параметры по умолчанию.
Добавление frame source group
В представлении Hierarchy выберите AR Session (EasyAR) и щёлкните правой кнопкой мыши. Через меню EasyAR Sense > [ AR Feature ] > Frame Source : * можно добавить компонент frame source, подходящий для этой функции. Также можно через меню EasyAR Sense > Frame Source by Transform Type > * Dof > Frame Source : * добавить нужный компонент frame source.
В скрипте используйте ARSessionFactory.AddFrameSource<Source>(GameObject, bool), чтобы добавить компонент frame source.
Например, через меню EasyAR Sense > Frame Source by Transform Type > 3 Dof Rot-Only > Frame Source : Three Dof Camera Device можно добавить ThreeDofCameraDeviceFrameSource к выбранной session.

Соответствующий код скрипта:
ARSessionFactory.AddFrameSource<ThreeDofCameraDeviceFrameSource>(session);
Порядок frame source
Во время assembly session из frame source group в итоге выбирается только один источник данных кадров и добавляется в session. Правило выбора зависит от значения свойства AssembleOptions.FrameSourceSelection. В конфигурации по умолчанию можно повлиять на итоговый выбор frame source, изменяя порядок компонентов в frame source group.
Обычно можно напрямую перемещать object frame source для сортировки, используя метод сортировки объектов в scene в представлении Hierarchy.
В скрипте используйте Transform.SetSiblingIndex(int), чтобы изменить порядок object.
Например, чтобы поставить MotionTrackerFrameSource перед другими frame source, выберите object Motion Tracker в представлении Hierarchy и перетащите его в самый верх.
Того же эффекта можно добиться следующим кодом:
motionTrackerFrameSource.transform.SetSiblingIndex(0);
Также доступны некоторые predefined методы сортировки. В представлении Hierarchy выберите AR Session (EasyAR) и щёлкните правой кнопкой мыши. Через меню EasyAR Sense > Utility > Sort Frame Source : * > * можно отсортировать несколько определённых компонентов frame source.
В скрипте используйте ARSessionFactory.SortFrameSource(GameObject, ARSessionFactory.FrameSourceSortMethod), чтобы получить тот же эффект.
Например, меню EasyAR Sense > Utility > Sort Frame Source : Motion Tracker > System SLAM может поставить MotionTrackerFrameSource перед ARCoreFrameSource, ARCoreARFoundationFrameSource, ARKitFrameSource, ARKitARFoundationFrameSource и AREngineFrameSource.

Соответствующий код скрипта:
ARSessionFactory.SortFrameSource(session, new ARSessionFactory.FrameSourceSortMethod { MotionTracker = ARSessionFactory.FrameSourceSortMethod.MotionTrackerSortMethod.PreferEasyAR });
После такой сортировки scene hierarchy становится:

Связанные темы
- Узнайте, как добавлять и настраивать frame source для headset
- Попробуйте получить используемый frame source во время выполнения
