Development & Build
To create this project we had to start by building a physical table-top surface that would house both the tracking equipment and computing components in a cabinet-style container. We were fortunate enough to have the help of a renowned industrial designer, Jason Sauers, who assisted us in conceptualizing and building our final iteration of the Sociable Table. With the tables constraints in mind, our four developers then went to work on programming the tracking and interaction software, eventually creating an accurate and fun way for patrons to socialize amongst each other.
1. The Technology and Build of the Table
When making the physical structure, there was a lot of different technology we used to make our program run on the table. The technology and build consisted of:
- 2 Sony Playstation 3 Eye cameras (with UV filters removed)
- Adjustable infrared LED rear illumination system
- Front Surface Mirror
- Series of high flow computer fans, exhaust
- Short-throw DLP projector
- High performance server (Flash and reacTIVision)
- 3/4" Plexiglas surface w/ Kodak print film overlay
2. Programming the Interface
Before the surface-top structure was built, we had already decided on our tracking technology, reacTIVision. Once that was settled, there existed much debate as to whether Flash or Processing should be used for the visualzation and UI rendering. Our primary and secondary attempts at Processing made our developers realize the stability of the programming language. However, Processing wasn't flexible enough for the interaction we wanted to achieve. In the end we decided to go with Flash for our rendering and interaction needs.
Simply put, every cup has a unique fiducial (barcode) on the bottom, facing down. When a patron places the cup down, the camera picks up the image and translates that data to UDP network packet information. Our Flash client on the other side of the application outputs the information assigned to that fiducial as a visual representation. The information Flash recieves from the server is then translated into real-time XML data, which in turn is also consumed by Flash. The application is capable of tracking two forms of input because of our implementation of custom Java libraries which support finger interactions on the table.