Запись анимации ввода — MRTK2

MRTK имеет систему записи, с помощью которой данные о движении головы и отслеживании рук могут храниться в файлах анимации. Записанные данные затем можно воспроизвести с помощью системы имитации ввода.

Запись входных данных является полезным инструментом в различных ситуациях:

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

Службы записи и воспроизведения

Для записи и воспроизведения входных данных соответственно предоставляются две службы системы ввода.

Служба записи входных данных

InputRecordingServiceпринимает данные из main преобразования камеры и активных контроллеров рук и сохраняет их во внутреннем буфере. При запросе эти данные сериализуются в двоичные файлы для хранения и последующего воспроизведения.

Запись схема

Чтобы начать запись входных данных, вызовите функцию StartRecording . StopRecording приостанавливает запись (но не отменяет данные, записанные до сих пор, при необходимости используйте DiscardRecordedInput для этого).

По умолчанию размер буфера записи ограничен 30 секундами. Это позволяет службе записи сохранять запись в фоновом режиме, не накапливая слишком много данных, а затем сохранять последние 30 секунд при необходимости. Интервал времени можно изменить с помощью RecordingBufferTimeLimit свойства , или запись может быть неограниченной UseBufferTimeLimit с помощью параметра .

Данные в буфере записи можно сохранить в двоичном файле с помощью функции SaveInputAnimation .

Дополнительные сведения о формате двоичного файла см. в разделе Входная спецификация формата файла анимации.

Служба воспроизведения входных данных

InputPlaybackService считывает двоичный файл с входными данными анимации, а затем применяет эти данные через InputSimulationService для повторного создания записанных движений.

Воспроизведения назадСхема

Чтобы начать воспроизведение входной анимации, ее необходимо загрузить из файла с помощью функции LoadInputAnimation .

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

Текущее время анимации также можно управлять непосредственно с помощью свойства LocalTime .

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

Циклическое или сбрасывание анимации ввода или настройки LocalTime напрямую путем очистки временная шкала может привести к непредвиденным результатам при управлении сценой! Записываются только входные движения, а любые дополнительные изменения, такие как перемещение объектов или переворачивание переключателей, не сбрасываются. Обязательно перезагрузите сцену, если были внесены необратимые изменения.

Средства редактора для записи и воспроизведения анимации ввода

В редакторе Unity существует ряд средств для записи и изучения анимации ввода. Доступ к этим средствам можно получить в окне средства имитации ввода, которое можно открыть в меню Имитация ввода Смешанная реальность Toolkit > Utilities>.

Примечание

Запись и воспроизведение входных данных работают только в режиме воспроизведения.

Окно записи ввода имеет два режима:

  • Запись для записи входных данных в режиме воспроизведения и их сохранение в файлах анимации.

    При переключение на кнопке InputRecordingService записи включается запись входных данных. При отключении кнопки записи отображается выбор сохранения файла, а записанная анимация ввода сохраняется в выбранном месте назначения.

    Ограничение времени буфера также можно изменить в этом режиме.

  • Воспроизведение для загрузки файлов анимации, а затем повторного создания входных данных с помощью системы имитации входных данных.

    Анимация должна быть сначала загружена в этом режиме. После записи входных данных в режиме записи результирующая анимация загружается автоматически. Кроме того, можно нажать кнопку "Загрузить", чтобы выбрать существующий файл анимации.

    Кнопки управления временем слева направо:

    • Сброс времени воспроизведения до начала анимации.
    • Непрерывное воспроизведение анимации с течением времени.
    • Шаг вперед на один раз.

    Ползунок также можно использовать для скрабирования временная шкала анимации.

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

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