Tiny user of a large interactive floor

«Shallow water fish» - interactive floor for Primorsky Aquarium

On September 3, 2016, The Scientific & Educational Centre «Primorsky Aquarium» was opened in Vladivostok on Russky Island. Exclusively for the aquarium an interactive floor «Shallow Water Fish» was developed. This work, unlike hundreds of similar projects, is favorably distinguished by the impressive size and quality of visualization. The image is projected onto the floor using four projectors. The area of the image is 4 by 10 meters. User interaction is based on the work of four 3d cameras.

A separate C++ module was written to track moving objects in the scene. It uses infrared images from cameras, several clever algorithms for tracking moving objects and a special marking algorithm (Hungarian algorithm). To synchronize several cameras with each other and calculate the position of the cameras relative to the displayed surface, a special calibration module was written. It uses well-known checkerboard pattern recognition techniques.

As for graphics, the Unity engine was chosen as a very flexible and convenient editor. In this project, it is also noteworthy that all animations are made programmatically. The behavior of all fish is programmed in a special way. It is the software-generated trajectories and speeds of the fish that make the scene look particularly lively and realistic.

When it comes to user interaction, everything is simple. As soon as the camera system sees the person, fish swim up to him at the same moment and begin to circle around him, following him wherever he goes. As soon as the camera system sees the person, fishes swim up and begin to circle around, following user wherever he goes.

The tracking and calibration module has been integrated into Unity as a plugin by marshalling unmanaged C++ code to managed C# (.Net marshalling). This module represents the core of the interactive floor system, which was subsequently reused in other similar systems («KRAVETS» and «Dolphins» interactive floor).

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