Маленький пользователь большого интерактивного пола

Интерактивный пол «Мелководные рыбки»

3 сентября 2016 года во Владивостоке на острове Русский открылся научно-образовательный комплекс Приморский океанариум. Эксклюзивно для океанариума был разработан интерактивный пол «Мелководные рыбки». Данную работу в отличие от сотни подобных проектов, выгодно отличают внушительные размеры и качество визуализации. Изображение на пол проецируется при помощи четырёх проекторов. Площадь изображения 4 на 10 метров. Взаимодействие с пользователем строится на работе четырёх 3d камер.

Для трэкинга движущихся объектов в сцене был написан отдельный модуль на языке C++. Он использует инфракрасную картинку с камер, несколько хитрых алгоритмов отслеживания движущихся объектов и специальный алгоритм разметки (венгерский алгоритм). Для синхронизации нескольких камер между собой и вычисления положения камер относительно отображаемой поверхности был написан специальный модуль калибровки. Он использует широко известные методы калибровки на основе распознавания шаблона в виде шахматной доски.

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

Что касается взаимодействия с пользователем, то здесь всё просто. Как только система камер видит человека, к нему в тот же момент подплывают рыбки и начинают кружить вокруг него, следуя за ним куда бы он не пошёл.

Модуль трэкинга и калибровки был интегрирован в Unity в качестве плагина, посредством преобразования неуправляемого кода на C++ в управляемый на C# (.Net marshalling). Данный модуль представляет ядро системы интерактивного пола, которое впоследствии было повторно использовано в других подобных системах (интерактивные полы «KRAVETS» и «Дельфины»).

  • C++
  • OpenCV
  • C#
  • Unity
  • Kinect
  • Interactive Floor
  • Object Tracking
  • Depth Camera Calibration