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 захваченную стереокартинку и шлет в эфир. Попутно выполняет множество сервисных функций типа автобнаружения в сети и подхвата настроек через админку.

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


Выводы:


  • Это весело. Реально весело.
  • Наш мозг — великая сила. Несколько десятков секунд — и мы себя уже вполне неплохо чувствуем в другой реальности.
  • Первые секунды людей надо страховать от падений. Не у всех адаптация происходит одинаково легко и быстро.

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


  1. test3d
    06.11.2018 11:23

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


    1. Realizator Автор
      06.11.2018 11:28

      Да, знаем про похожие эксперименты. Это уже полноценный AR получается, у нас цель была просто лайвстрим получить. А вообще на алиэкспрессе по словам типа 3rd person view можно найти серийные крепления камер сзади-сверху для гопрошек и других смотрелок.


  1. Kate1313
    06.11.2018 11:33

    Было бы интересно посмотреть видео где идет сравнение движений человека в реале и движений персонажа в виртуальной реальности. Мы видим человека, а что видит человек?)


    1. Realizator Автор
      06.11.2018 11:34

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


      1. justK
        06.11.2018 13:16
        +1

        Не знаю, что имел ввиду предыдущий комментатор, но лично мне показалось, что камера закреплена не очень жёстко (болтается), изменяется центр тяжести, плюс таки есть некоторая задержка картинки, то есть:
        1. болтающаяся камера при неподвижном теле вводит дисбаланс в картнику, из-за чего снижается скорость движений (человек [под]сознательно ждёт стабилизации)
        2. задержка картинки (пусть и доли секунды) снижает точность, из-за чего нет корректирования движений в реальном времени, отсюда эта неуклюжесть (усиливаемая изменившимся центром тяжести) и замедленность движений

        Так что да, было бы интересно сравнить что делает человек через камеру со стороны, как на видео, и что он видит через камеру в виде двух рядом расположенных картинок (да, я понимаю, что угол съёмки будет разный) с синхронизацией по времени, а не по действиям. Имею ввиду, не окажется ли, что человек уже сжал кулак, а перед глазами у него ещё раскрытая ладонь?


        1. Realizator Автор
          06.11.2018 13:26

          Да, мне тоже потом народ говорил что надо было синхронно записывать картинку с камер и на видео ее в уголке показывать, чтобы были видны движения человека и то что он видит.
          В данном случае картинка шла по WiFi, это добавляло задержку около 0,1 секунды. Можно сделать вариант с передачей по проводу, тогда задержки практически нет (сотые доли секунды).
          Ну и камеру мы сознательно закрепили на спине, а не на голове сзади, хотя такой вариант рассматривали. Цель была избежать постоянных резких движений камеры, это добавляет дискомфорта в ощущения.


  1. OnYourLips
    06.11.2018 13:04

    Пробовал с закрепленной камерой — привык сразу же.
    А вот когда одновременно управляешь и камерой и своими ногами, есть огромные проблемы. Предпринимал несколько попыток и постоянно путался: вместо того, чтобы переместить камеру в сторону, мог сделать шаг. Или вместо того, чтобы идти, вращал камеру. Для мозга это очень сложно.


  1. 9660
    06.11.2018 13:30

    Читал про энтузиаста который с похожей приспособой заперся в квартире и пытался прожить не снимая неделю.
    Вроде дня через 3 прервал эксперимент по причине что крыша начинает отъезжать.


    1. Realizator Автор
      06.11.2018 13:35

      Вы наверное про вот эту статью habr.com/post/376743 юзера hidoba говорите. Сильный тест, согласен!


  1. AreD
    06.11.2018 15:59

    Как вы считаете, можно ли удешевить проект использовав телефон и обычный кардборд, к примеру вместо очков окулуса?


    1. AreD
      06.11.2018 16:01

      Второй вопрос, есть ли ощутимая задержка при передаче видео, мешает ли это ощущать тело/пространство?


    1. Realizator Автор
      06.11.2018 16:02
      +1

      Так считайте что он уже удешевлен — приложение изначально под Андроид писалось, и именно в кардборде и тестировалось.
      UPD> Насчет второго вопроса про задержку — сейчас около 0,1 секунды. Уменьшить можно только исключив вайфай и передавая картинку по проводам. Придется серьезно кодить, но в принципе реально. Нужно будет Raspberry соединить шнурком USB с телефоном и включить поддержку обмена данными.


      1. AreD
        06.11.2018 16:10

        Спасибо! А какие планы у проекта? Я правильно понимаю, что опенсорс в ближайшее время не планируется?


        1. Realizator Автор
          06.11.2018 16:17

          Эммм… ну если вы на сайт проекта глянете, то у нас и железо опенсорсное будет, и базовый софт. Сейчас к краудфандингу вот готовимся. Возможно какие-то кастомные разработки, которые под заказчиков делались, открыть не сможем, но стартовые вещи — откроем.


          1. AreD
            06.11.2018 16:38

            Супер, удачи в краудфандинге!


  1. vvzvlad
    06.11.2018 16:47

    Где можно попробовать?


    1. Realizator Автор
      06.11.2018 16:49

      А что именно попробовать?


      1. vvzvlad
        06.11.2018 16:50

        Походить с такой штукой за спиной


        1. Realizator Автор
          06.11.2018 16:52

          Ну у меня она сейчас в Питере, можно договориться и встретиться. В Москве у Гола тоже есть связка стереопи и Окулус, но нету такой штуки на спину.


          1. vvzvlad
            06.11.2018 16:54

            Я в москве, жаль.


            1. Realizator Автор
              06.11.2018 17:09

              Ну как тут тесты закончу — закину наспинную часть устройства в Москву, а там можно и с Серегой договориться встретиться.


              1. vvzvlad
                06.11.2018 17:48

                Было бы круто


          1. Ellanorsh
            06.11.2018 18:42

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


            1. Realizator Автор
              06.11.2018 19:03

              Думаю имеет смысл как минимум встретиться и попить кофе. Давайте в личке спишемся.


  1. IGR2014
    06.11.2018 17:37
    +1

    Идея крутая. Но вынесите камеру вправо или влево от центральной оси туловища (как-раз как это сделано во многих играх). А то голова закрывает пространство прямо перед испытуемым.


  1. bano-notit
    06.11.2018 20:02
    +1

    Есть одно большое отличие компьютерной игры от вашего прототипа — стабилизация. Когда игрок поворачивает своего персонажа или бежит, то камера не двигается и не дёргается по сути. В вашем же прототипа если человек наклонил корпус или изменил его положение, то весь мир «улетел» в другой pov, что конечно же сбивает с толку на раз два любой мозг.

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


    1. Stepanya
      07.11.2018 20:49

      они попробовали

      Follow me

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


  1. Dolbe
    08.11.2018 13:08

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


    1. Realizator Автор
      08.11.2018 14:28

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


      1. Dolbe
        08.11.2018 17:48

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


        1. Realizator Автор
          08.11.2018 18:07

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


          1. Dolbe
            08.11.2018 19:19

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