company_banner

Разработка смешанной реальности: а вы ставили динамик в виртуальной гостиной?

  • Tutorial
Мы продолжаем цикл статей по Windows Mixed Reality и разрабатываем с нуля приложение со смешанной реальностью на Unity в формате lab work (лабораторной работы). Вы сможете сами, параллельно с публикацией статей, создать такое приложение. В этой части рассмотрим поддержку контроллера движения и добавим префаб динамика в виртуальную гостиную.



Всё руководство будет состоять из 5 частей. Оно будет пополняться каждую неделю. Ниже вы сможете перейти к нужной вам части.

Часть 1: Экспорт приложения UWP для Windows Mixed Reality из Unity;
Часть 2: Настройка среды (VR);
Часть 3: Контроллеры;
Часть 4: Пространственный звук;
Часть 5: HoloLens и графика.

Контроллеры


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

Добавление динамика в комнату


  1. Перейдите в папку Models (Модели) на панели Project (Проект) и перетащите модель Speaker3 на панель Hierarchy (Иерархия) так, чтобы эта модель стала корневым объектом, а не дочерним элементом одного из объектов сцены.
  2. Переименуйте динамик, щелкнув его правой кнопкой и выбрав команду Rename (Переименовать). Назовите его Speaker.
  3. Выберите на сцене объект Speaker, в затем на панели Inspector (Инспектор) измените следующие свойства преобразования:

  • для параметра Scale (Масштаб) установите значения (0,02; 0,02; 0,02);
  • для параметра Position (Положение) установите значения (2,68; 0,14; 2).



Добавление поддержки контроллера


Ранее, когда мы применяли к нашей сцене параметры Mixed Reality, мы добавили поддержку контроллера движения.

Давайте вспомним, как эти параметры влияют на работу контроллеров движения в нашей сцене.

  • У добавленного нами элемента MixedRealityCameraParent есть дочерний объект с именем MotionControllers, а в нем есть сценарий MotionControllerVisualizer. Этот сценарий отслеживает и визуализирует модель контроллера (изменяет его положение, поворачивает его, а также обрабатывает события ввода).
  • Добавленный нами объект InputManager ожидает поступления событий ввода от различных источников. Среди его дочерних объектов есть объекты для мыши (Mouse), сенсорного ввода (Touch), жестов (GesturesInput) и Xbox. В объекте GestureInput есть элемент InteractionInputSource, который ожидает поступления событий контроллера движения от InteractionManager. Это события контроллера движения, которые будут использоваться для управления нашим динамиком.



Управление динамиком


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

  1. Выберите объект Speaker на панели Hierarchy (Иерархия), чтобы изменить его свойства и поведение на панели Inspector (Инспектор).
  2. На панели Inspector (Инспектор) щелкните Add Component (Добавить компонент), затем найдите и выберите компонент Box Collider.
  3. В добавленном компоненте Box Collider для свойства Size (Размер) установите значения (21, 20, 53), чтобы он полностью окружал динамик.

Далее добавим поведение Bounding Box (Ограничивающий прямоугольник) из набора средств Mixed Reality:

1. На панели Project (Проект) перейдите в папку Holotoolkit → UX → Scripts → BoundingBoxes (Holotoolkit → UX → Сценарии → Ограничивающие прямоугольники), выберите сценарий BoundingBoxRig.cs и перетащите этот сценарий на панель Inspector (Инспектор), чтобы добавить его к компонентам Speaker.

2. Так как нам не нужно изменять масштаб динамиков, для параметра Scale Rate (Коэффициент масштабирования) можно установить значение 0.

Компонент BoundingBoxRig добавляет к игровому объекту (в данном случае к динамику) элемент «гизмо». С помощью гизмо пользователь может вращать, перемещать и масштабировать объект, используя контроллеры движения или жесты HoloLens (касания и манипуляции).

3. Сохраняя выбранным объект Speaker, щелкните Add Component (Добавить компонент) и в окне поиска введите Two Hand Manipulatable (Манипуляции двумя руками), затем щелкните сценарий, выделенный в результатах поиска.

4. Для параметра Manipulation Mode (Режим манипуляции) этого компонента установите значение Rotate (Вращение), чтобы предотвратить изменение масштаба динамиков.

Этот сценарий позволяет управлять объектами двумя руками — с помощью контроллеров движений либо с помощью жестов нажатия и удерживания в HoloLens.

5. На панели Project (Проект) найдите префаб BoundingBoxBasic в папке Assets → HoloToolkit → UX → Prefabs → BoundingBoxes (Ресурсы → HoloToolkit → UX → Префабы → Ограничивающие прямоугольники) и перетащите его на свойство Bounding Box Prefab (Префаб ограничивающего прямоугольника) сценария Bounding Box Rig в объекте Speaker.

6. Также перетащите префаб BoundingBoxBasic на свойство Bounding Box Prefab компонента Two Hand Manipulateable.

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



7. На панели Project (Проект) найдите префаб AppBarCustom в папке Assets -> Prefabs (Ресурсы -> Префабы) и перетащите его на свойство App Bar Prefab (Префаб панели приложения) компонента Bounding Box Rig в динамике.

Мы сделали много изменений. Убедимся, что панель Inspector (Инспектор) игрового объекта Speaker выглядит следующим образом:



Запуск приложения и перемещение динамика


Сохраните сцену и запустите ее, чтобы проверить внесенные изменения.

Попробуйте выполнить следующие действия:

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

Оригинал

Авторы: Eric Ahlstrom, cbarkerms, Madison Hight

Microsoft

293,18

Microsoft — мировой лидер в области ПО и ИТ-услуг

Поделиться публикацией
Комментарии 0

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое