КДПВ
Во многих компьютерных игрушках есть вид от 3-го лица. Камера находится сзади-сверху и вы видите либо героя целиком, либо его верхнюю часть. В играх мы быстро привыкаем к такому режиму и спокойно творим свои игровые делишки. Мозг отлично понимает что это просто картинка на экране, и зазря дергать вестибулярный аппарат не считает нужным.
И решили мы мозг наш слегка потроллить:
- картинку отдать в 3D, пусть будет немножко погружения
- убрать мышки, джойстики и все такое — просто рулим своим телом
- камера закреплена сзади-сверху на спине и перемещается вместе с человеком
О результатах этого веселого эксперимента я и решил сегодня рассказать.
Примеры видов от третьего лица в компьютерных игрушках
Железо
Стереокамера получилась из двух широкоугольных камер для малины (Waveshare G), платы StereoPi и Raspberry Pi Compute Module 3. Для компактной упаковки был напечатан корпус на 3D принтере и на лазерном резаке сделана пластина для крепления камер.
Снизу приклеили эпоксидкой гайку как ответку для крепления на штатив. Также сделана простая конструкция для размещения камеры в нужном ракурсе (трубы ПВХ, треугольная основа — вспененный полистирол). Благородства конструкции придала покраска жидкой резиной из баллончика «антигравий».
Устройство в корпусе с гайкой под штатив и крепеж на спину
Софт
Софт под эту затею пилил Серега Gol, впервые попробовав на зуб кодинг под Oculus Go. В итоге самым простым решением оказалось сделать обычное приложение под Android, и засунуть его в Oculus Go в девелоперском режиме. Приложение пытается в локалке найти стереокамеру и, если находит, то автоматом начинает показывать с нее картинку. Разумеется еще остались нюансы для допила (типа поддержки джойстика и другие мелочи), но для текущего теста хватило и такой реализации.
Чтобы картинку могли наблюдать еще и окружающие, а не только человек в Oculus, в ту-же сеть был подключен ноутбук, отображавший видео. На нем использовали утилитку scrcpy, перекинув подключение окулусов с USB шнурка на сетевое.
В итоге окружающие могли видеть такую стереопару:
На борту малины работает наше приложение. По части видео оно берет у raspivid захваченную стереокартинку и шлет в эфир. Попутно выполняет множество сервисных функций типа автобнаружения в сети и подхвата настроек через админку.
Небольшое видео с испытаний:
Выводы:
- Это весело. Реально весело.
- Наш мозг — великая сила. Несколько десятков секунд — и мы себя уже вполне неплохо чувствуем в другой реальности.
- Первые секунды людей надо страховать от падений. Не у всех адаптация происходит одинаково легко и быстро.
test3d
Вот похожий проект — несколько энтузиастов из Польши в 2014 году сотворили гаджет, привносящий виртуальную реальность в реальную жизнь — вид от третьего лица. Они применили Oculus Rift с парой стереокамер GoPro, которые поворачиваются согласно командам джойстика в вашей руке.
Realizator Автор
Да, знаем про похожие эксперименты. Это уже полноценный AR получается, у нас цель была просто лайвстрим получить. А вообще на алиэкспрессе по словам типа 3rd person view можно найти серийные крепления камер сзади-сверху для гопрошек и других смотрелок.
Kate1313
Было бы интересно посмотреть видео где идет сравнение движений человека в реале и движений персонажа в виртуальной реальности. Мы видим человека, а что видит человек?)
Realizator Автор
Ну в нашем случае персонаж и есть человек — компьютерной графики нет. Он просто видит себя со стороны. На видео я иногда снимал ноутбук, на котором шла трансляция того-же видео, что человек получал в Oculus Go. Оно дает представление о том, что видит игрок.
justK
Не знаю, что имел ввиду предыдущий комментатор, но лично мне показалось, что камера закреплена не очень жёстко (болтается), изменяется центр тяжести, плюс таки есть некоторая задержка картинки, то есть:
1. болтающаяся камера при неподвижном теле вводит дисбаланс в картнику, из-за чего снижается скорость движений (человек [под]сознательно ждёт стабилизации)
2. задержка картинки (пусть и доли секунды) снижает точность, из-за чего нет корректирования движений в реальном времени, отсюда эта неуклюжесть (усиливаемая изменившимся центром тяжести) и замедленность движений
Так что да, было бы интересно сравнить что делает человек через камеру со стороны, как на видео, и что он видит через камеру в виде двух рядом расположенных картинок (да, я понимаю, что угол съёмки будет разный) с синхронизацией по времени, а не по действиям. Имею ввиду, не окажется ли, что человек уже сжал кулак, а перед глазами у него ещё раскрытая ладонь?
Realizator Автор
Да, мне тоже потом народ говорил что надо было синхронно записывать картинку с камер и на видео ее в уголке показывать, чтобы были видны движения человека и то что он видит.
В данном случае картинка шла по WiFi, это добавляло задержку около 0,1 секунды. Можно сделать вариант с передачей по проводу, тогда задержки практически нет (сотые доли секунды).
Ну и камеру мы сознательно закрепили на спине, а не на голове сзади, хотя такой вариант рассматривали. Цель была избежать постоянных резких движений камеры, это добавляет дискомфорта в ощущения.
OnYourLips
Пробовал с закрепленной камерой — привык сразу же.
А вот когда одновременно управляешь и камерой и своими ногами, есть огромные проблемы. Предпринимал несколько попыток и постоянно путался: вместо того, чтобы переместить камеру в сторону, мог сделать шаг. Или вместо того, чтобы идти, вращал камеру. Для мозга это очень сложно.
9660
Читал про энтузиаста который с похожей приспособой заперся в квартире и пытался прожить не снимая неделю.
Вроде дня через 3 прервал эксперимент по причине что крыша начинает отъезжать.
Realizator Автор
Вы наверное про вот эту статью habr.com/post/376743 юзера hidoba говорите. Сильный тест, согласен!
AreD
Как вы считаете, можно ли удешевить проект использовав телефон и обычный кардборд, к примеру вместо очков окулуса?
AreD
Второй вопрос, есть ли ощутимая задержка при передаче видео, мешает ли это ощущать тело/пространство?
Realizator Автор
Так считайте что он уже удешевлен — приложение изначально под Андроид писалось, и именно в кардборде и тестировалось.
UPD> Насчет второго вопроса про задержку — сейчас около 0,1 секунды. Уменьшить можно только исключив вайфай и передавая картинку по проводам. Придется серьезно кодить, но в принципе реально. Нужно будет Raspberry соединить шнурком USB с телефоном и включить поддержку обмена данными.
AreD
Спасибо! А какие планы у проекта? Я правильно понимаю, что опенсорс в ближайшее время не планируется?
Realizator Автор
Эммм… ну если вы на сайт проекта глянете, то у нас и железо опенсорсное будет, и базовый софт. Сейчас к краудфандингу вот готовимся. Возможно какие-то кастомные разработки, которые под заказчиков делались, открыть не сможем, но стартовые вещи — откроем.
AreD
Супер, удачи в краудфандинге!
vvzvlad
Где можно попробовать?
Realizator Автор
А что именно попробовать?
vvzvlad
Походить с такой штукой за спиной
Realizator Автор
Ну у меня она сейчас в Питере, можно договориться и встретиться. В Москве у Гола тоже есть связка стереопи и Окулус, но нету такой штуки на спину.
vvzvlad
Я в москве, жаль.
Realizator Автор
Ну как тут тесты закончу — закину наспинную часть устройства в Москву, а там можно и с Серегой договориться встретиться.
vvzvlad
Было бы круто
Ellanorsh
А и Питере хотите показать такую связку общественности? Я могу обеспечить стенд в зоне VR на Game Planet СКК в конце ноября. Выглядит очень интересно.
Realizator Автор
Думаю имеет смысл как минимум встретиться и попить кофе. Давайте в личке спишемся.
IGR2014
Идея крутая. Но вынесите камеру вправо или влево от центральной оси туловища (как-раз как это сделано во многих играх). А то голова закрывает пространство прямо перед испытуемым.
bano-notit
Есть одно большое отличие компьютерной игры от вашего прототипа — стабилизация. Когда игрок поворачивает своего персонажа или бежит, то камера не двигается и не дёргается по сути. В вашем же прототипа если человек наклонил корпус или изменил его положение, то весь мир «улетел» в другой pov, что конечно же сбивает с толку на раз два любой мозг.
Интереснее было бы реализовать именно систему стабилизации камеры относительно человека и расчёты для предугадывания следующего движения, ритма и всего остального.
Stepanya
они попробовали
вполне успешно
Dolbe
Думаю, было бы неплохо реализовать это с использованием дрона. Тогда камера может летать за головой плавно во время ее поворотов. Как это и сделано в играх от 3 лица.
Realizator Автор
Вам доводилось видеть следы винтов среднего коптера на пальцах, руках и голове человека? Есть фотки на форумах радиомоделистов. Способен рассечь кожу и мясо до кости. Лично я бы, скажем так, повременил с таким применением до выхода безопасности дронов при полетах вблизи препятствий на новый уровень.
Dolbe
Думаю, можно использовать это вне помещений и надеть соответствующую защиту. Также, необязательно дрону летать на таком малом расстоянии, как у сабжа.
Realizator Автор
Затея вообще хорошая, но опасная если речь именно о близком положении и «виде от третьего лица». Если дрону подальше держаться — да, есть готовые и неплохие решения типа AirDog, когда дрон за вами следует. Но это немножко выходит за рамки нашего текущего эксперимента и тянет на достаточно большую исследовательскую работу. :-)
Dolbe
Согласен. В дальнем положении будет совсем другой смысл и применение.
В любом случае, желаю вам успехов!