4. Настройка интерактивной сцены4. Making your scene interactive

При работе с предыдущим руководством мы добавили элементы ARSession, Pawn и Game Mode, чтобы настроить наше шахматное приложение для смешанной реальности.In the previous tutorial, you added an ARSession, Pawn, and Game Mode to complete the mixed reality setup for the chess app. Этот раздел посвящен использованию подключаемого модуля средств UX из набора средств для смешанной реальности, который имеет открытый исходный код и содержит средства для придания сцене интерактивности.This section focuses on using the open source Mixed Reality Toolkit UX Tools plugin, which provides tools to make the scene interactive. Когда вы завершите работу с этим разделом, шахматные фигуры будут реагировать на действия пользователя.By the end of this section, your chess pieces will be moving by user input.

ЗадачиObjectives

  • Установка подключаемого модуля Mixed Reality UX Tools из GitHubInstalling the Mixed Reality UX Tools plugin from GitHub
  • Добавление субъектов взаимодействия с руками.Adding Hand Interaction Actors to your fingertips
  • Создание и добавление манипуляторов для физического взаимодействия с объектами в сцене.Creating and adding Manipulators to objects in the scene
  • Применение имитации ввода для проверки проекта.Using input simulation to validate the project

Скачивание подключаемого модуля Mixed Reality UX ToolsDownloading the Mixed Reality UX Tools plugin

Прежде чем приступить к работе с пользовательским вводом, необходимо добавить подключаемый модуль в проект.Before you start working with user input, you'll need to add the plugin to the project.

  1. На странице выпусков Mixed Reality UX Tools на GitHub перейдите к выпуску средств пользовательского интерфейса для Unreal версии 0.10.0 и скачайте файл UXTools.0.10.0.zip.On the Mixed Reality UX Tools releases page on GitHub, navigate to the UX Tools for Unreal v0.10.0 release and download UXTools.0.10.0.zip. Распакуйте файл.Unzip the file.

  2. В корневой папке проекта создайте папку с именем Plugins.Create a new folder called Plugins in the root folder of the project. Скопируйте распакованный подключаемый модуль UXTools в эту папку и перезапустите редактор Unreal.Copy the unzipped UXTools plugin into this folder and restart the Unreal editor.

Создание папки для подключаемых модулей в проекте

  1. Подключаемый модуль UX Tools содержит папку Content с вложенными папками для компонентов, в том числе кнопок, функции имитации ввода и указателей, а также папку с классами C++ с дополнительным кодом.The UXTools plugin has a Content folder with subfolders for components, including Buttons, Input Simulation, and Pointers, and a C++ Classes folder with additional code.

Примечание

Если в обозревателе контента (Content Browser) не виден раздел UXTools Content (Контент UXTools), выберите View Options > Show Plugin Content (Параметры просмотра > Показывать содержимое подключаемых модулей).If you don’t see the UXTools Content section in the Content Browser, click View Options > Show Plugin Content.

Отображение содержимого подключаемого модуля

Дополнительную документацию по подключаемым модулям можно найти в репозитории Mixed Reality UX Tools на GitHub.Additional plugin documentation can be found on the Mixed Reality UX Tools GitHub repository.

Теперь, когда подключаемый модуль установлен, можно приступить к работе с содержащимися в нем средствами. Начнем с субъектов взаимодействия с рукой.With the plugin installed, you're ready to start using the tools it has to offer, starting with hand interaction actors.

Порождение субъектов взаимодействия с рукойSpawning Hand Interaction Actors

Взаимодействие элементов пользовательского интерфейса с руками пользователя реализуется с помощью субъектов взаимодействия с рукой, которые создают и перемещают указатели, а также визуальные элементы для ближних и дальних взаимодействий.Hand interaction with UX elements is done with Hand Interaction Actors, which create and drive the pointers and visuals for near and far interactions.

  • Для ближних взаимодействий пользователь сжимает элементы между большим и указательным пальцами или касается элементов кончиком пальца.Near interactions - pinching elements between index finger and thumb or by poking them with a fingertip.
  • Для дальних взаимодействий пользователь наводит на элемент луч из виртуальной руки, а затем соединяет большой и указательный пальцы.Far interactions - pointing a ray from the virtual hand at an element and pressing index and thumb together.

Когда мы добавим субъект взаимодействия с рукой к элементу MRPawn, произойдет следующее:In our case, adding a Hand Interaction Actor to MRPawn will:

  • На кончиках указательных пальцев при взаимодействии с объектом Pawn будет отображаться курсор.Add a cursor to the tips of the Pawn’s index fingers.
  • Появятся события жестового ручного ввода, которыми можно будет манипулировать через объект Pawn.Provide articulated hand input events that can be manipulated through the Pawn.
  • Появятся события ввода с дальним взаимодействием при помощи лучей телекинеза, исходящих из запястий виртуальных рук.Allow far interaction input events through hand rays extending from the palms of the virtual hands.

Прежде чем продолжать, изучите документацию по взаимодействию с помощью рук.We recommend reading through the documentation on hand interactions before continuing.

Когда будете готовы, откройте схему MRPawn и перейдите к разделу Event Graph (Граф событий).Once you're ready, open the MRPawn Blueprint and go to the Event Graph.

  1. Перетащите закрепление выполнения из узла Event BeginPlay и отпустите его, чтобы создать еще один узел.Drag and release the execution pin from Event BeginPlay to place a new node.

    • Выберите Spawn Actor from Class (Породить субъект из класса), щелкните стрелку раскрывающегося списка справа от закрепления Class (Класс) и найдите узел Uxt Hand Interaction Actor (Субъект взаимодействия с рукой Uxt).Select Spawn Actor from Class, click the dropdown next to the Class pin and search for Uxt Hand Interaction Actor.
  2. Создайте второй узел Uxt Hand Interaction Actor (Субъект взаимодействия с рукой), но на этот раз задайте для параметра Hand (Рука) значение Right (Правая).Spawn a second Uxt Hand Interaction Actor, this time setting the Hand to Right. В начале события для каждой руки будет порожден субъект взаимодействия с рукой Uxt.When the event begins, a Uxt Hand Interaction Actor will be spawned on each hand.

Теперь поле Event Graph (Граф событий) должно выглядеть так, как показано на приведенном ниже снимке экрана.Your Event Graph should match the following screenshot:

Порождение субъектов взаимодействия с рукой

Для обоих субъектов взаимодействия с рукой Uxt необходимо задать владельцев и координаты начального преобразования.Both Uxt Hand Interaction Actors need owners and initial transform locations. В этом случае начальное преобразование не играет роли, так как с помощью UX Tools субъекты взаимодействия с рукой будут перемещены на виртуальные руки, как только последние станут видимыми.The initial transform doesn’t matter in this case because UX Tools will have the Hand Interaction Actors will jump to the virtual hands as soon as they're visible. Но функции SpawnActor требуется входной параметр Transform, чтобы не произошла ошибка компиляции, поэтому зададим значения по умолчанию.However, the SpawnActor function requires a Transform input to avoid a compiler error, so you'll use the default values.

  1. Перетащите закрепление одного из элементов Spawn Transform (Порождение преобразования) и отпустите его, чтобы создать еще один узел.Drag and release the pin off one of the Spawn Transform pins to place a new node.

    • Найдите узел Make Transform (Создание преобразования) и перетащите его закрепление Return Value (Возвращаемое значение) на узел Spawn Transform (Порождение преобразования) другой руки, чтобы соединить оба узла SpawnActor.Search for the Make Transform node, then drag the Return Value to the other hand’s Spawn Transform so that both SpawnActor nodes are connected.
  2. Щелкните стрелку вниз в нижней части обоих узлов SpawnActor, чтобы открыть закрепление Owner (Владелец).Select the down arrow at the bottom of both SpawnActor nodes to reveal the Owner pin.

    • Перетащите закрепление одного из элементов Owner (Владелец) и отпустите его, чтобы разместить новый узел.Drag the pin off one of the Owner pins and release to place a new node.
    • Выполните поиск по слову self и выберите переменную Get a reference to self (Получить ссылку на себя).Search for self and select the Get a reference to self variable.
    • Создайте связь между узлом ссылки на объект Self и закреплением Owner (Владелец) другого субъекта взаимодействия с рукой.Create a link between the Self object reference node and the other Hand Interaction Actor’s Owner pin.
  3. Наконец, установите флажок Show Near Cursor on Grab Targets (Показывать курсор при приближению к целям захвата) для обоих субъектов взаимодействия с рукой.Lastly, check the Show Near Cursor on Grab Targets box for both Hand Interaction Actors. Курсор должен отображаться на цели захвата при приближении указательного пальца, чтобы вы могли видеть, где находится ваш палец относительно цели.A cursor should appear on the grab target as your index finger gets close, so you can see where your finger is relative to the target.

    • Скомпилируйте, сохраните схему и вернитесь к главному окну.Compile, save, and return to the Main window.

Соединения должны соответствовать приведенному ниже снимку экрана, но вы можете изменить расположение узлов, чтобы сделать схему более удобочитаемой.Make sure the connections match the following screenshot, but feel free to drag around nodes to make your Blueprint more readable.

Полная конфигурация субъектов взаимодействия с рукой

Дополнительные сведения о субъектах взаимодействия с рукой см. в документации по UX Tools.You can find more information about Hand Interaction Actors in the UX Tools documentation.

Теперь с помощью виртуальных рук в проекте можно выбирать объекты, но пока еще нельзя манипулировать ими.Now the virtual hands in the project have a way of selecting objects, but they still can't manipulate them. Последнее, что необходимо сделать, прежде чем тестировать приложение — добавить к субъектам в сцене компоненты Manipulator, или манипуляторы.Your last task before testing the app is to add Manipulator components to the actors in the scene.

Добавление манипуляторовAttaching Manipulators

Манипулятор (Manipulator) — это компонент, который реагирует на жестовый ручной ввод. Его можно захватывать, вращать и перемещать в пространстве.A Manipulator is a component that responds to articulated hand input and can be grabbed, rotated, and translated. Если применить преобразование манипулятора к преобразованию субъекта, это позволит непосредственно манипулировать субъектом.Applying the Manipulator’s transform to an Actors transform allows direct Actor manipulation.

  1. На панели Components (Компоненты) откройте схему Board, нажмите кнопку Add Component (Добавить компонент) и найдите узел Uxt Generic Manipulator (Универсальный манипулятор Uxt).Open the Board blueprint, click Add Component and search for Uxt Generic Manipulator in the Components panel.

Добавление универсального манипулятора

  1. На панели Details (Сведения) разверните раздел Generic Manipulator (Универсальный манипулятор).Expand the Generic Manipulator section in the Details panel. Здесь можно настроить манипулирование одной или двумя руками, режим вращения и сглаживание.You can set one-handed or two-handed manipulation, rotation mode, and smoothing from here. Вы можете выбрать здесь любой удобный режим, а затем скомпилировать и сохранить схему Board.Feel free to select whichever modes you wish, then Compile and Save Board.

Настройка режима

  1. Повторите описанные выше действия для субъекта WhiteKing.Repeat the steps above for the WhiteKing Actor.

Дополнительные сведения о компонентах Manipulator, которые входят в состав подключаемого модуля Mixed Reality UX Tools, см. в документации.You can find more information about the Manipulator Components provided in the Mixed Reality UX Tools plugin in the documentation.

Тестирование сценыTesting the scene

ТеперьGood news everyone! все готово к тестированию приложения с новыми виртуальными руками и пользовательским вводом.You're ready to test out the app with its new virtual hands and user input. Нажмите кнопку Play (Воспроизвести) в главном окне. Отобразятся две сетчатые руки и два луча телекинеза, выходящие из ладоней этих рук.Press Play in the Main Window and you'll see two mesh hands with rays extending from each hand’s palm. Управлять этими руками и соответствующими взаимодействиями вы можете так:You can control the hands and their interactions as follows:

  • Удерживайте нажатой левую клавишу ALT для управления левой рукой и левую клавишу SHIFT для управления правой рукой.Hold down the left Alt key to control the left hand and the left Shift key to control the right hand.
  • Перемещайте мышь для перемещения руки и прокручивайте колесико мыши для перемещения руки вперед и назад.Move your mouse to move the hand and scroll with your mouse wheel to move the hand forwards or backwards.
  • Нажмите левую кнопку мыши, чтобы сжать объект между указательным и большим пальцами, и среднюю кнопку, чтобы коснуться объекта.Use the left mouse button to pinch and the middle mouse button to poke.

Примечание

Имитация ввода может не работать, если к вашему компьютеру подключено несколько гарнитур.Input simulation may not work if you have multiple headsets plugged into your PC. Если у вас возникли проблемы, попробуйте отключить другие гарнитуры.If you're having issues, try unplugging your other headsets.

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

Попробуйте теперь с помощью этих виртуальных рук поднять белого короля с доски, переместить его и поставить на другое место.Try using the simulated hands to pick up, move, and set down the white chess king and manipulate the board! Потренируйтесь в выполнении ближнего и дальнего взаимодействия. Вы заметите, что при приближении рук к доске и (или) к королю на расстоянии прямого захвата луч телекинеза заменяется курсором в виде пальца на кончике указательного пальца.Experiment with both near and far interaction - notice that when your hands get close enough to grab the board and king directly, a finger cursor at the tip of the index finger replaces the hand ray.

Дополнительные сведения о функции имитации рук, которая входит в состав подключаемого модуль средств UX из MRTK, см. в документации.You can find more information about the simulated hands feature provided by the MRTK UX Tools plugin in the documentation.

Теперь, когда ваши виртуальные руки научились взаимодействовать с объектами, можно переходить к следующему разделу, в котором мы добавим пользовательские интерфейсы и события.Now that your virtual hands can interact with objects, you're ready to move on to the next tutorial and add user interfaces and events.

Следующий раздел: 5. Добавление кнопки и сброс расположений фрагментовNext Section: 5. Adding a button & resetting piece locations