Руководство по настройке профиля MRTK2

Смешанная реальность Toolkit централизовано как можно больше конфигурации, необходимой для управления набором средств (за исключением истинных "вещей" среды выполнения).

Это руководство представляет собой простое пошаговое руководство для каждого из экранов профиля конфигурации, доступных в настоящее время для набора средств.

Профиль конфигурации main Смешанная реальность Toolkit

Профиль конфигурации main, присоединенный к объекту MixedRealityToolkit GameObject в сцене, предоставляет точку входа main для набора средств в проекте.

Примечание

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

Профиль конфигурации MRTK

Все профили по умолчанию для Смешанная реальность Toolkit можно найти в проекте SDK в папке Assets/MRTK/SDK/Profiles.

Важно!

DefaultHoloLens2ConfigurationProfile оптимизирован для HoloLens 2. Дополнительные сведения см. в разделе Профили .

При открытии профиля конфигурации main Смешанная реальность Toolkit в инспекторе появится следующий экран:

Сцена настройки MRTK

Если выбрать ресурс MixedRealityToolkitConfigurationProfile без MixedRealityToolkit в сцене, вам будет задан запрос на автоматическую настройку сцены в MRTK. Это необязательный параметр; однако для доступа ко всем экранам конфигурации в сцене должен быть активный объект MixedRealityToolkit.

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

Здесь можно перейти ко всем профилям конфигурации для MRTK, в том числе:

Эти профили конфигурации подробно описаны ниже в соответствующих разделах:


Параметры работы

Этот параметр, расположенный на странице конфигурации main Смешанная реальность Toolkit, определяет операцию по умолчанию Смешанная реальность масштаба среды для проекта.

Параметры опыта

Параметры камеры

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

Профиль камеры

Параметры системы ввода

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

Параметры системы ввода 1

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

Параметры системы ввода 2

Каждый из отдельных профилей подробно описан ниже.


Параметры визуализации границ

Система границ преобразует воспринимаемую границу, сообщаемую базовой системой границы или защиты платформ. Конфигурация визуализатора границ позволяет автоматически отображать записанную границу в сцене относительно положения пользователя. Граница также будет реагировать или обновляться в зависимости от того, где пользователь телепортируется в сцене.

Параметры визуализации границ

Выбор системы телепортации

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

Параметры системы телепорта

Параметры пространственной осведомленности

Проект Смешанная реальность предоставляет перестроенную систему пространственной осведомленности для работы с системами пространственного сканирования в проекте, который выбран по умолчанию.

Параметры пространственной осведомленности 1

Смешанная реальность Toolkit позволяет настроить способ запуска системы( автоматически при запуске приложения или позже программным способом), а также задать экстенты для поля зрения.

Он также позволяет настроить параметры сетки и поверхности, а также настроить, как ваш проект понимает окружающую среду.

Это применимо только к устройствам, которые могут предоставлять отсканированную среду.

Параметры пространственной осведомленности 2

Параметры диагностики

Необязательной, но весьма полезной функцией MRTK является функциональность подключаемого модуля диагностика.

Параметры диагностики

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

Параметры диагностики Параметры системы 2

Параметры системы сцены

MRTK предоставляет эту дополнительную службу для управления загрузкой и выгрузкой сложных аддитивных сцен. Чтобы решить, подходит ли система сцены для вашего проекта, ознакомьтесь с руководством по системе сцен начало работы.

Параметры системы сцены 1

Параметры дополнительных служб

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

Любая зарегистрированная служба по-прежнему получает все преимущества всех событий Unity без накладных расходов и затрат на реализацию MonoBehaviour или неуклюжих одноэлементных шаблонов. Это позволяет использовать чистые компоненты C# без дополнительных затрат на сцену для выполнения как процессов переднего плана, так и фоновых процессов, например систем нерестилищ, логики игры среды выполнения или практически всего остального.

дополнительные параметры системы

Параметры действий ввода

Действия ввода позволяют абстрагировать любые физические взаимодействия и входные данные из проекта среды выполнения. Все физические входные данные (от контроллеров, рук, мыши и т. д.) преобразуются в логическое действие ввода для использования в проекте среды выполнения. Это гарантирует, что независимо от того, откуда поступают входные данные, ваш проект просто реализует эти действия как "Действия для выполнения" или "Взаимодействие с" в ваших сценах.

Чтобы создать новое действие ввода, просто нажмите кнопку "Добавить новое действие" и введите понятное текстовое имя, которое оно представляет. После этого вам потребуется выбрать только ось (тип данных), для передачи действия или в случае физических контроллеров, физический тип входных данных, к которому он может быть присоединен, например:

Ограничение оси Тип данных Описание Пример использования
Нет Нет данных Используется для пустого действия или события Триггер события
Необработанные (зарезервированные) object Зарезервировано для использования в будущем. Н/Д
Цифровой bool Логические данные типа вкл. или выкл. Кнопка контроллера
Одна ось FLOAT Одно значение данных точности Диапазон входных данных, например триггер
Двойная ось Vector2 Дата с двумя типами с плавающей точкой для нескольких осей Dpad или Thumbstick
Три позиции Dof Vector3 Данные позиционного типа с 3 осью с плавающей оси Контроллер только стиля трехмерной позиции
Три вращения Dof Quaternion Только вращающаяся ось с 4 осью с плавающей оси Контроллер стиля "Три градуса", например контроллер Oculus Go
Шесть Dof позу Смешанная реальность (Vector3, Quaternion) Входные данные в стиле положения и поворота с помощью компонентов Vector3 и Quaternion Контроллер движения или указатель

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

Примечание

Действия ввода являются одним из немногих компонентов, которые не могут быть изменены во время выполнения, они являются только конфигурацией времени разработки. Этот профиль не следует менять во время выполнения проекта из-за зависимости платформы (и ваших проектов) от идентификатора, созданного для каждого действия.

Профиль конфигурации

Правила действий ввода

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

Например, преобразование события ввода с одной двойной оси из DPad в 4 соответствующие действия "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (как показано на рисунке ниже).

Это также можно сделать в собственном коде. Однако, видя, что это был очень распространенный шаблон, платформа предоставляет механизм для этого "из коробки"

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

Профиль правил действия ввода


Конфигурация указателя

Указатели используются для управления интерактивностью в сцене с любого устройства ввода, предоставляя как направление, так и проверку нажатия с любым объектом в сцене (который имеет подключенный коллайдер или является компонентом пользовательского интерфейса). Указатели по умолчанию автоматически настраиваются для контроллеров, гарнитур (взгляд/ фокус) и ввода с помощью мыши и сенсорного ввода.

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

Профиль указателя ввода
  • Экстент указателя. Определяет глобальный экстент указателя для всех указателей, включая взгляд.
  • Указывает на маски слоев raycast. Определяет, к каким слоям будут выполняться указатели.
  • Отладка рисования указывающих лучей. Вспомогательное средство отладки для визуализации лучей, используемых для луча.
  • Отладочная отрисовка цветов, указывающих на лучи: набор цветов, используемых для визуализации.
  • Заготовка курсора взгляда. Позволяет легко указать глобальный курсор взгляда для любой сцены.

Существует дополнительная вспомогательная кнопка, чтобы быстро перейти к поставщику взгляда, чтобы переопределить некоторые конкретные значения для Gaze, если это необходимо.


Настройка жестов

Жесты — это системная реализация, позволяющая назначать действия ввода различным методам ввода "Жест", предоставляемым различными пакетами SDK (например, HoloLens).

Примечание

Текущая реализация жестов предназначена только для HoloLens и будет расширена для других систем по мере их добавления в набор средств в будущем (даты пока нет).

Конфигурация жестов

Голосовые команды

Как и жесты, некоторые платформы среды выполнения также предоставляют интеллектуальные функции преобразования речи в текст с возможностью создания команд, которые могут быть получены проектом Unity. Этот профиль конфигурации позволяет настроить следующее:

  1. Общие параметры. Для параметра "Поведение запуска" задано значение Автозапуск или Запуск вручную, определяется, следует ли инициализировать KeywordRecognizer при запуске системы ввода или позволить проекту решить, когда инициализировать KeywordRecognizer. "Уровень достоверности распознавания" используется для инициализации API KeywordRecognizer в Unity
  2. Речевые команды — регистрирует слова и преобразует их в действия ввода, которые могут быть получены проектом. При необходимости их также можно прикрепить к действиям клавиатуры.

Важно!

В настоящее время система поддерживает речь только при работе на платформах Windows 10, например HoloLens и Windows 10 Desktop, и будет расширена для других систем по мере их добавления в MRTK в будущем (даты пока нет).

Экраны профиля конфигурации

Конфигурация сопоставления контроллера

Одним из основных экранов конфигурации для Смешанная реальность Toolkit является возможность настройки и сопоставления различных типов контроллеров, которые могут использоваться проектом.

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

Сопоставление контроллера

MRTK предоставляет конфигурацию по умолчанию для следующих контроллеров и систем:

  • Мышь (включая поддержку трехмерной пространственной мыши)
  • Сенсорный экран
  • Контроллеры Xbox
  • контроллеры Windows Mixed Reality
  • Жесты HoloLens
  • Контроллеры палочки HTC Vive
  • Контроллеры Oculus Touch
  • Контроллер Oculus Remote
  • Универсальные устройства OpenVR (только опытные пользователи)

Щелкнув изображение для любой из готовых систем контроллеров, вы можете настроить одно действие ввода для всех соответствующих входных данных, например, см. экран конфигурации контроллера Oculus Touch ниже:

Экран конфигурации контроллера

Существует также расширенный экран для настройки других контроллеров ввода OpenVR или Unity, которые не определены выше.


Параметры визуализации контроллера

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

Его можно настроить в "глобальном" (все экземпляры контроллера для конкретной руки) или в отдельном типе контроллера или руке.

MRTK также поддерживает собственные модели контроллеров sdk для Windows Mixed Reality и OpenVR. Они загружаются в качестве объектов GameObject в сцене и размещаются с помощью отслеживания контроллера платформы.

Если представление контроллера в сцене должно быть смещением от физического положения контроллера, просто установите это смещение по отношению к заготовке модели контроллера (например, задав позицию преобразования заготовки контроллера с позицией смещения).

Профиль визуализации

Служебные программы редактора

Следующие служебные программы работают только в редакторе и полезны для повышения производительности разработки.

Служебные программы настройки редактора MRTK

Инспекторы служб

Инспекторы служб — это функция только для редактора, которая создает объекты в сцене, представляющие активные службы. При выборе этих объектов отображаются инспекторы, которые предлагают ссылки на документацию, контроль над визуализациями редактора и анализ состояния службы.

Инспекторы служб

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

Отрисовщик буфера глубины

Совместное использование буфера глубины с некоторыми платформами смешанной реальности может улучшить стабилизацию голограмм. Например, платформа Windows Mixed Reality может изменять отрисованную сцену для каждого пикселя, учитывая тонкие движения головы в течение времени, необходимого для отрисовки кадра. Однако эти методы требуют буферов глубины с точными данными, чтобы знать, где и как далеко геометрия находится от пользователя.

Чтобы сцена отрисовывала все необходимые данные в буфер глубины, разработчики могут включить функцию отрисовки буфера глубины в разделе Параметры редактора в профиле конфигурации. Это приведет к использованию текущего буфера глубины и отрисовке его в виде цвета в представлении сцены путем применения эффекта DepthBufferRendererпостобработки к main камере.

Служебная программа отрисовки буфера глубины. Синий цилиндр в сцене имеет материал с отключенным ZWrite, поэтому данные о глубине не записываются

Изменение профилей во время выполнения

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

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

Предварительный переключатель профиля инициализации MRTK

Это можно сделать, подключив MonoBehaviour (пример ниже), который выполняется до инициализации MRTK (т. е. Awake()). Обратите внимание, что скрипт (т. е. вызов SetProfileBeforeInitialization) должен быть выполнен раньше, чем MixedRealityToolkit скрипт, что можно сделать, задав параметры порядка выполнения скрипта.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

Вместо "profileToUse" можно иметь произвольный набор профилей, которые применяются к определенным платформам (например, один для HoloLens 1, один для виртуальной реальности, один для HoloLens 2 и т. д.). Чтобы определить, какой профиль следует загрузить, можно использовать различные другие индикаторы (например https://docs.unity3d.com/ScriptReference/SystemInfo.html, или нет, или нет, является ли камера непрозрачной или прозрачной).

Активный переключатель профиля

Это можно сделать, присвоив свойству MixedRealityToolkit.Instance.ActiveProfile новый профиль, заменив активный профиль.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Обратите внимание, что при настройке ActiveProfile во время выполнения удаление запущенных в данный момент служб будет происходить после последнего LateUpdate() всех служб, а создание экземпляров и инициализация служб, связанных с новым профилем, произойдет до первого Обновления() всех служб.

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

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

См. также раздел