Барселона, Mobile World Congress 2016. Нескончаемые очереди за тем, чтобы на несколько минут испытать ощущения от погружения в виртуальную реальность (VR). Причем неважно, как именно: полетать в космосе, поплавать с рыбками, сделать ставку в виртуальном казино, сразиться с кем-нибудь, пообщаться в социальной сети или хотя бы просто просмотреть презентацию про искусственный интеллект. Главное — успеть попробовать. Потому что стендов, на которых демонстрировали подобные новинки, на всей огромной выставке было не так уж много, и даже всё видевшие-перевидевшие профессионалы (а обычной публики на MWC практически не бывает) готовы были потратить немало времени, чтобы получить личные впечатления от входящих в моду технологий.

Да, виртуальная реальность стала хитом этого сезона. Угадайте, что будет через два-три года? Правильно, все будут считать, что, если вы не занимаетесь виртуальной или дополненной (AR) реальностью, значит вас вообще нет на рынке. Но кто-то же должен все эти приложения написать! Следовательно, всем будут нужны разработчики. А где их взять?

Такая же история совсем недавно происходила с мобильностью — разработчики мобильных приложений оказались в жутком дефиците, когда всем вдруг понадобилось перенести свои продукты на смартфоны и планшеты. А сейчас даже школьники пишут код под все популярные мобильные платформы — iOS, Android, Windows. Вскоре они выйдут на работу в компании, и конкуренция на рынке труда в области разработки мобильных приложений изрядно усилится. Сегодня мобильность как таковая перестала быть инновацией и перешла в разряд «рабочих лошадок», а умение программировать в мобильной среде на наших глазах из мощного конкурентного преимущества разработчика на рынке труда превращается в обязательный навык. Как программисту повысить свою ценность? Как обычно — изучать и осваивать новые технологии, находящиеся на пороге массового спроса, чтобы успеть набраться опыта к моменту, когда они станут мейнстримом.

С чего начать погружение в VR/AR

Чтобы вдохновиться, можно пересмотреть «Матрицу» или перечитать главы о фантоматике из книги Станислава Лема «Сумма технологии». Для особо продвинутых — освежить в памяти курс высшей математики, потому что подо всей этой VR-историей лежат довольно сложные вещи: углы Эйлера, гиперкомплексные числа, квартернионы Гамильтона, расчеты дисторсии и много чего еще. Для тех, кто отдает предпочтение не теории, а практике, есть хорошая новость: современные средства разработки, такие как Unity, позволяют создавать трехмерные виртуальные миры без хитрых формул, просто оперируя объектами и их свойствами.

Взглянуть же на проблемы создания приложений виртуальной и дополненной реальности с технической стороны можно при помощи бесплатного интерактивного онлайн-курса Microsoft Virtual Academy. Пройдя его, вы научитесь создавать приложения виртуальной реальности для Windows на Unity с использованием плагинов Fibrum SDK или ALPS-VR, узнаете об особенностях навигации и управления в VR, а также о высокоэффективных приемах программирования на DirectX/C++.

Основы виртуальной реальности

В кратком введении технологический евангелист компании Microsoft Дмитрий Сошников рассказывает об истории и основных принципах построения VR. Оказывается, эта идея витала в воздухе аж с 1930-х годов, но не было технической возможности ее реализовать. Постепенно технологии подтянулись — появились качественные шлемы виртуальной реальности и программные среды для быстрой разработки приложений. «Виртуальная реальность ближе, чем мы думаем», — заключает лектор.

По окончании курса вы сами убедитесь — многое из того, что когда-то могло существовать лишь в воображении фантастов, в принципе уже реализуемо. Конечно, до «Матрицы» нам еще далеко: современные технологии пока могут «обмануть» лишь два из пяти человеческих чувств — зрение и слух, а обоняние, осязание и вкус пока удерживают нас в этом мире и помогают распознать иллюзию. Но все равно значительный прорыв в создании подлинно виртуальной реальности уже произошел. И будущее вовсе не обязательно должно оказаться таким мрачным, как показано в голливудских фильмах: у вас есть шанс поучаствовать в его создании и сделать его более позитивным.

Игры на Windows как стартовая площадка для изучения VR

Первое, что приходит на ум, когда мы говорим о виртуальной реальности, это компьютерные игры. Без всяких аналитиков ясно, что спрос на игры с полным погружением будет расти настолько быстро, насколько производители оборудования смогут обеспечить пользователей мощными и доступными по цене устройствами. Самой популярной платформой для игр по-прежнему остается ПК под Windows, а для того, чтобы перейти в VR-режим, достаточно подключить к нему шлем Oculus или аналогичный. Как правило, VR-шлемы используют графику высокого разрешения 1080p с частотой 90 Гц, для чего нужна мощная видеокарта и процессор. Сегодня стоимость игрового комплекта, включающего ПК и Oculus Rift составляет около 3000 долл., что довольно дорого для массового рынка, но тенденция к ее снижению есть.

Вышедшая недавно Windows 10 значительно упрощает подключение и настройку виртуальной реальности, что позволит получить невероятные впечатления от игр. Объявленная Microsoft программа бесплатного обновления до Windows 10 оказалась чрезвычайно успешной — за три месяца после состоявшегося 29 июля 2015 г. выпуска новая ОС была установлена на 110 млн. устройств, а к 2018 г. вендор планирует увеличить эту цифру до 1 млрд., т. е. желающих поиграть найдется достаточно, поэтому имеет смысл вкладываться в разработку VR-игрушек. На конец прошлого года насчитывалось уже 200 тыс. зарегистрированных пользователей Oculus Developer Center, и о своих планах по созданию VR-контента объявили известные поставщики: Microsoft (Minecraft), Netflix, 20th Century Fox, CNN и многие другие.

В декабре 2015 г. прошел первый в России хакатон по разработке приложений виртуальной реальности, организованный Microsoft. Он собрал 235 участников. Подробнее о нем можно узнать на сайте, посвященном проекту по обучению виртуальной реальности. Здесь же можно загрузить VR-приложения и выбрать шлем стоимостью от 500 до нескольких тысяч рублей и получить разнообразную информацию о разработке приложений VR для Windows.

Шлемы виртуальной реальности

Первый шлем виртуальной реальности был сделан в 1968 г. «Это было большое, очень тяжелое устройство, которое опускалось с потолка на подвеске к вам на голову и показывало в глаза некоторую очень условную модель виртуального окружения на основе wire frame’ов», — рассказывает Дмитрий Сошников.

С тех пор технологии значительно продвинулись, однако коммерчески успешные шлемы для виртуальной реальности появились совсем недавно. Увидев потенциал рынка, вендоры активизировались. Теперь выбор промышленных VR-шлемов увеличился, однако, несмотря на бурный рост предложения, цена на VR-устройства для обычного пользователя пока еще кусается. Но  каждый сам может сделать себе шлем своими руками, просто вырезав заготовку из картона и сложив ее по инструкции. Нужно лишь линзы.

Конструируем и используем VR-шлем

Если у вас есть доступ к 3D-принтеру, то шлем можно и напечатать — компания Durovis, один из пионеров в области VR, выложила в открытый доступ чертежи своего шлема виртуальной реальности.

Трансформируем обычную 3D-игру в формат VR

Сегодня мы уже имеем готовые виртуальные 3D-миры, многие из которых написаны на движке Unity. Обычный компьютер позволяет нам лишь заглянуть в них через окно дисплея, а чтобы «нырнуть» в режим виртуальной реальности, нужно всего-то поменять точку зрения и вместо одной камеры использовать две, работающие синхронно — как пара глаз. Тогда получится стереоскопическое изображение и круговой обзор. Для этого потребуется внести в проект на Unity совсем небольшие изменения и — вуаля! — ваша первая VR-игра готова.

Более подробно об этом рассказано в видеолекции.

Принципы создания VR с примерами на Unity

Разумеется, это только начало. Если бы все было так просто, то магазины приложений уже ломились бы от игр в формате VR, однако этого мы пока не наблюдаем. На самом деле полноценная миграция в виртуальную реальность происходит сложнее и требует большего внимания к деталям. Например, из-за того, что пользователь смотрит на экран через линзы, возникает дисторсия и хроматическая аберрация, которые нужно корректировать специальными фильтрами. Датчики, с помощью которых программа отслеживает положение головы и направление взгляда, дают ошибки, имеющие свойство накапливаться, и нужно их компенсировать. Поэтому при разработке VR-приложений лучше использовать специализированные фреймворки, такие как ALPS-VR (доступен в исходных кодах) или Fibrum SDK. О том, как с ними работать, рассказывается в следующих двух лекциях.

Создание VR на Unity с ALPS-VR

Создание VR на UNITY с Fibrum SDK

Создаем аватар игрока

ОК, мы можем показать пользователю виртуальный мир во всей красе и даже позволить в нем перемещаться с помощью наклонов и поворотов головы. Но для создания полноценных игровых механик этого мало. Как быть? Клавиатуру и мышь ведь с собой не захватишь. Наш пользователь в виртуальном пространстве пока остается бестелесным существом, у которого есть только глаза и уши. Чтобы вернуть ему возможность управлять игрой, нужно дать какие-то инструменты. Иначе говоря, нам предстоит заново спроектировать пользовательский интерфейс приложения с учетом особенностей взаимодействия с пользователем в виртуальной реальности — об этом следующий раздел видеокурса.

Особенности взаимодействия с пользователем в виртуальной реальности

По словам Дмитрия Сошникова, существуют разные способы взаимодействия пользователя с VR-системой: можно отдавать команды голосом, использовать джойстик (но вслепую) либо специализированные контроллеры типа Razer Hydra. Однако более удобный интерфейс получается в том случае, если у вас есть датчики захвата движения.

Артем Печеный из VRARLab также считает, что лучший вариант — это когда действия пользователя в физическом и виртуальном мире совпадают. Если вы просто двигаете рукой и берете какой-то виртуальный объект, — это естественно. А если для того, чтобы взять вещь, нужно нажать специальную кнопку, — то нет. В общем, в виртуальном пространстве вам нужны ваши руки и ноги, а для этого приходится использовать специальные датчики захвата движения, например Leap Motion, который устанавливается прямо на шлем Oculus Rift. Кроме этого можно использовать устройства на основе технологии Intel RealSense или классику жанра — Microsoft Kinect.

Использование сенсоров для взаимодействия с пользователем в виртуальной реальности

Подход к разработке, как его описывает Артем Печеный, очень прост: с помощью сенсоров получаем скелет, снимаем координаты с нужных костей, интерпретируем сообразно механике игры.

Не только играми будет прирастать рынок VR/AR

Это может показаться неожиданным, но суммарно компьютерные игры займут только треть рынка VR/AR. А остальное? Две трети поделят между собой разные бизнес-приложения, как развлекательные, так и вполне серьезные. Причем на текущий момент в этих отраслях (за исключением проектирования) нет специалистов по 3D и тем более по VR/AR. С другой стороны, разработчики с опытом создания игр ничего не понимают в бизнес-процессах и требованиях функционального заказчика.

Илья Курилин, генеральный директор компании Octopod, занимающейся разработкой VR/AR-приложений для бизнеса, говорит, что все же проще научить разработчиков с игровым бэкграундом каким-то азам в предметной области, чем профильным специалистам освоить весь стек 3D-технологий. Потому что клиентские части бизнес-приложений в среде виртуальной и дополненной реальности создаются с использованием игровых механик, которые разработчикам игр хорошо знакомы — надо только научиться применять их в других сценариях. Так что, может, стоит расстаться с игрушками и заняться более серьезными вещами — проникновение технологий VR/AR в бизнес открывает широкие возможности для профессионального роста.

Дополненная и другие реальности

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

О различных комбинациях реальной и виртуальной сред — так называемой смешанной реальности (mixed reality) — в одном из видеокурсов рассказывает Александр Кондратов, технический директор компании MA-AS (maas.agency). Чтобы создавать приложения смешанной реальности, вам нужны алгоритмы компьютерного зрения, 3D-движок и платформа, на которой все это будет собираться вместе.

Смешанная реальность. Среда, где обитают голограммы

Простейшим устройством дополненной реальности может стать любой смартфон — у него есть камера, смотрящая на реальный мир, и софт для моделирования виртуальных объектов поверх изображения. Наглядный пример — выпущенное IKEA приложение дополненной реальности, которое позволяет увидеть, как будет смотреться в вашей квартире тот или иной предмет мебели — для этого нужно всего лишь положить на пол страницу из каталога IKEA и навести на это место камеру гаджета.

В качестве инструментов для разработки Александр Кондратов предлагает использовать Vuforia 5 совместно с Unity 5 и Cardboard Unity SDK. Дальше создаем проект в Unity, подключаем AR-камеру от Vuforia, немного модифицируем префаб CardboardMain... После всех манипуляций с кодом и сборки мы получим простое приложение для Cardboard, способное переключаться между двумя режимами AR и VR при наведении на маркер.

Создание приложений смешанной реальности AR/VR, адаптированных для кардбордов

Дальше можно экспериментировать самостоятельно.

Microsoft HoloLens

На конференции для разработчиков Microsoft Build 2016 всем желающим были доступны для ознакомления очки дополненной реальности HoloLens. Гарнитура имеет слегка затемненный прозрачный дисплей и систему объемного звучания, что позволяет не только видеть голограммы, но и слышать их. Очки поддерживают голосовое управление с помощью функции Cortana. Разрешение изображения — 720p. В настоящий момент устройство находится на этапе разработки, поэтому техническое исполнение будет только улучшаться. С помощью HoloLens можно также просматривать фотографии, видео, переходить по ссылкам в браузере.

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

«Мобильны люди, а не устройства. Мы готовы к технологиям, чтобы оставить позади устройства, экраны, пикселы и все нынешние цифровые барьеры», — говорит Алекс Кипман, соавтор таких важных для компании устройств и технологий, как Kinect и HoloLens.

Впрочем, лучше все увидеть своими глазами — посмотрите выступление Алекса Кипмана на конференции TED.

Алекс Кипман на TED-2016

В комментариях по поводу показанной Кипманом «голопортации» неоднократно звучала тема «Звездных войн». Похоже, Алекс когда-то очень вдохновился этой идеей и наконец-то реализовал ее. Астронавты на МКС уже опробовали HoloLens в рамках проекта NASA Sidekick. Цель проекта в том, чтобы обеспечить лучшую координацию работы астронавтов с наземным персоналом во время проведения ремонтов и технического обслуживания оборудования станции (подробнее здесь).

Начать разрабатывать голографические приложения можно даже не имея самого устройства — скачайте SDK и эмулятор HoloLens, который запускается в виртуальной машине Windows Holographic. Пакет установки включает шаблоны проектов Visual Studio с голографическим DirectX, там же вы найдете обучающие материалы и сможете заказать комплект разработчика.

Самый подходящий момент, чтобы освоить VR/AR

Аналитики Gartner считают, что технологии виртуальной и дополненной реальности могут стать мейнстримом через три-пять лет. Допустим, они правы. Что тогда?

Проведем нехитрый обратный отсчет: если через три года вам надо быть на рынке со своим приложением VR, AR или Mixed Reality, то отсчитываем год на продвижение, год на разработку (это в лучшем случае) и год на освоение технологий и прототипирование. Получается, времени, чтобы успеть снять сливки с нового рынка, практически не осталось! В общем, начинать разбираться с VR/AR надо прямо сейчас, чтобы потом не получилось, как говорил капитан Джек Воробей: «Если ты ждал подходящего момента, то это был он».

ПОДГОТОВЛЕНО PC WEEK EXPERT