Всем привет! Меня зовут Евгений, я разработчик приложения 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).

MineSouls III
MineSouls III
Rick and Morty: Virtual Rick-ality
Rick and Morty: Virtual Rick-ality

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

Главное меню
Главное меню

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

Селфи на виртуальную камеру
Селфи на виртуальную камеру
Сама виртуальная камера
Сама виртуальная камера
Магазин приложений
Магазин приложений
Смена окружения в лобби
Смена окружения в лобби
Фейерверк (* ^ ω ^)
Фейерверк (* ^ ω ^)

Кому интересно следить за развитием проекта, можете подписаться на группу ВК :)

https://vk.com/enjoythevr

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

Комментарии (12)


  1. IKStantin
    20.10.2024 18:50

    Оффтопик, но близко к теме. Существуют ли какие-то VR-шлемы для смартфона, в которых диапазон регулировки фокуса позволяет нормально фокусироваться людям с ДАЛЬНОЗОРКОСТЬЮ, хотя бы уровня +2D? Поддевать очки крайне неудобно получается.
    У меня есть парочка древних VR-шлемов, в обоих только близорукость компенсируется.


    1. Zhes Автор
      20.10.2024 18:50

      Честно говоря, я особо не вникал в эту тему, всегда казалось, что у людей с дальнозоркостью проблем быть не должно. Интернет тоже не дал однозначного ответа. У меня близорукость, я просто надеваю шлем поверх очков :(


    1. JohnTR
      20.10.2024 18:50

      Мне бы ваши проблемы, с правым глазом +0.9 и левым -4.0..


      1. IKStantin
        20.10.2024 18:50

        у меня какая-то "Smarterra VR Sound Max" - у нее до +0.5..-4 как раз примерно диапазон. Надо пробовать, но на первый взгляд как раз почти подойдет.


    1. Doman
      20.10.2024 18:50

      Можно взять относительно недорогой Quest 3S, к которому разные вендоры делают линзы практически на любые диоптрии (например).


      1. IKStantin
        20.10.2024 18:50

        Относительность - она такая относительность! Это он относительно других автономных шлемов недорогой, а относительно смартфоновых шлемов очень даже недешевый. Но я о нем думаю часто.
        А пока обхожусь просто очками под шлем, но неудобно и плохо всё держится и цепляется


  1. orefkov
    20.10.2024 18:50

    Для отслеживания рук применяется камера смартфона или отдельная? Если смартфона, то как решается отслеживание контроллеров вне поля зрения?


    1. Zhes Автор
      20.10.2024 18:50

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


  1. alexxxdevelop
    20.10.2024 18:50

    После слов "мой школьный проект" стало все ясно. Где код реализации? Где инструкции для людей с похожей задачей? Статья просто похвастаться какой я молодец? Думаю мама оценит какой ты молодец


    1. Zhes Автор
      20.10.2024 18:50

      Пожалуйста, выражайте свои мысли яснее. Пока я вижу только какую-то шаблонность мышления и негатив с вашей стороны. Ученики школы делают школьный проект, студенты - дипломную работу, в чём тут трудность понимания?
      Нет стандарта написания данных работ, поэтому и нет кодов в статье.
      Более того, манера подачи с вашей стороны явно не дружелюбная, для чего это? Если у вас есть вопросы, вы вежливо можете их задать. Самоутверждаться в критике "школьного проекта" - это такое себе занятие, явно не красит. Вашей маме это точно не понравится).
      Для всех заинтересовавшихся могу сказать, что проект был создан на чистом энтузиазме, статья написана с целью информирования людей о наличии возможности использовать VR без дорогих шлемов.


      1. alexxxdevelop
        20.10.2024 18:50

        Вопросы есть выше. Повторяю для особо одаренных. Где код реализации? Где инструкции для людей с похожей задачей? Я таким же образом могу сказать, что в unity есть куча всяких плюшек, но как их использовать - идите догадывайтесь сами. Из-за этого ценность статьи - 0. По крайней мере для тегов unity и разработки игр. Ключевое слово - РАЗРАБОТКА. А такое, как в этой статье, надо публиковать в разделе стартапов. Здесь мы ожидаем полезную информацию, а не самопиар


      1. RiSilver
        20.10.2024 18:50

        Объективности ради, здравое зерно в критике alexxxdevelop есть. Это технический ресурс, и люди, читающие статью надеются увидеть технические детали а не только красивые скриншоты. В статье вы пишите:

        Вдаваться в технические детали не буду, но скажу, что после долгих поисков решения я остановился на свёрточной нейронной сети (CNN).

        В этом и кроется главная ошибка. Именно это и нужно раскрывать, нужны детали. Как вы пришли к этому решению, какие сложности возникли, как вы их преодолели? Ссылки на библиотеки, статьи, исходный код - было бы идеально.
        Без этой информации, это - самопиар, и для него есть отдельный хаб.