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 является конкретный локализованный объект map или block под корневым узлом, а 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; }

enabled

Включить/выключить вывод во время работы сессии. В выключенном состоянии сессия не выводит данные, изображение с камеры (если управляется EasyAR) и transform всех объектов сессии не обновляются.

public bool enabled { get; set; }

Методы

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