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

Завершено

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

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

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

    Screenshot of menu commands for adding the cube.

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

  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.

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

    Примечание.

    Высота куба имеет значение 1,6, чтобы соответствовать высоте Камера Offset on MRTK XR Rig, размещая его примерно на уровне глаз.

  4. В инспекторе измените значения Tranform/Rotation (Преобразование/Поворот) куба следующим образом:

    X = 9, Y = 14, Z = 0

    Совет

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

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

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

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

    Screenshot of adding the Object Manipulator script.

    Сценарий ObjectManipulator делает объект перемещаемым, масштабируемым и вращаемым, используя одну или две руки. При добавлении сценария 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. В иерархии щелкните куб правой кнопкой мыши и выберите пункт Duplicate (Дублировать). Появится дубликат куба с именем Cube (1).

  2. Щелкните правой кнопкой мыши исходный куб, выберите команду Rename (Переименовать) и назовите его Near Cube.

  3. Щелкните правой кнопкой мыши скопированный куб, выберите команду Rename (Переименовать) и назовите его Far Cube.

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

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

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

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

    Теперь камера должна показывать Near Cube слева, а 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. Переместите смоделированную руку ближе к кубу Near Cube, пока она не коснется его стороны или низа.

    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. Нажмите левую кнопку мыши (это делает руку близкой, принимая на себя то, что мы называем жестом сцепление), а затем перетащите куб по сцене.

Имитация входных данных в редакторе Unity

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

Изменение представления в сцене

  • Для перемещения камеры вперед/влево/назад/вправо используйте клавиши W/A/S/D.
  • Для перемещения камеры по вертикали, нажмите клавиши Q и E.
  • Чтобы повернуть камеру, нажмите правую кнопку мыши и перетащите.

Имитация ввода рук

  • Чтобы включить имитацию правой руки, нажмите и удерживайте клавишу ПРОБЕЛ. Чтобы убрать руку, отпустите клавишу ПРОБЕЛ.
  • Чтобы включить имитацию левой руки, нажмите и удерживайте клавишу левый SHIFT. Чтобы убрать руку, отпустите клавишу.
  • Для перемещения руки по сцене двигайте мышью.
  • Чтобы переместить руку вперед или назад, вращайте колесо прокрутки мыши.
  • Чтобы имитировать жест сцепление, нажмите левую кнопку мыши.
  • Чтобы повернуть руку, нажмите и удерживайте клавиши ПРОБЕЛ и CTRL (правая рука) или клавиши левый SHIFT и CTRL (левая рука), а затем двигайте мышью.

Постоянный показ рук.

  • Чтобы включить руку и оставить ее на экране без необходимости удерживать клавишу, нажмите клавишу T (левая рука) или Y (правая рука). Чтобы убрать руки, нажмите эти клавиши еще раз.

Сборка приложения в Unity

  1. В строке меню выберите File>Build Settings... (Файл > Параметры сборки…).

  2. В окне "Сборка Параметры" нажмите кнопку "Добавить открытые сцены", чтобы добавить текущую сцену в список "Сцены в сборке".

  3. Нажмите кнопку "Сборка".

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

    Screenshot of the location to save your build.

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

(Необязательно) Сборка и развертывание приложения

Примечание.

Выполнять сборку и тестирование на HoloLens 2 не обязательно. Вместо этого вы можете использовать для тестирования HoloLens 2 Emulator, если у вас нет устройства. Устройства можно приобрести на веб-сайте HoloLens.com.

  1. После завершения процесса сборки откроется проводник Windows с папкой сборки. Перейдите в папку и дважды щелкните файл решения, чтобы открыть его в Visual Studio.

    Screenshot of File Explorer with the builds folder displayed.

  2. Настройте Visual Studio для устройства HoloLens, выбрав конфигурацию Master (Ведущий) или Release (Выпуск) и архитектуру ARM64.

    Screenshot of Visual Studio window with the build options for the project.

    Совет

    Если выполняется развертывание в HoloLens (первое поколение), выберите архитектуру x86.

    Примечание.

    Если в Visual Studio в качестве целевого объекта нельзя выбрать "устройство", может потребоваться изменить загружаемый проект для решения с IL2CPP на UWP. Для этого в Обозревателе решений щелкните правой кнопкой мыши [имя проекта](Универсальная платформы Windows) и выберите пункт Назначить запускаемым проектом.

    Важно!

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

  3. Выберите раскрывающийся список целевого объекта развертывания и выполните одно из следующих действий:

    • Если сборка и развертывание выполняются по Wi-Fi, выберите Удаленный компьютер.

    Screenshot of Visual Studio window with Remote Machine as the target.

    • Если сборка и развертывание выполняются через USB, выберите Устройство.

    Screenshot of Visual Studio window with Device as the target.

  4. Настройте удаленное подключение: в строке меню выберите Проект > Свойства.

  5. В окне проекта Страницы свойств выберите Свойства конфигурации > Отладка.

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

    Важно!

    Всегда рекомендуется вводить IP-адрес вручную и не пользоваться функцией автоматического обнаружения. Чтобы найти IP-адрес, на устройстве HoloLens перейдите к Параметры Обновления > и безопасности > для разработчиков. IP-адрес указан в нижней части окна в разделе Ethernet.

  7. В поле Имя компьютера введите IP-адрес устройства.

    Remote connection dialog in Visual Studio

  8. Задайте для параметра Режим проверки подлинности значение Универсальный (незашифрованный протокол).

  9. Подключите HoloLens к своему компьютеру и выполните в Visual Studio одно из следующих действий.

    • Чтобы выполнить развертывание на HoloLens и автоматически запустить приложение без подключенного отладчика Visual Studio, выберите Отладка>Запустить без отладки.
    • Чтобы выполнить развертывание на HoloLens без автоматического запуска приложения, выберите Сборка>Развернуть решение.

    Screenshot of Visual Studio with the Start Without Debugging menu item displayed.

Связывание устройства

При первом развертывании приложения с компьютера на HoloLens будет предложено ввести ПИН-код. Чтобы создать ПИН-код, выполните следующие действия.

  1. В HoloLens перейдите к Параметры Обновления > и безопасности > для разработчиков.
  2. Выберите Создать пару. В HoloLens отобразится ПИН-код.
  3. Введите ПИН-код в диалоговом окне в Visual Studio.
  4. После завершения связывания в HoloLens нажмите Готово.

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

Запуск приложения в HoloLens

  1. После завершения сборки приложения в меню Пуск HoloLens найдите плитку своего приложения и нажмите ее.

  2. После запуска приложения протяните руку к ближнему кубу, а затем захватите его и перетащите.

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

    Совет

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

Советы

  • Кроме того, можно выполнить развертывание в эмуляторе HoloLens или создать пакет приложения для загрузки неопубликованных приложений.

  • Вы можете заметить профилировщик диагностики в приложении. Вы можете включить или выключить его с помощью голосовой команды Переключить диагностику. Мы рекомендуем сохранить профилировщик видимым большую часть времени во время разработки, чтобы понять, как изменения в приложении могут повлиять на производительность. Например, можно отслеживать работу приложения, чтобы обеспечить частоту кадров не менее 60 кадров/с.