❓ Как освоить разработку приложений AR/VR с нуля
Попробуем разобраться, какие навыки потребуются новичку, чтобы стать востребованным разработчиком приложений виртуальной и дополненной реальности.
Разработка технологий дополненной (AR) и виртуальной реальности (VR) все еще находится в зачаточном состоянии – именно поэтому сейчас идеальное время, чтобы научиться создавать такой контент. Вы можете придумать захватывающие миры и среды с возможностью взаимодействия в трех измерениях. Порог вхождения в эту сферу все еще относительно невысок, однако новичку придется разобраться с 3D-моделированием и сканированием, движками 3D-игр, панорамными фотографиями и видео. Необходимо знание языков C, C++, C# и комплектов для разработки программного обеспечения (SDK). Давайте обо всем по порядку.
Аппаратное обеспечение
Дополненная и виртуальная реальность и вся 3D-разработка в целом требуют производительного оборудования. Если мы посмотрим на требования двух самых популярных платформ VR (HTC Vive и Oculus Rift), то увидим их схожесть. Рекомендуемые технические характеристики компьютера на сегодняшний день таковы:
- Процессор: Intel Core i5-4590 или AMD FX 8350;
- Видеокарта: NVIDIA GeForce GTX 1060 или AMD Radeon RX 480;
- Оперативная память: 8 ГБ;
- Порты: 3x USB 3.0;
- Операционная система: Windows 7 или выше.
Это не означает, что имея процессор i3 или карту GTX 1050 вы не сможете заниматься разработкой. Все зависит от вашего проекта: выше приведены рекомендуемые характеристики. Проверить минимальные требования и убедиться в совместимости вашего оборудования можно здесь.
Устройства виртуальной реальности
Устройства VR/AR классифицируются по степени свободы (DOF или Degrees of freedom), т.е. по способу перемещения объекта. Тут есть два варианта: 3-DOF и 6-DOF. Три степени свободы означают, что вы сможете взаимодействовать с виртуальным миром в трех измерениях (в системе координат X, Y, Z) с помощью головного дисплея (HMD), но не сможете двигаться вперед или назад. С шестью степенями свободы двигаться получится во всех шести направлениях.
Эти устройства поддерживают три степени свободы:
А у этих шесть степеней свободы:
Под каждое устройство используются разные SDK и языки программирования, у них разные ограничения, но есть и общие черты:
- Принципы создания виртуальной реальности.
- Большинство из них совместимы с контроллерами движений для взаимодействия с виртуальным миром.
- Устройства 3-DOF используют смартфоны в качестве закрепленных на голове дисплеев.
- Устройства 6-DOF используют настольные гарнитуры.
На этом этапе нужно выбрать одно или несколько устройств для разработки.
Движки 3D-игр и языки программирования
Опыт предыдущих лет показывает, что чаще всего для разработки продуктов AR/VR используются C# и C/C++. Это справедливо и для основных игровых движков, которые вам нужно изучить:
- Unity – для работы с ним потребуется язык программирования C#.
- Unreal Engine – здесь нужен C++ и язык узлов под названием Blueprints Visual Scripting.
У Unity множество версий с разной стоимостью, но есть и бесплатная. Unreal доступен бесплатно, но требует периодических отчислений за право пользования в размере 5% от валового дохода продукта (после $1,000,000 за игру в календарный квартал). Рекомендуется попробовать оба варианта, чтобы выбрать наиболее подходящий.
3D-модели
Первое, что вам понадобится для разработки AR/VR – это 3D-модели. Есть два варианта: сделать их самостоятельно или использовать готовые шаблоны. Самостоятельное создание моделей – сложный путь, но в конечном итоге он может оказаться самым лучшим и рентабельным. В этом случае вам придется освоить специальные программы. Например, такие:
Для создания собственных моделей стоит освоить и 3D-сканирование. Снятые специальным сканером в реальном мире объекты становятся виртуальной трехмерной моделью. Эти устройства пока не идеальны, но они помогут вам начать работу:
В интернете всегда можно найти и шаблонные 3D-модели:
Этот вариант подходит начинающим разработчикам без навыков.
Веб-разработка и виртуальная реальность
Существует также открытый стандарт WebVR с API JavaScript, позволяющий использовать виртуальную реальность в браузере. Он работает с большинством устройств VR без необходимости подключения дополнительных плагинов. Вы можете проверить наличие поддержки браузера на WebVR Rocks и найти дополнительную информацию на сайте Mozilla VR.
Стоит упомянуть два фреймворка:
- aframe.io предназначен для создания виртуальной реальности с помощью HTML и подхода Entity-Component-System. Он был разработан командой Mozilla VR и предоставляет один из самых эффективных способов разработки контента WebVR.
- React VR – новая библиотека, разработанная в Facebook на основе React и React Native. Она позволяет создавать сайты VR, используя тот же подход декларативных компонентов, что и в привычном нам фреймворке React.
Дополненная реальность
С точки зрения разработки VR и AR очень похожи, поэтому существует понятие смешанной реальности, когда вы взаимодействуете как с физической, так и с виртуальной средой.
Одним из самых популярных инструментов для разработки AR является Vuforia: он доступен для Unity, Android и iOS, предлагает огромное количество функций и поддерживает множество устройств, включая телефоны Tango, head-display, смартфоны, очки, а также специально изготовленные козырьки Microsoft HoloLens.
Проблемы
Первая проблема связана с новизной индустрии AR/VR – существует не так много передовых практик для разработки приложений. Еще один недостаток VR – это укачивание. При длительном использовании устройства у людей может возникнуть дезориентация, вызванная неестественными движениями. Возникает она из-за несоответствия между физическими и визуальными сигналами к действию.
Чтобы стать разработчиком AR/VR, необходимо пройти несколько этапов:
- Выбор платформы. Решите, какими устройствами вы будете пользоваться, на какие платформы ориентироваться и какой игровой движок, SDK или фреймворк предпочтете освоить.
- Обучение. Разберитесь с терминологией. Изучите 3D-моделирование, язык игрового движка, SDK или фреймворка, а также разработку интерфейсов для AR/VR.
- Учебный проект. Хотя большинство приложений AR/VR являются игровыми, есть много областей, на которые можно ориентироваться. Например, образование, визуализация данных, возможности 360°.
- Участие в сообществах. Ходите на встречи, общайтесь в форумах и чатах, переписывайтесь с другими разработчиками и не стесняйтесь задавать вопросы. Главное здесь – практиковаться и набираться опыта.
Несколько полезных ссылок для изучения технологий AR/VR:
- https://unity.com/ru/solutions/ar-and-vr-games – ПО для разработки дополненной и виртуальной реальности;
- https://www.uxofvr.com/ – пользовательский опыт в AR/VR;
- https://github.com/ExtendRealityLtd/VRTK – набор инструментов для VR-разработки в Unity3D;
- https://www.artefactgroup.com/case-studies/storyboard-vr/ – инструмент прототипирования, позволяющий визуализировать опыт в виртуальной реальности;
- Гайд по виртуальным мирам: AR и VR.
Выводы
Технологии AR/VR пока сыроваты. Они имеют массу ограничений, да и оборудование стоит недешево. Тем не менее, потенциал виртуальной и дополненной реальности огромен, а большинство специализирующихся в этой области профессиональных разработчиков не имеет большого опыта. К тому же некоторые из приобретенных в процессе освоения модного направления навыков (например, языки C/C++) можно применить и в других областях программирования. Попробовав, вы ничего не теряете. Удачи!