Table of Contents

Запуск симуляции с использованием файлов EIF в Unity

В этой статье объясняется, как использовать файлы EIF для симуляции в Unity, что позволяет выполнять большую часть разработки на компьютере и визуально оценивать результаты.

Перед началом работы

Симуляция использует файлы EIF в качестве входных данных, поэтому перед началом необходимо записать файл EIF:

Также необходимо понимать:

Включение frame player в сессии

ARSession.AssembleOptions предоставляет различные способы настройки комбинации компонентов сессии. Один из способов — установить AssembleOptions.FrameSource в значение FramePlayer, чтобы включить компонент frame player, что позволяет использовать файлы EIF для симуляции.

Например:

Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;

Также можно в редакторе выбрать AR Session (EasyAR) и изменить соответствующую опцию в Assemble Options в окне Inspector:

alt text

Таким образом, при запуске сессии будет активирован компонент frame player, а другие компоненты frame source не будут выбраны.

Эффект воспроизведения файла EIF с помощью frame player показан в этом видео:

В этом видео показан эффект построения плотной карты пространства с использованием frame player на компьютере. Слева представление Hierarchy, посередине — Scene, справа — Game. Содержимое Game идентично тому, что пользователь видит в реальном мире на телефоне.

Во время воспроизведения файла EIF все AR-компоненты в сессии работают нормально, содержимое сцены и логика взаимодействия также функционируют, что позволяет выполнять большую часть разработки на компьютере и визуально оценивать результаты.

Совет

Эффект, наблюдаемый на компьютере при воспроизведении EIF с помощью frame player, в основном соответствует эффекту на телефоне во время записи файла EIF.

Важно

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

Воспроизведение при запуске сессии

По умолчанию при запуске сессии frame player автоматически начинает воспроизведение файла EIF. Однако перед воспроизведением необходимо указать путь к файлу EIF, используя свойства FramePlayer.FilePathType и FramePlayer.FilePath.

Например:

var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;

Также можно в редакторе выбрать AR Session (EasyAR) и изменить соответствующие параметры в компоненте Frame Player в окне Inspector:

alt text

Если файл не указан или путь недействителен, при запуске сессии frame player завершится ошибкой и выведет сообщение в журнал:

File not found:

Ручное воспроизведение

Чтобы вручную контролировать время воспроизведения, установите FramePlayer.enabled в false перед запуском сессии:

Session.GetComponent<FramePlayer>().enabled = false;

Также можно в редакторе выбрать AR Session (EasyAR) и снять флажок Enabled в компоненте Frame Player в окне Inspector:

alt text

Когда необходимо начать воспроизведение, используйте Play().

Например:

if (Session.Assembly.FrameSource is FramePlayer player)
{
    player.Play();
}

Каждый вызов Play() останавливает предыдущее воспроизведение (если оно было) и начинает с начала.

Осторожно

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

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

Пауза и возобновление

Используйте FramePlayer.enabled для управления паузой и возобновлением воспроизведения.

Например, установите FramePlayer.enabled = false, чтобы приостановить воспроизведение:

player.enabled = false;

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

Остановка воспроизведения

Используйте Stop() для остановки воспроизведения.

player.Stop();

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

Переход к определенной точке времени (seek)

Используйте Seek(double) для перехода к определенной точке времени и начала воспроизведения с нее.

Например, переход на 5 секунд вперед:

player.Seek(player.Time + 5);
Примечание

После перехода воспроизведение может начаться не точно с указанного времени. Точность зависит от способа кодирования файла EIF и интервала между ключевыми кадрами.

Не все файлы EIF поддерживают переход. Используйте свойство IsSeekable, чтобы проверить, поддерживает ли текущий файл EIF переход.

Примечание

Только файлы EIF, записанные в формате H264 с нормальным завершением записи, поддерживают переход. Если файл EIF не поддерживает переход, вызов Seek(double) не даст эффекта.

Управление скоростью воспроизведения

Используйте свойство Speed для управления скоростью воспроизведения.

Например, увеличение скорости воспроизведения на 0.1x:

player.Speed += 0.1;

Не все файлы EIF поддерживают управление скоростью. Используйте свойство IsSpeedChangeable, чтобы проверить, поддерживает ли текущий файл EIF управление скоростью.

Примечание

Только файлы EIF, записанные в формате H264 с нормальным завершением записи, поддерживают управление скоростью. Если файл EIF не поддерживает управление скоростью, установка Speed не даст эффекта.

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

  • Попробуйте инструмент проверки сессии. Этот инструмент включает простой проигрыватель EIF для более быстрой симуляции с использованием файлов EIF