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


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

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


Выводы:


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




К сожалению, не доступен сервер mySQL