
Всем привет! Меня зовут Евгений, я разработчик приложения EnJoyTheVR – приложения, которое позволяет погружаться в виртуальную реальность с 6DOF отслеживанием движений головы и рук прямо через ваш смартфон. В этой статье хотел бы рассказать о проекте, его задумке, этапах разработки, а также поделиться положительными и отрицательными моментами.
Сейчас почти каждый знает, что такое VR, но не у всех есть возможность приобрести дорогостоящее оборудование для полного погружения в виртуальную реальность. Уже давно существует такая штука, как Google Cardboard, но большинство приложений, созданных под него, обладают ограниченным функционалом — они предлагают лишь базовое отслеживание головы и зачастую простое взаимодействие. В отличие от них, EnJoyTheVR предоставляет полноценное 6DOF-отслеживание как головы, так и рук, что делает опыт гораздо более реалистичным и насыщенным.
Именно эта идея и легла в основу моего школьного проекта :) Посмотрим, насколько удалось ее реализовать.
Для разработки я выбрал Unity как основную платформу. Она предоставляет простые инструменты для создания приложений с хорошей графикой и оптимизацией (что стало второй важнейшей задачей после реализации отслеживания рук). К тому же Unity позволяет почти без лишних проблем разрабатывать сразу две версии приложения — для Android и iOS. Например, компоненты ARCore и ARKit задействуются одинаково.
Самой сложной задачей оказалось реализовать отслеживание рук. Вдаваться в технические детали не буду, но скажу, что после долгих поисков решения я остановился на свёрточной нейронной сети (CNN). Этот подход позволил добиться довольно точного отслеживания, хотя не идеального.
Далее я модернизировал сцену-пример из официального ассета для разработки VR-приложений XR Interaction Toolkit. К руке был «варварски приклеен» виртуальный контроллер, и управление было переделано под Джой-коны.

После этих доработок я принял участие в своей первой школьной научной конференции, где занял первое место среди 10 и 11 классов. Это стало для меня источником мотивации продолжать работу над проектом.
После полной переработки метода «приклеивания» виртуального контроллера и нескольких экспериментов с различными механиками, стало ясно, что управление одной рукой недостаточно. Я доработал код для поддержки второй руки. К этому моменту приложение выглядело гораздо более функциональным и завершённым по сравнению с его ранними версиями.

Вскоре я решил попробовать свои силы на городской научной конференции «Инженеры будущего», которая проходила в МЭИ. Мой проект стал победителем в категории «3D-моделирование, 3D-печать и VR/AR-технологии».
Чтобы показать, что этот проект можно использовать не только как отдельную игрушку, но и как простой инструмент для портирования VR-игр с других платформ, я за пару летних дней (не без помощи магии декомпиляции) портировал две игры: MineSouls III (с Oculus Quest 2) и Rick and Morty: Virtual Rick-ality (с SteamVR).


Затем было сделано главное меню, настройки, поддержка сторонних уровней и многое другое.

Результатом долгой работы стало VR-приложение с 6DOF-отслеживанием головы и рук, возможностью полноценного взаимодействия с игровым пространством, поддержкой высокогерцовых экранов, возможностью записи видео (как от лица игрока, так и с виртуальной камеры, которую можно закрепить в любом месте), а также встроенным магазином приложений, куда энтузиасты смогут загружать свои игры и приложения.





Кому интересно следить за развитием проекта, можете подписаться на группу ВК :)
P.S. Также в данный момент происходит набор участников для тестирования приложения на различных смартфонах, закрепленный пост в группе ВК
Автор: Zhes