Упражнение. Добавление взаимодействия руки с ObjectManipulator

Завершено

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

Добавление и настройка первого куба

  1. В строке меню выберите GameObject>3D Object>Cube (Игровой объект > 3D-объект > Куб).

    Screenshot of menu commands for adding the cube.

    Размер куба по умолчанию составляет один кубический метр, который слишком велик для наших целей. Мы масштабируем размер до 20 кубических сантиметров.

  2. Выберите куб, а затем в инспекторе измените значения масштабирования куба в разделе "Преобразование" следующим образом:

    X = 0.2, Y = 0.2, Z = 0.2

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

  3. В инспекторе измените значения позиции куба в разделе "Преобразование" следующим образом:

    X = -0,2, Y = 1.6, Z = 0,5

    Screenshot of the cube's transform component after updates.

    Мы хотим видеть три стороны Куба, поэтому мы изменим параметры поворота.

  4. В инспекторе измените значения поворота куба в значениях раздела преобразования следующим образом:

    X = 9, Y = 14, Z = 0

    Совет

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

Добавление сценариев к кубу

Чтобы объект можно было "схватить" и манипулировать им движениями рук, к нему необходимо присоединить три компонента.

  • Компонент Коллидера (вам не нужно ничего делать здесь; Куб Unity уже подключен к Box Collider по умолчанию)
  • Компонент Манипулятора объектов (скрипт)
  • Компонент Диспетчера ограничений (скрипт)
  1. Если куб по-прежнему выбран, в окне инспектора нажмите кнопку "Добавить компонент", а затем найдите и выберите скрипт манипулятора объектов.

    Screenshot of adding the Object Manipulator script.

    Скрипт манипулятора объектов делает объект перемещаемым, масштабируемым и поворотным с помощью одной или двух рук. При добавлении сценария Object Manipulator автоматически добавляется сценарий Constraint Manager (Диспетчер ограничений), так как Object Manipulator зависит от него.

    Screenshot of the Constraint Manager script added to the cube.

Обновление материала куба

В целях повышения производительности рекомендуется использовать материалы MRTK вместо материалов Unity по умолчанию.

  1. При выборе куба найдите и разверните раздел "Материалы " в компоненте Отрисовщика сетки.
  2. Замените материал по умолчанию материалом MRTK_Standard_White, расположенным в разделе "Стандартные>ресурсы MRTK". Это можно сделать, перетаскивая материал непосредственно в поле "Элемент " в разделе "Материалы "

Добавление второго куба

  1. В иерархии щелкните правой кнопкой мыши куб и выберите "Дублировать". Повторяющийся куб отображается с именем Куба (1).

  2. Щелкните правой кнопкой мыши исходный куб, выберите "Переименовать" и назовите куб рядом с кубом.

  3. Щелкните правой кнопкой мыши повторяющийся куб, выберите "Переименовать" и назовите куб Far Cube.

    В данный момент сцена выглядит так, как будто на ней только один куб. Это происходит потому, что оба куба находятся в точности на одном месте. Давайте изменим положение и поворот куба Far Cube.

  4. С выбранным кубом Far Cube измените его значения в компоненте Transform (Преобразование) следующим образом:

    Позиция: X = 0,6, Y = 1.6, Z = 1.1

    Поворот: X = 27, Y = 0, Z = 0

    Теперь камера должна увидеть близкий куб слева и Far Cube немного дальше справа. Чтобы подтвердить это, в иерархии выберите main Камера (в разделе MRTK XR Rig> Камера Offset), а затем просмотрите окно Main Камера в окне сцены.

    Screenshot of the Main Camera view in the Scene window.

    Совет

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

Захват и перемещение кубов в режиме воспроизведения

  1. Нажмите кнопку "Воспроизвести ". Когда начнется воспроизведение проекта, представление переключится в окно игры.

    Screenshot of the Game window after entering Play mode.

    Примечание.

    Перед воспроизведением убедитесь, что в project Параметры> MRTK3 установлен допустимый набор профилей.

  2. Нажмите кнопку с тремя точками над правым верхним углом окна игры и нажмите кнопку "Развернуть".

    Screenshot of Maximize command for the Game window.

  3. Нажмите и удерживайте пробел, чтобы имитированная правая рука отображалась в представлении.

  4. Переместите имитированную руку ближе к кубу "Около" до тех пор, пока она не будет касаться куба на стороне или внизу.

    Screenshot of the simulated right hand touching the Near Cube.

  5. Нажмите левую кнопку мыши (это делает руку "захватить" куб), а затем перетащите куб вокруг сцены.

    Screenshot of Move the cube.

    Чтобы взять и переместить куб Far Cube, мы будем использовать дальний указатель, прикрепленный к моделируемой руке.

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

    Screenshot of simulated hand's far pointer.

  7. Переместите руку ближе к кубу Far Cube, пока не увидите кончик указателя на кубе. Может потребоваться переместить руку в круговое движение несколько раз, чтобы сделать кончик указателя на кубе.

    Screenshot of the far pointer touching the cube.

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