Як створити свій перший додаток HoloLens за допомогою Unity

HoloLens від Microsoft досить дивовижний. Мене познайомили з цим на моєму стажуванні цього літа, і у мене це вибух.

Програми HoloLens створюються за допомогою DirectX із C ++ або Unity із C #. Я виявив, що загалом швидше та легше запускати програму та запускати її за допомогою Unity.

У цій статті ми налаштуємо Unity для розробки HoloLens, створимо інтерактивний куб і закрутимо емулятор HoloLens, щоб ви могли бачити своє творіння. Ця стаття призначена для початківців користувачів Unity, тому, якщо у вас є досвід роботи з редактором, я рекомендую переглянути навчальні посібники Microsoft.

Передумови

  1. ПК з Windows 10 з оновленням від квітня 2018 року
  2. Емулятор HoloLens, який ви можете завантажити тут
  3. Visual Studio 2017 - Видання спільноти це чудово
  4. Unity - переконайтеся, що під час інсталяції додано компонент сценарію створення сценаріїв Windows
  5. Набір HoloToolKit

Ви можете знайти повний вихідний код тут.

Налаштування

Відкрийте Єдність. Якщо ви вперше використовуєте редактор, вам буде запропоновано ввійти або зареєструватися. Я рекомендую Unity Personal, якщо ви не плануєте монетизувати свій додаток.

Після входу в систему створіть новий проект і введіть ім’я. Вас повинен привітати цей екран після того, як проект завершить початкове налаштування.

Клацніть правою кнопкою миші на папці "Активи" в нижньому лівому куті. Перейдіть до Імпортувати пакет -> Спеціальний пакет і відкрийте файл єдності HoloToolKit, який ми завантажили раніше. З'явиться спливаюче вікно Unity, натисніть кнопку Усі та імпортуйте активи.

Далі ми створимо нашу сцену. Виберіть Файл -> Нова сцена та збережіть його як Основний.

Unity потребує спеціальної конфігурації для побудови проекту для HoloLens. На щастя, HoloToolKit має утилітні сценарії, які роблять цю конфігурацію для нас. На верхній панелі інструментів виберіть Набір інструментів змішаної реальності -> Налаштування -> Застосувати налаштування проекту змішаної реальності. Використовуйте значення за замовчуванням. Після завершення конфігурації застосуйте Налаштування сцени змішаної реальності. Видаліть Directed Light GameObject.

Чудово! Наразі ми імпортували HoloToolKit та налаштували Unity для розробки HoloLens. У наступному розділі я познайомлю вас з основами Unity, а після цього ми отримаємо куб для візуалізації на екрані.

Ознайомлення з редактором

Ось як повинен виглядати редактор на даний момент. Зверніть увагу на три зони, в яких розміщено ящики:

Червона область ліворуч - панель ієрархії сцен. Тут ми можемо додати нові GameObjects і отримати огляд високого рівня поточної програми.GameObject є базовим класом для всіх сутностей Unity. Вони можуть бути фізичним об’єктом, таким як куб, або колекцією сценаріїв, таких як Input Manager у сцені.

Внизу синя область містить меню і консоль активів. Меню активів - це саме те, що звучить - воно містить сценарії C #, матеріали, збірні файли та сітки, необхідні для запуску вашого додатка.

Правильна зелена зона - це меню інспектора. Тут ви можете додавати та змінювати компоненти ваших GameObjects. Компоненти - це те, з чого складається поведінка ваших GameObjects. Вони визначають зовнішній вигляд, інтерактивність та фізику своїх батьків.

Створення куба

Тепер ми отримаємо наш перший GameObject для візуалізації на екрані. На панелі ієрархії сцен клацніть правою кнопкою миші та виберіть 3D-об’єкт -> Куб. У редакторі повинен з’явитися куб.

Двічі клацніть Куб на панелі в ієрархії, а на правій панелі інспектора змініть положення на (0,0,2). Встановіть шкалу як (.25, .25, .25). Ваша інспекторська панель повинна виглядати так:

Приємно! Давайте пройдемо кроки побудови, щоб ми могли побачити наш куб в емуляторі HoloLens.

У Unity виберіть File-> Build Settings. З'явиться спливаюче вікно побудови, тому натисніть кнопку побудови. У спливаючому вікні папки створіть нову папку під назвою App і виберіть її як призначення збірки.

Після завершення збірки відкрийте рішення Visual Studio у папці App. Змініть параметри налагодження на Release, x86 і орієнтуйтеся на емулятор HoloLens. Панель параметрів повинна виглядати так:

Запустіть рішення, і після запуску емулятора та завантаження вашої програми ви побачите свій куб на екрані.

Робимо куб інтерактивним

Тепер, коли ми з’ясували, як додати куб у наш додаток, давайте змусимо куб щось зробити. Коли ми дивимося на куб, він буде обертатися, а коли ми клацнемо на куб, він збільшиться в розмірі.

Поверніться до Unity і створіть новий сценарій на панелі ресурсів під назвою InteractiveCube. Щоб створити новий сценарій, клацніть правою кнопкою миші на панелі ресурсів і виберіть Створити -> Скрипт C #.

Щоб додати сценарій до куба, переконайтеся, що куб вибрано, і перетягніть сценарій на панель інспектора. Це повинно виглядати так:

Двічі клацніть на сценарії на вкладці "ресурси", і має з'явитися екземпляр Visual Studio.

Імпортуйте HoloToolkit.Unity.InputModule у верхній частині нашого сценарію та зробіть InteractiveCube розширенням IFocusable та IInputClickHandler. Наш код повинен виглядати так:

using HoloToolkit.Unity.InputModule;
public class InteractiveCube : MonoBehaviour, IFocusable, IInputClickHandler {...} 

Розширюючи інтерфейси IFocuable та IInputClickHandler, наш компонент сценарію дозволяє батьківському GameObject підписатися на події фокусування та клацання.

Давайте змусимо куб обертатися, коли наш погляд на нього. Інтерфейс IFocusable вимагає від нас двох загальнодоступних методів void: OnFocusEnter та OnFocusExit. Створіть приватне логічне поле та назвіть його Поворотним. Коли ми фокусуємо куб, встановлюємо для нього значення true, а коли наш фокус виходить, встановлюємо значення false. Наш код повинен виглядати так:

public bool Rotating;
public void OnFocusEnter(){ Rotating = true;}
public void OnFocusExit(){ Rotating = false;}

Фактичну ротацію ми зробимо в Update (). Update () - це спеціальний метод Unity, який називається кожним кадром. Щоб контролювати швидкість обертання, додайте відкрите плаваюче поле з назвою RotationSpeed. Будь-яке відкрите поле в компоненті можна налаштувати та ініціалізувати в редакторі Unity.

public float RotationSpeed;
void Update() { if (Rotating) transform.Rotate(Vector3.Up * Time.deltaTime * RotationSpeed);}

У Unity перетворення використовується для управління фізичними атрибутами, такими як розмір, обертання та положення GameObject. Ми обертаємо батьківський GameObject навколо осі y на один градус в секунду, помножений на швидкість.

Щоб змусити куб відповідати на події клацання, додайте метод OnInputClicked, який вимагає IInputClickHandler. Створіть загальнодоступну змінну Vector3 під назвою ScaleChange. У методі OnInputClicked ми збільшимо масштаб куба на ScaleChange.

public Vector3 ScaleChange;
public void OnInputClicked(InputClickedEventData eventData) { transform.localScale += ScaleChange;}

Тепер, коли ми закінчили роботу зі сценарієм, поверніться до Unity. Переконайтеся, що вибрано об’єкт Cube, і встановіть для змінних Speed ​​та ScaleChange значення 50 та (.025, .025, .025) відповідно. Не соромтеся експериментувати з різними значеннями! Наш сценарій повинен виглядати так:

Чудово! Ми закінчили сценарій InteractiveCube. Створіть свою програму з редактора Unity та запустіть рішення з Visual Studio.

Резюме

У цьому покроковому посібнику ви дізналися, як налаштувати Unity для розробки HoloLens, створити інтерактивний GameObject та запустити програму в емуляторі.

Якщо вам подобається розробляти HoloLens, я рекомендую вам ознайомитись із навчальними посібниками Microsoft Academy. Вони детально розглядають різні ключові концепції HoloLens і проводять вас по створенню досить цікавих програм.

Якщо вам сподобалась стаття або ви маєте відгук, залиште коментар нижче!