Содержание статьи
В середине девяностых, после выхода на экраны фильма «Газонокосильщик» (или «Косильщик лужаек», тут уж кому как повезло с переводом), нам казалось, что виртуальная реальность уже где-то рядом. Непонятно, на чем основывалось это ощущение у пользователей тогдашних бэкашек, спектрум-клонов и мажоров на 286-х, но факт остается фактом — виртуальную реальность мы считали чем-то реально близким. Прошло двадцать с лишним лет, и вот мы наконец стоим на ее пороге. Дверь виртуального мира только приоткрывается, но и через эту щелку мы видим его прекрасное будущее. А кто делает будущее цифрового мира? Мы, программисты!
Где востребована виртуальная реальность?
- Медицина. В первую очередь виртуальная/дополненная реальность может быть использована для тренировки медицинского персонала — она заменит устаревшие манекены. Решающую роль, как и во многих случаях, сыграет специально предназначенное программное обеспечение. Во-вторых, с помощью VR-технологий хирурги смогут консультироваться с более опытными коллегами, даже если те находятся вне операционной.
- Образование. Виртуальная реальность позволит ученикам «прикоснуться» к тому, о чем рассказывает преподаватель: увидеть химические реакции, физические взаимодействия, исторические события, анатомические подробности, молекулярное устройство — этот список бесконечен. Такие занятия будут увлекательны и для школьников, и для студентов и повысят интерес к учебе. Вдобавок открывается новая возможность для дистанционного обучения, когда студент сможет присутствовать на паре, при этом оставаясь у себя в селе (и покуривая бамбук).
- Общение. Всем понятно, что, покупая в 2014 году Oculus, Марк Цукерберг поставил ставку на VR как на новую социальную платформу. VR в этом плане превзойдет различные коммуникационные приложения, в том числе Skype и FaceTime. Общение не ограничивается социальными сетями: с помощью VR можно будет, например, проводить в одной комнате собрания для сотрудников, которые физически находятся в разных уголках земного шара.
- Туризм. Или, скорее, реклама туризма. VR предоставляет людям возможность оценить места планируемой поездки. Можно будет, не выходя из дома, посетить любую экскурсию: в другую страну или на дно океана. И это будет куда нагляднее, чем с помощью телевизора.
- Игры. Через VR геймеры получат доселе невиданный реализм, что позволит им по самое не хочу погрузиться в виртуальный мир. Игровые приложения — основной потребитель виртуальной реальности. Казуальные игроки вряд ли примут VR, но хардкорщики уже давно ждут полного погружения в игровую реальность. Уже существует несколько десятков игр, поддерживающих VR, среди них Minecraft, старушка Half-Life 2 и новый DOOM.
Аппаратная часть
Устройства виртуальной реальности можно поделить на три типа. Первый — это просто «держатель для смартфона с линзами», к ним относятся Samsung Gear VR, Google Cardboard. Экраны смартфонов последних марок имеют высокодетализированные дисплеи, они позволяют вывести четкие изображения для обоих глаз.
Второй тип устройств — это шлемы VR, подключаемые к хост-компьютеру или консоли, среди них Oculus Rift и PlayStation VR.
При этом шлемы виртуальной реальности требуют сложных вычислений, а потому мощных компьютеров, привередливы они и к видеокарте. Так что, хе-хе, большинство пользователей «маков» остаются не у дел, поскольку только «маки» верхней ценовой категории оснащаются высокопроизводительными графическими акселераторами. На обычном среднем PC один видеоадаптер выдает изображение с разрешением 1920 на 1080 и частотой генерации 30 FPS. А на очки виртуальной реальности надо выдавать два изображения примерно с таким же разрешением, но частотой 90 FPS, поскольку экран находится непосредственно перед глазом и при меньшей частоте будет видно мерцание.
Очки виртуальной реальности третьего типа не требуют хоста, они содержат в себе аппаратные средства и программные возможности, в том числе операционную систему на борту.
Для создания панорамного видео Google разработала установку Jump, которая представляет собой кольцо из 16 камер. Его размер и расположение камер подобраны с учетом параметров сборщика Jump, который создает окончательное бесшовное видео с обзором на 360 градусов.
Первый тип — «держатели для смартфона»
Google Cardboard — как понятно из названия, это очки, сделанные из картона, с применением оптических линз, магнита и застежек. На лицевую часть очков устанавливается любой смартфон, имеющий приложение для VR.
Google Daydream — следующий шаг в виртуальную реальность от Google. Это уже пластиковый шлем с держателем для смартфона и с дополнительными деталями, такими как джойстик для движения. Устройство появится в продаже только к концу года.
Шлем Samsung Gear VR — это уже профессионально выполненный девайс. Он разработан Samsung совместно с Oculus (кстати, шлем Oculus Rift содержит некоторое количество деталей от Samsung, но об этом позже). Линзы Gear VR обеспечивают поле зрения в 96 градусов, из сенсоров в шлеме предустановлены: акселерометр, гироскоп, геомагнетический сенсор, сенсор приближения. Первая версия устройства использовала смартфон Samsung Galaxy Note 4, затем — Galaxy S6 и S6 edge, а самые новые — Galaxy S7 и S7 edge. Разрешение экрана (при использовании S6) составляет 2560 x 1440, размеры устройства — 196 х 107 х 83, а масса — 420 г (учитывая смартфон). Смартфон подключается к шлему через micro-USB. Кроме того, на шлеме есть три элемента управления: сенсорная панель, кнопка «Назад» и колесико, служащее для подстройки расположения смартфона относительно глаз.
Для управления игровым процессом можно использовать геймпад SteelSeries Stratus XL. Есть две версии устройства: для OS X, iOS и для Windows, Android.
Второй тип — полноценные «шлемы»
С Oculus Rift без преувеличения начался новый виток развития виртуальной реальности. Первыми появились три комплекта разработчика: Oculus Rift DK 1, Oculus Rift DK 2, Oculus Rift Crescent Bay. 28 марта по цене 599 долларов наконец-то вышла пользовательская версия для всех.
Из технических характеристик стоит выделить следующие: общее разрешение матрицы экрана составляет 2160 х 1200, в качестве экрана используется дисплей от Samsung Galaxy Note 3, частота 90 Гц, обзор 110 градусов, акселерометр, гироскоп, магнетометр, сенсоры для управления, наушники, микрофон. В поставку также входят: пульт дистанционного управления Oculus Remote, необходимые кабели, геймпад от Xbox One и две игры. Плюс к этому в комплекте идет инновационный контроллер Oculus Touch, представляющий собой два Wii-подобных джойстика. Они имеют обратную связь: игрок чувствует вибрации в связи с событиями, происходящими в игре, распознаются жесты пользователя. Кроме того, для распознавания рук в виртуальном пространстве вместе с Rift можно использовать сенсор Leap Motion.
Oculus Rift подключается к компьютеру, который должен иметь как минимум процессор Intel Core i5 4590, 8 Гбайт оперативки и видеокарту уровня Nvidia GTX 970.
Шлем PlayStation VR (ранее Project Morpheus) подключается к консоли PlayStation 4. И так как последняя заметно уступает в мощности описанному чуть выше компьютеру, при разработке своего шлема Sony пошла на ряд мер, призванных оптимизировать его работу.
Какие особенности есть у этого шлема? 5,7-дюймовый экран с разрешением 1920 х 1080, угол обзора 100 градусов, частота 120 Гц. Вдобавок PlayStation 4 и PlayStation VR предоставляют технологию встраивания промежуточных кадров, которая делает изображение максимально плавным во время движения и тем самым позволяет компенсировать сравнительно слабую техническую составляющую самой консоли. Кроме того, отдельно от консоли и шлема продается камера PlayStation Eye, которая отслеживает положение шлема в пространстве благодаря имеющимся у нее двум оптическим сенсорам и девяти светодиодам, расположенным на шлеме.
Подобно другим системам VR, шлем от Sony имеет акселерометр и гироскоп. Управление или с помощью контроллера DualShock 4, или с помощью PlayStation Move.
Для работы HTC Vive тоже необходимо подключить к компу. Шлем VR, разработанный тандемом HTC (аппаратная часть) и Valve (софт), отличается от уже рассмотренных дополнительными сенсорами, которые крепятся на стенах комнаты, где происходит виртуальная симуляция. Следовательно, HTC Vive учитывает помещение, где находится игрок, и строит стены в виртуальном мире так, чтобы, перемещаясь, игрок не убился об стены реальные.
В комплекте с HTC Vive идут джойстики-нунчаки (похожие на Nintendo Wii). Эти контроллеры помогают проецированию движений рук игрока в виртуальный мир. Из других характеристик заслуживают внимания разрешение (2160 х 1200), частота (90 Гц), область обзора (110 градусов), сенсоры (акселерометр, гироскоп), лазерный трекинг, фронтальная камера, подключение (HGMI, USB 3.0), встроенное аудио и микрофон. У HTC вместе с Valve есть большое количество демок и приложений для системы VR.
Xakep #210. Краткий экскурс в Ethereum
Существует и еще один шлем данного типа — StarVR от компании Starbreeze. Благодаря двум 5,5-дюймовым дисплеям с разрешением 2560 х 1440 у этого шлема самый широкий угол обзора — 210 градусов по диагонали и 130 по вертикали. За движением и поворотами головы пользователя следят специальные координатные метки на устройстве, а также набор различных датчиков типа гироскопов, акселерометров и магнетометров. Так как компания Starbreeze специализируется на играх, то и для своего шлема она будет их выпускать.
Третий тип — «все в одном и без компьютера»
Насколько мне известно, в данное время существует только один девайс третьего типа. Это HoloLens от Microsoft. Он работает принципиально другим образом, создавая не виртуальную реальность, а дополненную. То есть к имеющимся реальным объектам добавляются виртуальные, с которыми можно взаимодействовать, — так, например, у пилотов современных истребителей на стекле шлема высвечивается различная полетная информация.
HoloLens не требует проводов, девайс представляет собой полноценный компьютер с операционной системой Windows 10. О технических характеристиках Microsoft не распространяется, но известно, что линзы HoloLens с соотношением сторон 16:9 обладают голографическим разрешением в 2,3 миллиона световых точек, чего достаточно для создания детализированных объектов. Кроме того, девайс содержит IMU (инерционное измерительное устройство), четыре камеры окружения, камеру глубины, HD-камеру, датчик захвата смешанной реальности, четыре микрофона и датчик окружающей среды. Управляет всем этим хозяйством 32-битный процессор от Intel, построенный на базе Cherry Trail, вдобавок устройство содержит «голографический обработчик» — HPU, разработанный Microsoft. Устройство включает: модули Wi-Fi, Bluetooth, micro-USB. Корпорация заявляет, что срок жизни встроенного аккумулятора составляет два-три часа.
Для взаимодействия с виртуальным миром используется устройство Clicker, оно позволяет выбирать, прокручивать, удерживать, совершать двойной щелчок в течение интерактивного сценария.
Программная начинка и средства ее разработки
Первый тип
В Google Play насчитывается уже около 28 платных и бесплатных приложений (в основном игр) для погружения в виртуальную реальность посредством андроидофона.
Google VR SDK для Android поддерживает Cardboard и Daydream, предоставляя легкий в освоении API для создания приложений. Google VR NDK позволяет писать нативный код на C/C++. Подавляющее количество приложений для VR использует много графики, поэтому программисту неплохо быть знакомым с OpenGL. Google VR SDK упрощает следующие общие для VR задачи:
- коррекцию искажения линз;
- пространственный звук;
- слежение за поворотами головы;
- калибровку 3D;
- визуализацию расположенных рядом кадров (бинокулярную визуализацию);
- настройку объемной геометрии;
- обработку пользовательского ввода.
С помощью Google VR SDK для iOS можно разрабатывать приложения VR, которые дадут пользователю окунуться в виртуальную реальность с помощью iPhone.
Google VR SDK для Unity может быть использован с Unity 3D версии 5.2.1 или более поздней. Этот SDK поддерживает обе платформы VR от Google: Cardboard и Daydream. SDK подключается к движку как плагин. С помощью скриптов и префабов Google VR SDK для Unity ты можешь легко создать новую сцену с нуля или адаптировать имеющуюся у тебя Unity-игру. Плагин также позволяет легко переключать приложение в режим виртуальной реальности и обратно. Кроме перечисленных выше задач, Google VR SDK для Unity дополнительно реализует:
- взаимодействие пользователя с системой (посредством триггера или контроллера);
- автоматическую стереоконфигурацию для определенного VR-обозревателя;
- коррекцию искажения для определенной линзы;
- выравнивание маркера для центрирования экрана под линзами, когда смартфон вставляется в шлем;
- автоматическую корректировку гироскопа;
- симуляцию движения головы пользователя в игровом режиме при использовании мыши и клавиш управления курсором;
- контролирование находящихся рядом областей видимости в соответствии с разницей настройки их VR-обозревателей;
- эффекты камеры относительно области VR, с учетом поворотов головы;
- поддержку стереоокон «картинка в картинке» плюс настройку их расположения, чтобы они оставались видимы после коррекции искажения;
- автоматическую настройку стереорежима для уменьшения напряжения глаз;
- определение направления взгляда пользователя;
- взаимодействие с элементами Canvas UI с использованием направления взгляда и триггера;
- один и тот же код для триггера и прикосновения к экрану;
- использование эффектов изображения (Image Effects) и замедленной визуализации (Deffered Rendering) для увеличения FPS.
Для программирования под Gear VR можно использовать Google VR SDK. Кроме того, Oculus подготовил специальный Mobile SDK, предназначенный для смартфонов Samsung Note 4 и новее. Разработчики утверждают, что прежде, чем выпустить SDK в открытый доступ, они год работали и шлифовали входящие в него инструменты. Из ключевых особенностей Oculus Mobile SDK следует выделить:
- асинхронное искривление времени;
- прямую визуализацию в переднем буфере;
- связывание частоты часов;
- приоритеты контекстов GPU;
- переключение контекстов GPU в реальном времени;
- потоки CPU в реальном времени;
- прямое искажение контента.
Кроме того, SDK включает исходный код приложений: Oculus Cinema, Oculus 360 Photos, Oculus 360 Video под открытой лицензией. Дополнительно включена поддержка Unity 4.5 для разработки игр с помощью этого движка.
Второй тип
Для Oculus Rift существует внушительный набор библиотек и инструментов. Вначале надо установить Rift Runtime. Затем из раздела downloads можно скачивать SDK и другие ресурсы, среди которых Oculus Audio SDK Plugins, Oculus SDK for Windows, Oculus Mobile SDK (рассмотрен выше), Oculus Runtime for OS X. Rift интегрирован с движками Unity 3D и Unreal Engine 4.x с помощью следующих API: Oculus Utilities for Unity 5, Unity 4.x Legacy Integration, Unreal Engine 4 Integration, Unreal Engine 4 Integration Wwise RedirectionPatch. Из дополнительных ресурсов — это SDK для работы с аудио, фреймворки для Unity 5, утилиты. Вдобавок в моем любимом трехмерном движке Torque 3D тоже реализована поддержка Oculus Rift.
SDK совместимы с любой версией «Студии», однако для работы с SDK лучше использовать как можно более новую версию, хотя бы 2012. Oculus SDK спроектирован таким образом, чтобы его интеграция в игровой движок или приложение была настолько проста, насколько это возможно. В начале работы с устройством нужно инициализировать LibOVR, нумерацию HMD (дисплей, монтируемый на голову), отслеживание положения головы, частоту смены кадров и процесс визуализации с помощью Rift.
Необходимые библиотеки и инструменты для разработки приложений и игр под PlayStation VR содержатся в PlayStation Development Kit, который распространяют только среди покупателей инструментов разработки для консоли.
Для разработки под шлем HTC Vive приготовлено три инструмента: OpenVR SDK, Unity Plugin, Unreal Engine Plugin. На сайте можно создать профиль разработчика, используя аккаунты Steam, Facebook или Google Plus. Инструменты разработчика можно скачать и без регистрации. На сайте UE4 есть подробная документация об использовании шлема Vive. Отмечу только, что со шлемом можно работать через Blueprints. Чтобы работать с Vive из Unity, надо скачать и установить плагин. OpenVR SDK представляет собой открытый API, независимый от движка, то есть его можно использовать в любых проектах. Исходный код OpenVR выложен в открытый доступ на GitHub.
OpenVR представляет собой игру, с которой можно взаимодействовать посредством виртуальной реальности независимо от аппаратного обеспечения. Таким образом, для этого подойдет и Rift. OpenVR можно обновить независимо от игры, использующей этот API, для включения поддержки новых аппаратных и программных возможностей. API реализован как набор классов с чисто виртуальными функциями. Кроме того, с помощью OpenVR можно разрабатывать новые драйверы, но это уже тема отдельного разговора.
StarVR не имеет самостоятельных SDK, поэтому будем надеяться, что программировать приложения и игры для него можно будет с помощью открытых SDK вроде OpenVR.
Ко второму типу устройств VR относятся множество других гарнитур, среди которых Avegant Glyph, Razer OSVR, Zeiss VR One, Virus VR, FOVE VR. В статье мы отметили только наиболее популярные и интересные — как в техническом, так и в программном плане.
Третий тип
Как мы говорили выше, HoloLens представляет собой мини-компьютер с Windows 10 на борту. Для программирования HoloLens используется Windows 10, Visual Studio 2015 (со вторым обновлением) и установленным Windows SDK, который, кроме всего прочего, включает эмулятор для HoloLens. Подобно эмулятору для Windows Phone, эмулятор для HoloLens исполняется как виртуальное устройство в Hyper-V. К слову, можно использовать другую версию Windows, однако версии ниже не смогут полностью раскрыть весь потенциал, поскольку, например, DirectX 12 работает только в «десятке».
Приложения для HoloLens — это UWP-приложения. Windows предоставляет набор из шести фундаментальных блоков для построения HoloLens-приложений: мировые координаты, управление взглядом, ввод с помощью жестов, голосовое управление, пространственный звук, пространственная картография. Взаимодействие с HoloLens происходит с помощью этих шести блоков. Голограммы строятся на основе света и звука, что также зависит от визуализации.
Поддержка HoloLens присутствует в Unity 5.4. Чтобы запустить игру, построенную в Unity на эмуляторе (и/или устройстве) HoloLens, надо эту игру экспортировать из Unity, открыть ее проект в VS и уже оттуда выполнить игру. Но сегодня мы об этом говорить не будем. Unity — основное средство для построения приложений дополненной реальности.
Заключение
Сегодня мы рассмотрели семь наиболее заслуживающих внимания гарнитур виртуальной реальности. Мы разобрали их аппаратную составляющую, софт, лежащий в их основе, и средства разработки для этих замечательных устройств. Вдобавок многие современные игровые движки (Unity 3D, Unreal Engine 4, Torque 3D) умеют работать с виртуальной реальностью и соответствующими девайсами, позволяя строить немыслимые доселе миры. Пока только Microsoft создала для своего HoloLens эмулятор, который можно использовать для тестирования разрабатываемых приложений; в следующей статье мы с тобой поговорим об этом.
Подходящие видеоадаптеры
По сравнению с обычным компьютером с одним монитором очки виртуальной реальности предъявляют к видеоадаптеру утроенные требования к производительности. Чтобы покупатели не ломали головы над характеристиками, Nvidia и AMD помечают такие могучие видюхи фразой «VR Ready».