Ты в 3D от третьего лица: Oculus Go + Raspberry Pi

    image
    КДПВ

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

    И решили мы мозг наш слегка потроллить:

    • картинку отдать в 3D, пусть будет немножко погружения
    • убрать мышки, джойстики и все такое — просто рулим своим телом
    • камера закреплена сзади-сверху на спине и перемещается вместе с человеком

    О результатах этого веселого эксперимента я и решил сегодня рассказать.

    image
    Примеры видов от третьего лица в компьютерных игрушках

    Железо


    Стереокамера получилась из двух широкоугольных камер для малины (Waveshare G), платы StereoPi и Raspberry Pi Compute Module 3. Для компактной упаковки был напечатан корпус на 3D принтере и на лазерном резаке сделана пластина для крепления камер.

    image

    Снизу приклеили эпоксидкой гайку как ответку для крепления на штатив. Также сделана простая конструкция для размещения камеры в нужном ракурсе (трубы ПВХ, треугольная основа — вспененный полистирол). Благородства конструкции придала покраска жидкой резиной из баллончика «антигравий».

    image
    Устройство в корпусе с гайкой под штатив и крепеж на спину

    Софт


    Софт под эту затею пилил Серега Gol, впервые попробовав на зуб кодинг под Oculus Go. В итоге самым простым решением оказалось сделать обычное приложение под Android, и засунуть его в Oculus Go в девелоперском режиме. Приложение пытается в локалке найти стереокамеру и, если находит, то автоматом начинает показывать с нее картинку. Разумеется еще остались нюансы для допила (типа поддержки джойстика и другие мелочи), но для текущего теста хватило и такой реализации.

    Чтобы картинку могли наблюдать еще и окружающие, а не только человек в Oculus, в ту-же сеть был подключен ноутбук, отображавший видео. На нем использовали утилитку scrcpy, перекинув подключение окулусов с USB шнурка на сетевое.

    В итоге окружающие могли видеть такую стереопару:

    image

    На борту малины работает наше приложение. По части видео оно берет у raspivid захваченную стереокартинку и шлет в эфир. Попутно выполняет множество сервисных функций типа автобнаружения в сети и подхвата настроек через админку.

    Небольшое видео с испытаний:


    Выводы:


    • Это весело. Реально весело.
    • Наш мозг — великая сила. Несколько десятков секунд — и мы себя уже вполне неплохо чувствуем в другой реальности.
    • Первые секунды людей надо страховать от падений. Не у всех адаптация происходит одинаково легко и быстро.
    Поделиться публикацией
    Комментарии 39
      0
      Вот похожий проект — несколько энтузиастов из Польши в 2014 году сотворили гаджет, привносящий виртуальную реальность в реальную жизнь — вид от третьего лица. Они применили Oculus Rift с парой стереокамер GoPro, которые поворачиваются согласно командам джойстика в вашей руке.

        +1
        Да, знаем про похожие эксперименты. Это уже полноценный AR получается, у нас цель была просто лайвстрим получить. А вообще на алиэкспрессе по словам типа 3rd person view можно найти серийные крепления камер сзади-сверху для гопрошек и других смотрелок.
        +1
        Было бы интересно посмотреть видео где идет сравнение движений человека в реале и движений персонажа в виртуальной реальности. Мы видим человека, а что видит человек?)
          0
          Ну в нашем случае персонаж и есть человек — компьютерной графики нет. Он просто видит себя со стороны. На видео я иногда снимал ноутбук, на котором шла трансляция того-же видео, что человек получал в Oculus Go. Оно дает представление о том, что видит игрок.
            +3
            Не знаю, что имел ввиду предыдущий комментатор, но лично мне показалось, что камера закреплена не очень жёстко (болтается), изменяется центр тяжести, плюс таки есть некоторая задержка картинки, то есть:
            1. болтающаяся камера при неподвижном теле вводит дисбаланс в картнику, из-за чего снижается скорость движений (человек [под]сознательно ждёт стабилизации)
            2. задержка картинки (пусть и доли секунды) снижает точность, из-за чего нет корректирования движений в реальном времени, отсюда эта неуклюжесть (усиливаемая изменившимся центром тяжести) и замедленность движений

            Так что да, было бы интересно сравнить что делает человек через камеру со стороны, как на видео, и что он видит через камеру в виде двух рядом расположенных картинок (да, я понимаю, что угол съёмки будет разный) с синхронизацией по времени, а не по действиям. Имею ввиду, не окажется ли, что человек уже сжал кулак, а перед глазами у него ещё раскрытая ладонь?
              0
              Да, мне тоже потом народ говорил что надо было синхронно записывать картинку с камер и на видео ее в уголке показывать, чтобы были видны движения человека и то что он видит.
              В данном случае картинка шла по WiFi, это добавляло задержку около 0,1 секунды. Можно сделать вариант с передачей по проводу, тогда задержки практически нет (сотые доли секунды).
              Ну и камеру мы сознательно закрепили на спине, а не на голове сзади, хотя такой вариант рассматривали. Цель была избежать постоянных резких движений камеры, это добавляет дискомфорта в ощущения.
          +1
          Пробовал с закрепленной камерой — привык сразу же.
          А вот когда одновременно управляешь и камерой и своими ногами, есть огромные проблемы. Предпринимал несколько попыток и постоянно путался: вместо того, чтобы переместить камеру в сторону, мог сделать шаг. Или вместо того, чтобы идти, вращал камеру. Для мозга это очень сложно.
            +1
            Читал про энтузиаста который с похожей приспособой заперся в квартире и пытался прожить не снимая неделю.
            Вроде дня через 3 прервал эксперимент по причине что крыша начинает отъезжать.
              +2
              Вы наверное про вот эту статью habr.com/post/376743 юзера hidoba говорите. Сильный тест, согласен!
              0
              Как вы считаете, можно ли удешевить проект использовав телефон и обычный кардборд, к примеру вместо очков окулуса?
                0
                Второй вопрос, есть ли ощутимая задержка при передаче видео, мешает ли это ощущать тело/пространство?
                  +1
                  Так считайте что он уже удешевлен — приложение изначально под Андроид писалось, и именно в кардборде и тестировалось.
                  UPD> Насчет второго вопроса про задержку — сейчас около 0,1 секунды. Уменьшить можно только исключив вайфай и передавая картинку по проводам. Придется серьезно кодить, но в принципе реально. Нужно будет Raspberry соединить шнурком USB с телефоном и включить поддержку обмена данными.
                    0
                    Спасибо! А какие планы у проекта? Я правильно понимаю, что опенсорс в ближайшее время не планируется?
                      +1
                      Эммм… ну если вы на сайт проекта глянете, то у нас и железо опенсорсное будет, и базовый софт. Сейчас к краудфандингу вот готовимся. Возможно какие-то кастомные разработки, которые под заказчиков делались, открыть не сможем, но стартовые вещи — откроем.
                        0
                        Супер, удачи в краудфандинге!
                  0
                  Где можно попробовать?
                    0
                    А что именно попробовать?
                      0
                      Походить с такой штукой за спиной
                        0
                        Ну у меня она сейчас в Питере, можно договориться и встретиться. В Москве у Гола тоже есть связка стереопи и Окулус, но нету такой штуки на спину.
                          0
                          Я в москве, жаль.
                            0
                            Ну как тут тесты закончу — закину наспинную часть устройства в Москву, а там можно и с Серегой договориться встретиться.
                              0
                              Было бы круто
                            +1

                            А и Питере хотите показать такую связку общественности? Я могу обеспечить стенд в зоне VR на Game Planet СКК в конце ноября. Выглядит очень интересно.

                              0
                              Думаю имеет смысл как минимум встретиться и попить кофе. Давайте в личке спишемся.
                      +4
                      Идея крутая. Но вынесите камеру вправо или влево от центральной оси туловища (как-раз как это сделано во многих играх). А то голова закрывает пространство прямо перед испытуемым.
                        +1
                        Есть одно большое отличие компьютерной игры от вашего прототипа — стабилизация. Когда игрок поворачивает своего персонажа или бежит, то камера не двигается и не дёргается по сути. В вашем же прототипа если человек наклонил корпус или изменил его положение, то весь мир «улетел» в другой pov, что конечно же сбивает с толку на раз два любой мозг.

                        Интереснее было бы реализовать именно систему стабилизации камеры относительно человека и расчёты для предугадывания следующего движения, ритма и всего остального.
                          0
                          они попробовали
                          Follow me

                          вполне успешно
                          0

                          Думаю, было бы неплохо реализовать это с использованием дрона. Тогда камера может летать за головой плавно во время ее поворотов. Как это и сделано в играх от 3 лица.

                            0
                            Вам доводилось видеть следы винтов среднего коптера на пальцах, руках и голове человека? Есть фотки на форумах радиомоделистов. Способен рассечь кожу и мясо до кости. Лично я бы, скажем так, повременил с таким применением до выхода безопасности дронов при полетах вблизи препятствий на новый уровень.
                              0

                              Думаю, можно использовать это вне помещений и надеть соответствующую защиту. Также, необязательно дрону летать на таком малом расстоянии, как у сабжа.

                                0
                                Затея вообще хорошая, но опасная если речь именно о близком положении и «виде от третьего лица». Если дрону подальше держаться — да, есть готовые и неплохие решения типа AirDog, когда дрон за вами следует. Но это немножко выходит за рамки нашего текущего эксперимента и тянет на достаточно большую исследовательскую работу. :-)
                                  0

                                  Согласен. В дальнем положении будет совсем другой смысл и применение.
                                  В любом случае, желаю вам успехов!

                            0
                            А какая получилась задержка между камерой и Oculus? Кармак на одном из выступлений говорил, что именно задержка (больше 20 мс) очень сильно влияет на вестибулярный аппарат.
                            0
                            приветствую. какое будет разрешение файла при записи на sd?..
                              0
                              По умолчанию стоит HD (1280x720).
                              0

                              А есть где посмотреть 3д видео, то что на экране ноута мелькает? Чисто ради интереса интересуюсь

                                0
                                Там запись не вели, нам важнее реакцию людей было увидеть. Если хотите глянуть на пример видео — вот недавно трансляцию рыбок на ютуб делали через 4Г модем, запись трансляции тут:
                                  0

                                  Спасибо, покосоглазил, хорошее стерео, косяков по синхрону не заметил, обычно это больше всего раздражает. А рыбка Пикассо вообще моя любимая, однажды поймал такую рукой, как она расчирикалась возмущённо! ( мне никто не верит) пришлось отпустить

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое