Всем привет! Меня зовут Евгений, я разработчик приложения 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. Также в данный момент происходит набор участников для тестирования приложения на различных смартфонах, закрепленный пост в группе ВК
Комментарии (12)
orefkov
20.10.2024 18:50Для отслеживания рук применяется камера смартфона или отдельная? Если смартфона, то как решается отслеживание контроллеров вне поля зрения?
Zhes Автор
20.10.2024 18:50Для отслеживания рук используется камера смартфона, для базовых задач, по типу нажать на кнопку, пострелять из оружия, махнуть рукой, угла камеры вполне достаточно. Однако в планах есть возможность использования датчиков контроллеров, использования дополнительного смартфона как базовой станции для помощи отслеживания.
alexxxdevelop
20.10.2024 18:50После слов "мой школьный проект" стало все ясно. Где код реализации? Где инструкции для людей с похожей задачей? Статья просто похвастаться какой я молодец? Думаю мама оценит какой ты молодец
Zhes Автор
20.10.2024 18:50Пожалуйста, выражайте свои мысли яснее. Пока я вижу только какую-то шаблонность мышления и негатив с вашей стороны. Ученики школы делают школьный проект, студенты - дипломную работу, в чём тут трудность понимания?
Нет стандарта написания данных работ, поэтому и нет кодов в статье.
Более того, манера подачи с вашей стороны явно не дружелюбная, для чего это? Если у вас есть вопросы, вы вежливо можете их задать. Самоутверждаться в критике "школьного проекта" - это такое себе занятие, явно не красит. Вашей маме это точно не понравится).
Для всех заинтересовавшихся могу сказать, что проект был создан на чистом энтузиазме, статья написана с целью информирования людей о наличии возможности использовать VR без дорогих шлемов.alexxxdevelop
20.10.2024 18:50Вопросы есть выше. Повторяю для особо одаренных. Где код реализации? Где инструкции для людей с похожей задачей? Я таким же образом могу сказать, что в unity есть куча всяких плюшек, но как их использовать - идите догадывайтесь сами. Из-за этого ценность статьи - 0. По крайней мере для тегов unity и разработки игр. Ключевое слово - РАЗРАБОТКА. А такое, как в этой статье, надо публиковать в разделе стартапов. Здесь мы ожидаем полезную информацию, а не самопиар
RiSilver
20.10.2024 18:50Объективности ради, здравое зерно в критике alexxxdevelop есть. Это технический ресурс, и люди, читающие статью надеются увидеть технические детали а не только красивые скриншоты. В статье вы пишите:
Вдаваться в технические детали не буду, но скажу, что после долгих поисков решения я остановился на свёрточной нейронной сети (CNN).
В этом и кроется главная ошибка. Именно это и нужно раскрывать, нужны детали. Как вы пришли к этому решению, какие сложности возникли, как вы их преодолели? Ссылки на библиотеки, статьи, исходный код - было бы идеально.
Без этой информации, это - самопиар, и для него есть отдельный хаб.
IKStantin
Оффтопик, но близко к теме. Существуют ли какие-то VR-шлемы для смартфона, в которых диапазон регулировки фокуса позволяет нормально фокусироваться людям с ДАЛЬНОЗОРКОСТЬЮ, хотя бы уровня +2D? Поддевать очки крайне неудобно получается.
У меня есть парочка древних VR-шлемов, в обоих только близорукость компенсируется.
Zhes Автор
Честно говоря, я особо не вникал в эту тему, всегда казалось, что у людей с дальнозоркостью проблем быть не должно. Интернет тоже не дал однозначного ответа. У меня близорукость, я просто надеваю шлем поверх очков :(
JohnTR
Мне бы ваши проблемы, с правым глазом +0.9 и левым -4.0..
IKStantin
у меня какая-то "Smarterra VR Sound Max" - у нее до +0.5..-4 как раз примерно диапазон. Надо пробовать, но на первый взгляд как раз почти подойдет.
Doman
Можно взять относительно недорогой Quest 3S, к которому разные вендоры делают линзы практически на любые диоптрии (например).
IKStantin
Относительность - она такая относительность! Это он относительно других автономных шлемов недорогой, а относительно смартфоновых шлемов очень даже недешевый. Но я о нем думаю часто.
А пока обхожусь просто очками под шлем, но неудобно и плохо всё держится и цепляется