Table of Contents

Class ARSession

Пространство имен
easyar
Сборка
EasyAR.Sense.dll

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

Все функции компонентов EasyAR доступны только после StartSession().

Относительные transform между Camera и некоторыми AR-компонентами контролируются сессией. Один объект, называемый CenterObject, остается неподвижным в сцене, а остальные движутся относительно него. Этот объект выбирается на основе значения CenterMode. Подробнее см. в описании ARSession.ARCenterMode.

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
Наследование
ARSession

Поля

AutoStart

Автоматически запускать сессию при MonoBehaviour.Start. Если false, необходимо вручную вызвать StartSession() для запуска сессии.

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

Режим центра AR. Можно изменять в любое время, вступает в силу немедленно. Если указанный режим недоступен, он будет автоматически изменен на доступный.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

Режим горизонтального зеркального отображения рендеринга. Можно изменять в любое время, вступает в силу немедленно. Доступен только при использовании отслеживания изображений или объектов.

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

Свойства

AssembleOptions

Опции сборки сессии, необходимо установить перед Assemble() (если не вызывался ранее, StartSession() вызовет его неявно).

public AssembleOptions AssembleOptions { get; }

Assembly

Сборка AR-компонентов.

public ARAssembly Assembly { get; }

AvailableCenterMode

Доступные режимы центра для текущей сессии.

public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

CenterObject

Центральный объект, используемый этой сессией в текущем кадре.

Этот объект представляет неподвижный объект в пространстве Unity или его родительский узел. Это может быть Origin, Camera или какой-либо `target`. `Target` - это объект, содержащий компонент TargetController или BlockRootController. При использовании карты разреженного пространства или EasyAR Mega фактическим центральным GameObject является объект карты или блока, локализованный под корневым узлом, а CenterObject - это его родительский объект. Подробнее см. в описании ARSession.ARCenterMode.

public GameObject CenterObject { get; }

Diagnostics

Компонент диагностики сессии.

public DiagnosticsController Diagnostics { get; }

Origin

Начало координат сессии при работе любой функции отслеживания движения.

Он будет автоматически выбран из сцены или создан EasyAR/расширением стороннего источника кадров, если не существует. При использовании встроенного источника кадров, если существует XROrigin фреймворка Unity XR, он будет выбран. Если пакет AR Foundation отсутствует, будет выбран только XR Origin с дефолтной древовидной структурой.

public GameObject Origin { get; }

Report

Отчет сессии. Доступен для просмотра после завершения сборки и обновляется при изменении состояния сессии. Используется для просмотра деталей сбоя сессии или доступности компонентов.

public SessionReport Report { get; }

SpecificTargetCenter

Центральный объект, заданный вручную. При CenterMode == SpecificTarget CenterObject будет установлен на этот объект. Можно изменять в любое время, вступает в силу немедленно.

Объект должен содержать компонент TargetController или BlockRootController.

public GameObject SpecificTargetCenter { get; set; }

State

Текущее состояние сессии.

public ARSession.SessionState State { get; }

TrackingStatus

Состояние отслеживания движения при работе любой функции отслеживания движения.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

Методы

Assemble()

Собрать сессию, используя AssembleOptions. Если вызывается, будет автоматически вызван в StartSession().

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

Преобразовать из системы координат экрана ([0, 1]^2) в систему координат изображения ([0, 1]^2). pointInView должен быть нормализован в [0, 1]^2. Недоступно на гарнитурах.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

Параметры

pointInView

StartSession()

Запустить сессию. Если AutoStart - true, вызывается автоматически в MonoBehaviour.Start.

public void StartSession()

StopSession(bool)

Остановить работающую сессию. Все обновления transform и рендеринга изображения прекратятся. Можно оставить изображение последнего кадра при остановке, но только если рендеринг изображения контролируется EasyAR (не работает с AR Foundation, гарнитурами и т.д.).

public void StopSession(bool keepLastFrame)

Параметры

keepLastFrame

События

AssembleUpdate

Событие обновления Assemble() сессии. Во время одного Assemble() (если не вызывался ранее, StartSession() вызовет его неявно) это событие срабатывает 1-2 раза. Первый раз - по завершении Assemble. Если обновление списка устройств завершено к моменту завершения Assemble, второго вызова не будет, иначе второй вызов произойдет при завершении обновления списка устройств.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

Событие обновления входного кадра, срабатывает только при изменении InputFrame, отображаемого сессией. Недоступно на гарнитурах; если существует сквозное изображение, его рендеринг выполняется устройством.

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

Событие завершения обновления сессии. Частота соответствует частоте MonoBehaviour.Update (на гарнитурах требует правильной реализации от автора расширения). К моменту срабатывания все изменения transform, управляемых EasyAR в этом кадре, завершены.

public event Action PostSessionUpdate

StateChanged

Событие изменения State сессии.

public event Action<ARSession.SessionState> StateChanged