В прошлой статье я сделал общий обзор средств разработки для наиболее интересных устройств виртуальной реальности и дал торжественное обещание в следующем материале прицельно рассказать тебе про Microsoft HoloLens. Что ж, пора сдержать слово!

 

А я написал книгу!

Все матерые авторы журнала Хакер рано или поздно задумываются о написании целой книги :). Наконец-то и я вошел в их число, исписав кучу бумаги и создав увесистый том, посвященный разработке компьютерных и мобильных игр на движке Torque 2D. В книге рассматривается разработка 4-х игр разных жанров, портирование под мобильные платформы: iOS и Android и размещение пакета с игрой в Google Play. За более подробной информацией обращайся на мой сайт или на сайт издательства Солон-Пресс.

Дополненная vs виртуальная реальность. Что лучше?

Как нетрудно догадаться, дополненная реальность отличается от виртуальной тем, что в первом случае виртуальные объекты помещаются в реальную обстановку, а во втором мы имеем дело с полностью фантастическим окружением. MS HoloLens — это как раз первый случай, система дополненной реальности. А в каких областях дополненная реальность лучше, чем виртуальная?

Во-первых, это архитектура: можно по кирпичику разобрать здание, убрать стену, заглянуть внутрь, изменить расположение комнат и мебели, увеличить или уменьшить окна.

Во-вторых, медицина. Я не сомневаюсь, что студентов можно прекрасно обучать с помощью виртуальной реальности, однако при проведении операций дополненная реальность принесет хирургам ощутимую пользу. Можно подключить коллегу из другого здания, города, страны, можно проводить совместные операции. Кроме того, дополненная реальность выводит подсказки прямо на очки, позволяя не отвлекаться от операции.

Новые игровые технологии... для меня весьма спорный вопрос. Мы играем в игры, чтобы погрузиться в виртуальный мир, все остальное — фитнес, которым, в моем понимании, надо заниматься по-другому (а вот не соглашусь с тобой, фитнес с использованием виртуального тренера — это охрененно, вот доказательства. — Прим. ред.).

 

Обзор аппаратного обеспечения

Комплект HoloLens
Комплект HoloLens

Об аппаратной начинке HoloLens появились новые сведения, которые внесли несколько уточнений в информацию из прошлой статьи.
В качестве CPU в HoloLens используется 64-разрядный Intel Atom x5-Z8100 с частотой 1,04 ГГц. Этот процессор входит в семейство процессоров Intel Airmont со встроенной графикой, изготавливаемое по 14-нанометровой технологии. Графический процессор (GPU) совмещен с голографическим (Holographic Processing Unit — HPU) и также является собственной разработкой Intel — HoloLens Graphics, по заказу Microsoft. HPU — это своего рода высокопроизводительный процессор, способный обрабатывать огромные массивы данных (по словам разработчиков, вплоть до терабайта).

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

Вывод голограмм — виртуальных объектов происходит с помощью двух источников света, которые в HD-качестве проецируют изображение на две голографические линзы. Каждая имеет три слоя: красный, зеленый, синий (RGB). Максимальное разрешение 1268 х 720 с частотой перерисовки 60 FPS. Угол обзора камер составляет 120 градусов, это меньше, чем угол обзора человеческого глаза, но достаточно для распознавания окружения.

Устройство содержит на борту 2 Гбайт оперативной памяти, из которых для видео выделено 114 Мбайт, при этом еще 980 Мбайт отведены для совместного использования. Размер файлового хранилища — 64 Гбайт. Объем мощности аккумулятора составляет 16,5 мВт·ч, чего хватает примерно на два часа беспрерывной работы.

С помощью встроенной HD-камеры можно делать снимки с разрешением 2048 х 1152 пикселя и снимать видео с разрешением 1408 х 792 и частотой смены кадров 30 FPS. Кроме того, на устройстве расположены два динамика — на каждой дужке очков, непосредственно над ушами. С их помощью создается стереозвук, он звучит так, как люди привыкли его слышать. Это позволяет определять положение источника звука в пространстве. Для общения с внешним миром HoloLens имеет Wi-Fi, Bluetooth и порт micro-USB. Тепло от устройства выводится через дужки, в направлении вверх и вниз.

 

Обзор программного обеспечения

Операционная система занимает 5,1 Гбайт. В ее роли выступает 32-битная Windows 10. Для каждого приложения имеется лимит занимаемого им пространства. Он равен 900 Мбайт. Используемая в HoloLens версия Windows 10 лишена привычного интерфейса, в ней все части выполнены на основе современной Universal Windows Platform (логично, что UWP-приложения с настольного компа там запустятся).

Среди проверенных приложений: HoloTour, Galaxy Explorer Project (139 Mбайт), Young Conker (433 Mбайт), RoboRaid (155 Mбайт), Fragments (892 Mбайт), Skype (50 Mбайт), 3D Viewer (23 Mбайт). Из этого списка также следует, что, хотя по современным меркам объем хранилища маловат, его окажется достаточно для использования HoloLens.

Ведутся споры: зачем 32-битной операционке и двум гигам оперативы 64-разрядный процессор? 64-битный процессор нужен не только чтобы можно было использовать более 3 Гбайт памяти. Эта аппаратная возможность в первую очередь требуется для выполнения соответствующих вычислений и их оптимизации.

HoloTour
HoloTour
 

Управление HoloLens

На дужках очков HoloLens расположены кнопки для управления громкостью звука и яркостью голограмм. Колесиком сзади на ободке в области затылка можно регулировать ширину обхвата этого ободка — чтобы очки удобно держались на голове. Также на левой дужке находится кнопка включения/выключения девайса. Эти способы управления вполне стандартны и особого шока не вызывают. А вот способы поинтереснее — это голос (виртуальный помощник Cortana) и жесты. То есть пользователь HoloLens может управлять объектами и отдавать устройству команды жестами (невозможно не отметить управление с помощью движений головой). Например, можно перемещать указатель, шевеля рукой, а выбирать пункт меню голосовой командой Select или щелчком пальцев. Оригинально!

Уже сейчас в наборе HoloLens есть несколько разнообразных голосовых команд и поддерживаемых жестов. Ожидается, что голосом мы сможем управлять объектами, построенными HoloLens, например поворачивать и перемещать их. То же самое и про руки: HoloLens позволит взаимодействовать с виртуальными объектами, точно с настоящими, с помощью рук и пальцев, наравне с такими устройствами, как Leap Motion. Дополнительным средством управления голограммами служит Clicker.

Clicker
Clicker

Для зарядки это устройство подключается к компьютеру по micro-USB, а для подключения и управления HoloLens используется Bluetooth. Clicker позволяет имитировать некоторые (но не все) жесты, в том числе выбор, перемещение, изменение размера, прокручивание. Кроме того, на поверхности Clicker находятся два светодиода, они информируют о состоянии батареи. Настраивается девайс из меню непосредственно на HoloLens.

 

Средства разработки

Интересно было бы пощупать прибор своими руками, но в России он пока не продается (кстати, мы попросили его в Microsoft, они обещали нам прислать аппаратик при первой возможности, как пришлют — напишем для него пару приложений и сделаем статью. — Прим. ред.), поэтому пока будем пользоваться эмулятором.

Для начала нам понадобятся сами тулзы. Со страницы сайта Microsoft надо скачать и установить MS Visual Studio 2015 Update 3 (включающий Windows 10 SDK), HoloLens Emulator и, перейдя по ссылке Unity HoloLens Techical Preview на сайт движка Unity, скачать бета-версию 5.4.0 последнего. Мы не будем рассматривать установку, там все понятно.

После установки, которая может длиться достаточно долго (полная версия VS 2015 со всеми фреймворками и библиотеками занимает около 15 Гбайт), проверим установленные тулзы. По идее, во время инсталляции эмулятор HoloLens прописывается для использования в студии, поэтому никаких проблем возникнуть не должно.

Запустим Visual Studio. Создадим проект для HoloLens. Обрати внимание, проект данного типа можно создать на C# или C++. Выберем первый: Универсальные -> HoloGraphic -> Holographic DirectX 11 App (Universal Windows). На следующем шаге будет предложено выбрать целевую и минимальную версию операционной системы. Можно оставить по умолчанию. В результате будет создан проект для HoloLens. Первым делом запустим его на эмуляторе. Для этого надо выбрать соответствующий пункт из ниспадающего меню в верхней части окна. После компиляции и построения проекта запустится эмулятор HoloLens, на котором развернется проект из студии.

Обрати внимание: для запуска проекта на эмуляторе тебе понадобятся как минимум 8 Гбайт оперативки и видеокарта, поддерживающая DirectX 11. Проект, созданный на неуправляемом C++, использует DirectX 11; с другой стороны, проект на C# выводит графику с помощью SharpDX, который представляет собой обертку интерфейсов DirectX для управляемых языков.

После загрузки эмулятора и его операционной системы появится начальное меню HoloLens shell.

Меню HoloLens
Меню HoloLens

Меню HoloLens состоит из сведений о системе (качество Wi-Fi-связи, состояние батареи, текущее время, громкость), кнопки запуска помощницы Cortana, кнопки для включения фото/видеокамеры (смешанной реальности), запуска браузера, открытия настроек, магазина, хранилища фото и другого. В меню также располагаются иконки установленных приложений. После меню отобразится скомпилированное приложение — в данном случае семпл — вращающийся куб.

Все виртуальные объекты в дополненной реальности — это голограммы. Заготовка для этого приложения создана с помощью движка Unity 3D.

Эмулятор с запущенным голографическим приложением
Эмулятор с запущенным голографическим приложением
 

Модель приложения HoloLens

Как мы говорили выше, для управления HoloLens применяется специальная версия Windows 10. Из всех подсистем настольной Windows 10 данная версия использует только платформу UWP. Из этого следует, что UWP-приложения, разработанные для ПК или смартфона, будут работать на HoloLens. В каждый момент на устройстве может выполняться лишь одно приложение — HoloLens разрешает выводить графику только одной программе. Следовательно, жизненный цикл приложения для HoloLens соответствует UWP-модели с исключением в виде урезанной многозадачности. Так, чтобы начать выполнение приложения, его иконку надо разместить в дополненной реальности (на «экране»).

Может быть запущено несколько экземпляров одного и того же приложения, однако при запуске каждого следующего предыдущий экземпляр приостанавливается/засыпает. То же самое происходит с любым другим приложением. Засыпая, приложение сохраняет свой контекст. Чтобы закрыть приложение, его иконку надо вынести за пределы области видимости.

Приложение, выполняемое на HoloLens, может иметь один из двух видов: голографический и двумерный. Первый позволяет создавать голограммы в дополненной реальности вокруг пользователя. Мы можем отображать голограмму в определенных координатах окружения, то есть, если пользователь отвернется, голограмма пропадет из его поля зрения, но, повернувшись назад, он снова увидит ее. Когда приложение имеет двумерный вид, ее экранная форма отображается на специальной подставке, которая имеет предопределенные размеры. Хотя юзер не может изменить размеры окна приложения, подобно голограммам, он может передвигать и поворачивать окна под любым углом. В таком виде работают обычные UWP-приложения, созданные, возможно, для других аппаратных платформ.

Разработчик может включить в свое приложение разные виды, затем переключать их. Включение 2D-режима может понадобиться для появления системной клавиатуры. Когда пользователю надо ввести текст, он устанавливает фокус на поле ввода, в это время приложение должно переключиться в двумерный режим, в результате чего отобразится системная клавиатура.

UWP-приложение в эмуляторе
UWP-приложение в эмуляторе

UWP-приложения для HoloLens включают почти те же возможности, что UWP-приложения для ПК или смартфона. HoloLens поддерживает протокол передачи управления от приложения к приложению, запуск приложения из другого приложения. Плюс к этому приложения в HoloLens поддерживают все файловые контракты: FileOpenPicker и FileSavePicker. По умолчанию поддерживаются следующие форматы графических файлов: BMP, GIF, JPG, PNG; среди видеоформатов: AVI, MOV, MP4, WMV. Браузер Microsoft Edge сохраняет и открывает: HTML, PDF, SVG, XML.

Когда пользователь сохраняет файл, к имени последнего добавляется текущее время. Эту опцию нельзя отключить.

 

Типы приложений

Существует три типа приложений для HoloLens. Самый распространенный вид приложения для HoloLens — это добавление к окружающей среде виртуальных объектов, такой тип называется улучшенное окружение (Enhanced Environment Apps). Этот способ позволяет пользователям легко перейти от реальных задач к цифровым, давая ощутить голограммы частью реального мира. В качестве примера можно привести размещение голограммы телевизора или отображение скайп-собеседника в любой удобной части комнаты.

Далее идет смешанное окружение (Blended Environment Apps). В таком случае HoloLens сканирует и запоминает карту помещения, где находится юзер, а затем на основе окружения строит дополнительные объекты (то есть их расположение основывается на интерьере). Смешанное окружение может заменять реальные объекты голограммами одинакового размера. Например, на реальный интерьер, включая стены, с помощью HoloLens можно взглянуть по-новому, наклеив другие обои и покрасив стены виртуально перед ремонтом помещения.

Третий тип приложений — виртуальное окружение (Virtual Environment Apps). В данном случае окружение не имеет большого значения, так как HoloLens полностью меняет картину вокруг, и масштаб реконструкции реальности тут ограничен только фантазией разработчиков приложения. Таким образом, юзер оказывается в виртуальной реальности, где может взаимодействовать с реальными объектами, в новом мире играющими другую роль. Как-то страшновато, не находишь? Это может быть посещение какого-то музея, прогулка по городу будущего или путешествие по другой планете.

 

Голографические приложения

Для создания 2D-приложения, как мы видели, достаточно воспользоваться средствами платформы UWP. В результате получается приложение, с окном которого можно взаимодействовать в пространстве: поворачивать, перетаскивать. Но главная прелесть HoloLens — это голограммы в окружающем пространстве, дополняющие реальность. Говоря простым языком, это трехмерная визуализация, иными словами — трехмерная игра. Следовательно, нужен соответствующий движок.

Можно потратить несколько месяцев работы и создать свой движок на DirectX 11, но разумнее будет воспользоваться готовым Unity 3D. Уже есть его версия, предназначенная для создания HoloLens-приложений. Если ты до сих пор не скачал Unity for HoloLens, тогда самое время это сделать.

Взаимодействие с HoloLens основано на взгляде, жестах и голосе (сокращенно GGV: gaze, gesture, voice). Понимание окружения делится на компоненты: координатную систему, пространственный звук и пространственную карту. Эти компоненты позволяют HoloLens строить голограммы с учетом положения юзера и объектов вокруг него. Голограммы визуализируются светом и сопровождаются звуком.

HoloLens использует разные координатные системы для определения позиции и ориентации размещения голограмм. Все координатные системы в трехмерном пространстве основаны на декартовой системе.

Взгляд — основная форма ввода и указания целевого объекта. Как в реальном мире, юзер взаимодействует с тем объектом, на который обратил внимание. Для определения вектора обзора HoloLens использует положение и ориентацию пользовательской головы, а не глаз. Если юзер находится в комнате и смотрит вокруг себя, HoloLens фиксирует пересечения этого вектора с реальными и виртуальными объектами. Направив взгляд на голограмму, с ней можно взаимодействовать с помощью жестов или устройства Clicker. HoloLens распознает ввод с помощью жестов, отслеживая положение одной или обеих рук.

Подобно Leap Motion, HoloLens видит руки внутри виртуального конуса, начало которого находится в девайсе и простирается вперед. Для каждой руки, которую увидел HoloLens, можно получить сведения о ее позиции и состоянии нажатия (есть два состояния: ready state и pressed state). У HoloLens большой набор предопределенных жестов, среди которых: воздушный щелчок, «расцветание» (когда сложенные вместе пальцы раскрываются, подобно бутону цветка, параллельно полу), удержание, манипуляции (во время удержания), перемещение, изменение размера и другое (из-за отсутствия устройства не вижу смысла подробно описывать жесты).

При голосовом управлении юзер должен направить взгляд на нужную голограмму и произнести команду Select для выбора этой голограммы. После этого можно обратиться к Кортане, сказав: Hey Cortana, и добавить желаемую команду, например (неполный список):

  • Launch ;
  • Move here;
  • Take a picture;
  • Start/Stop recording;
  • Mute/Unmute;
  • Shut down the device.
 

Заключение

HoloLens представляет собой полностью автономный компьютер с самостоятельным управлением операционной системой Windows 10. Этот компьютер следит за движениями своего пользователя и по программе выполняет ожидаемые в текущем контексте действия. В этой статье мы обсудили аппаратную и программную составляющие устройства, увидели, какие типы приложений можно разрабатывать в дополненной реальности, чем они отличаются, как представлены в HoloLens. Мы рассмотрели модель приложения для HoloLens, различия с приложениями для настольной и мобильной версии Windows 10.

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

Думаю, тема HoloLens просто не имеет права быть законченной одной статьей. И в будущем мы сможем продолжить ее в ключе разработки голографических приложений. Но пока на этом все. Удачи во всех делах и оставайся на связи!

Оставить мнение