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

Зигмунд Фрейд

Вы когда‑нибудь задумывались о реальности мира за окном? Мы сидим за столом, едим, спим, мы ощущаем только то, что нас окружает. Окно дает нам свет, показывает мир, который говорит нам, что время не стоит на месте, и что мы все там же где были пару минут назад — в своей комнате. Мы подходим к окну, чтобы взглянуть на зеленые деревья, небо, смотрим на мимо проезжающие машины и как в фильме «Начало» крутим волчок, спим ли мы сейчас?

Мы - команда разработчиков из лаборатории RTUITLab. Данный проект разрабатывался в течение предыдущего года и появилось желание о нем рассказать. Возможно у вас появится желание его доработать или предложение внедрить в свою систему.

В данной статье будет рассмотрен вопрос воссоздания системы виртуальной визуализации. Ваш мир за окном скоро перестанет быть реальным!

Если более техническим языком, то проект описывает применение технологий отслеживания положения тела при помощи инфракрасной камеры глубины и перемещение силуэта в виртуальную среду для изменения окружения.

За основу был взят проект с сайта, в частности  репозиторий. Автор предлагает решение под IOS, где необходимая камера глубины, встроеная в iphone. Мы постарались перенести функционал с IOS на OS Windows. Для этого мы изменили архитектуру проекта под китайский аналог камеры глубины компании Orbbec (astra mini pro).

В основе технологий заложен эффект параллакса. Далее пару слов о нем.

Давайте начнем с базового

Рис.1 - 2D-параллакс
Рис.1 - 2D-параллакс

Рассмотрим что представляет из себя параллакс в 2D. У нас есть наблюдаемый объект (Звезда), Фон (красный, белый, синий) и несколько точек обзора (А и Б). При изменении одной точки обзора на другую — будет меняться и то, на каком фоне мы увидим наш объект. Если сделать переход между точками более плавный, с промежуточными состояниями, тогда и объект будет перемешаться плавно с одного фона, проходя через белый фон, на другой.

Этот эффект используется во многих областях, то что я могу сейчас назвать - это измерение расстояния до объекта, маленьких или больших, расстояния до столба или звезды в соседнем созвездии Андромеды.

Но как мы будем применять эту технологию? Мы, как человек — будем точкой обзора, в частности наша голова, и начнем передвигаться по комнате. Нашим наблюдаемым объектом будет экран. При движении головы передвигается виртуальная камера. Ее видимое пространство всегда направлено на одну область, ограниченную вертикальными и горизонтальными рамками.

Демонстрация с камерой orbbec astra pro
Демонстрация с камерой orbbec astra pro

Смотря на экран, создается ощущение глубины, как бы вместо экрана действительно есть еще одно маленькое помещение. С этим можно играться бесконечно, менять объекты, менять размеры экранов, и даже можно использовать обычную веб-камеру. С помощью нее отслеживать лицо и понимать, где оно находится относительно экрана.

С обычной веб-камерой
С обычной веб-камерой
Это я стою перед большим экраном
Это я стою перед большим экраном

Использование 3D-сфер

Занимательно наблюдать за миром с помощью VR-очков, особенно когда еще и видео было записано через 360-камеру. Можно смотреть во все стороны, быть в центре происходящего. Но очки это одно, а что насчет экрана с совершенно реалистичной природой (действительно была бы она еще нереалистичной, когда снята на камеру) или что насчет улицы солнечного города? Тут нам также понадобиться экран размером с окно (но можно и меньше).

От вида человека
От вида человека
Запись экрана
Запись экрана

Применение

Если вы в скором будущем планируете путешествие до другой планеты на пару-тройку лет, или более банально купили квартиру с видом на стену, может стоит задуматься над тем чтобы поставить экран и включить вид на море, горы или лес? или зачем решать сейчас, ведь каждый день можно менять визуализацию за окном.

Запорожских Александр, сотрудник RTUITLab.

Репозиторий, где располагается выше упомянутый проект

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


  1. Yak52
    25.05.2024 11:44
    +1

    Но смотреть одному на экран с видом на море не скучно ... А что со вторым смотрящим?


    1. Alexander_Zaporozhskikh Автор
      25.05.2024 11:44

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


      1. Radisto
        25.05.2024 11:44
        +1

        С боггартом лучше не встречаться в одиночку))) выглядит заманчиво - не голографический экран из фантастики, зато вполне реализуем уже сейчас


  1. Aknodx
    25.05.2024 11:44
    +1

    На мой взгляд это весьма интересная технология для мобильных устройств, но почему то она не идет в широкие массы. В 2014 был выпущен Amazon FireFone со специальными камерами на передней панели, было довольно интересно пользоваться картами города с эффектом паралакса. Если не ошибаюсь к положению наблюдателя была привязана не только визуализация зданий, но и отображение информации на картах (названия улиц, магазинов и т.д.).


    1. Alexander_Zaporozhskikh Автор
      25.05.2024 11:44

      Я однажды тестировал данное устройство у коллеги. Это действительно крутая вещь, сейчас это я заменяю обоями с 4D эффектом, при вращении устройства обои двигаются, создавая объем. Вот таким приложением я пользуюсь: https://trashbox.ru/link/grubl-android


    1. Fhann
      25.05.2024 11:44

      С параллаксом нужно быть осторожнее. При неправильном использовании может быть и тошнота.


  1. alliumnsk
    25.05.2024 11:44
    +1

     отслеживания положения тела при помощи инфракрасной камеры глубины

    Зачем, если нужно только положение глаз?

    Такое бы для 3д-редактора хорошо бы или игр.


    1. Alexander_Zaporozhskikh Автор
      25.05.2024 11:44

      Расстояние между камерой и пользователем может быть в диапазоне от 1 метра до 5. На таком расстоянии нет возможности находить положение глаз, они могут быть слишком маленькими или вообще скрыты. Мы пробовали для создания "магического эффекта" ставить камеру позади пользователя, тогда перед ним был только экран, и тогда глаз не видно, но все работало. Если искать только одну часть тела, например голову, то это менее стабильно, чем понимать положение всего тела. Иногда может получится так, что голова не видна, банально закрыта ладонями. Но знание положения всего тела кратко говоря спасает. + это встроенное в sdk расположение от камеры компании orbbec, поэтому надо пользоваться всем.


    1. Alexander_Zaporozhskikh Автор
      25.05.2024 11:44

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