4. Настройка интерактивной сцены
При работе с предыдущим руководством мы добавили элементы ARSession, Pawn и Game Mode, чтобы настроить наше шахматное приложение для смешанной реальности. Этот раздел посвящен использованию подключаемого модуля средств UX из набора средств для смешанной реальности, который имеет открытый исходный код и содержит средства для придания сцене интерактивности. Когда вы завершите работу с этим разделом, шахматные фигуры будут реагировать на действия пользователя.
Задачи
- Установка подключаемого модуля Mixed Reality UX Tools
- Добавление субъектов взаимодействия с руками.
- Создание и добавление манипуляторов для физического взаимодействия с объектами в сцене.
- Применение имитации ввода для проверки проекта.
Скачивание подключаемого модуля Mixed Reality UX Tools
Прежде чем приступить к работе с пользовательским вводом, необходимо добавить подключаемый модуль Mixed Reality UX Tools в проект. Чтобы узнать больше о средствах UX Tools, ознакомьтесь с проектом на GitHub.
- Откройте средство запуска Epic Games. Перейдите в Unreal Engine Marketplace и выполните поиск по запросу Mixed Reality UX Tools. Установите подключаемый модуль в подсистему.
- Вернувшись в редактор Unreal, перейдите в раздел Project Settings (Параметры проекта) >Plugins (Подключаемые модули) и выполните поиск по запросу "Mixed Reality UX Tools". Проверьте, что подключаемый модуль включен, и перезапустите редактор, если появится соответствующий запрос.
- Подключаемый модуль UX Tools содержит папку Content с вложенными папками для компонентов, в том числе кнопок, симуляции XR и указателей, а также папку с классами C++ с дополнительным кодом.
Примечание
Если в обозревателе контента (Content Browser) не виден раздел UXTools Content (Контент UXTools), выберите View Options > Show Engine Content (Параметры просмотра > Показывать содержимое движка) и *View Options > Show Plugin Content (Параметры просмотра > Показывать содержимое подключаемых модулей).
Дополнительную документацию по подключаемым модулям можно найти в репозитории Mixed Reality UX Tools на GitHub.
Теперь, когда подключаемый модуль установлен, можно приступить к работе с содержащимися в нем средствами. Начнем с субъектов взаимодействия с рукой.
Порождение субъектов взаимодействия с рукой
Взаимодействие элементов пользовательского интерфейса с руками пользователя реализуется с помощью субъектов взаимодействия с рукой, которые создают и перемещают указатели, а также визуальные элементы для ближних и дальних взаимодействий.
- Для ближних взаимодействий пользователь сжимает элементы между большим и указательным пальцами или касается элементов кончиком пальца.
- Для дальних взаимодействий пользователь наводит на элемент луч из виртуальной руки, а затем соединяет большой и указательный пальцы.
Когда мы добавим субъект взаимодействия с рукой к элементу MRPawn, произойдет следующее:
- На кончиках указательных пальцев при взаимодействии с объектом Pawn будет отображаться курсор.
- Появятся события жестового ручного ввода, которыми можно будет манипулировать через объект Pawn.
- Появятся события ввода с дальним взаимодействием при помощи лучей телекинеза, исходящих из запястий виртуальных рук.
Прежде чем продолжать, изучите документацию по взаимодействию с помощью рук.
Когда будете готовы, откройте схему MRPawn и перейдите к разделу Event Graph (Граф событий).
Перетащите закрепление выполнения из узла Event BeginPlay и отпустите его, чтобы создать еще один узел.
- Выберите Spawn Actor from Class (Породить субъект из класса), щелкните стрелку раскрывающегося списка справа от закрепления Class (Класс) и найдите узел Uxt Hand Interaction Actor (Субъект взаимодействия с рукой Uxt).
Создайте второй узел Uxt Hand Interaction Actor (Субъект взаимодействия с рукой), но на этот раз задайте для параметра Hand (Рука) значение Right (Правая). В начале события для каждой руки будет порожден субъект взаимодействия с рукой Uxt.
Теперь поле Event Graph (Граф событий) должно выглядеть так, как показано на приведенном ниже снимке экрана.
Для обоих субъектов взаимодействия с рукой Uxt необходимо задать владельцев и координаты начального преобразования. В этом случае начальное преобразование не играет роли, так как с помощью UX Tools субъекты взаимодействия с рукой будут перемещены на виртуальные руки, как только последние станут видимыми. Но функции SpawnActor
требуется входной параметр Transform, чтобы не произошла ошибка компиляции, поэтому зададим значения по умолчанию.
Перетащите закрепление одного из элементов Spawn Transform (Порождение преобразования) и отпустите его, чтобы создать еще один узел.
- Найдите узел Make Transform (Создание преобразования) и перетащите его закрепление Return Value (Возвращаемое значение) на узел Spawn Transform (Порождение преобразования) другой руки, чтобы соединить оба узла SpawnActor.
Щелкните стрелку вниз в нижней части обоих узлов SpawnActor, чтобы открыть закрепление Owner (Владелец).
- Перетащите закрепление одного из элементов Owner (Владелец) и отпустите его, чтобы разместить новый узел.
- Выполните поиск по слову self и выберите переменную Get a reference to self (Получить ссылку на себя).
- Создайте связь между узлом ссылки на объект Self и закреплением Owner (Владелец) другого субъекта взаимодействия с рукой.
Наконец, установите флажок Show Near Cursor on Grab Targets (Показывать курсор при приближению к целям захвата) для обоих субъектов взаимодействия с рукой. Курсор должен отображаться на цели захвата при приближении указательного пальца, чтобы вы могли видеть, где находится ваш палец относительно цели.
- Скомпилируйте, сохраните схему и вернитесь к главному окну.
Соединения должны соответствовать приведенному ниже снимку экрана, но вы можете изменить расположение узлов, чтобы сделать схему более удобочитаемой.
Дополнительные сведения о субъектах взаимодействия с рукой см. в документации по UX Tools.
Теперь с помощью виртуальных рук в проекте можно выбирать объекты, но пока еще нельзя манипулировать ими. Последнее, что необходимо сделать, прежде чем тестировать приложение — добавить к субъектам в сцене компоненты Manipulator, или манипуляторы.
Добавление манипуляторов
Манипулятор (Manipulator) — это компонент, который реагирует на жестовый ручной ввод. Его можно захватывать, вращать и перемещать в пространстве. Если применить преобразование манипулятора к преобразованию субъекта, это позволит непосредственно манипулировать субъектом.
- На панели Components (Компоненты) откройте схему Board, нажмите кнопку Add Component (Добавить компонент) и найдите узел Uxt Generic Manipulator (Универсальный манипулятор Uxt).
- На панели Details (Сведения) разверните раздел Generic Manipulator (Универсальный манипулятор). Здесь можно настроить манипулирование одной или двумя руками, режим вращения и сглаживание. Вы можете выбрать здесь любой удобный режим, а затем скомпилировать и сохранить схему Board.
- Повторите описанные выше действия для субъекта WhiteKing.
Дополнительные сведения о компонентах Manipulator, которые входят в состав подключаемого модуля Mixed Reality UX Tools, см. в документации.
Тестирование сцены
Теперь все готово к тестированию приложения с новыми виртуальными руками и пользовательским вводом. Нажмите кнопку Play (Воспроизвести) в главном окне. Отобразятся две сетчатые руки и два луча телекинеза, выходящие из ладоней этих рук. Управлять этими руками и соответствующими взаимодействиями вы можете так:
- Удерживайте нажатой левую клавишу ALT для управления левой рукой и левую клавишу SHIFT для управления правой рукой.
- Перемещайте мышь для перемещения руки и прокручивайте колесико мыши для перемещения руки вперед и назад.
- Нажмите левую кнопку мыши, чтобы сжать объект между указательным и большим пальцами, и среднюю кнопку, чтобы коснуться объекта.
Примечание
Имитация ввода может не работать, если к вашему компьютеру подключено несколько гарнитур. Если у вас возникли проблемы, попробуйте отключить другие гарнитуры.
Попробуйте теперь с помощью этих виртуальных рук поднять белого короля с доски, переместить его и поставить на другое место. Потренируйтесь в выполнении ближнего и дальнего взаимодействия. Вы заметите, что при приближении рук к доске и (или) к королю на расстоянии прямого захвата луч телекинеза заменяется курсором в виде пальца на кончике указательного пальца.
Дополнительные сведения о функции имитации рук, которая входит в состав подключаемого модуль средств UX из MRTK, см. в документации.
Теперь, когда ваши виртуальные руки научились взаимодействовать с объектами, можно переходить к следующему разделу, в котором мы добавим пользовательские интерфейсы и события.
Следующий раздел: 5. Добавление кнопки и сброс расположений фигур