Мы продолжаем цикл статей по Windows Mixed Reality и разрабатываем с нуля приложение со смешанной реальностью на Unity в формате lab work (лабораторной работы). Вы сможете сами, параллельно с публикацией статей, создать такое приложение. В этой части рассмотрим поддержку контроллера движения и добавим префаб динамика в виртуальную гостиную.
Всё руководство будет состоять из 5 частей. Оно будет пополняться каждую неделю. Ниже вы сможете перейти к нужной вам части.
Часть 1: Экспорт приложения UWP для Windows Mixed Reality из Unity;
Часть 2: Настройка среды (VR);
Часть 3: Контроллеры;
Часть 4: Пространственный звук (Coming soon);
Часть 5: HoloLens и графика (Coming soon).
Контроллеры
На этом этапе практического занятия мы создадим префаб динамика и добавим его в виртуальную гостиную. Затем мы добавим в нашу сцену поддержку контроллера движения, чтобы пользователь мог перемещать и поворачивать динамик.
Добавление динамика в комнату
- Перейдите в папку Models (Модели) на панели Project (Проект) и перетащите модель Speaker3 на панель Hierarchy (Иерархия) так, чтобы эта модель стала корневым объектом, а не дочерним элементом одного из объектов сцены.
- Переименуйте динамик, щелкнув его правой кнопкой и выбрав команду Rename (Переименовать). Назовите его Speaker.
- Выберите на сцене объект 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. Это события контроллера движения, которые будут использоваться для управления нашим динамиком.
Управление динамиком
Чтобы пользователь мог перемещать и вращать динамик, к нему следует добавить физические свойства — тогда мы сможем определять, что взгляд направлен на динамик.
- Выберите объект Speaker на панели Hierarchy (Иерархия), чтобы изменить его свойства и поведение на панели Inspector (Инспектор).
- На панели Inspector (Инспектор) щелкните Add Component (Добавить компонент), затем найдите и выберите компонент Box Collider.
- В добавленном компоненте 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
Автор: dimonline