Copyright (c) 2005-2009 Martin Kaltenbrunner. This software is part of reacTIVision, an open source fiducial tracking framework based on computer vision. For further information on the TUIO protocol and framework, please visit TUIO.org
This package contains two demo applications which are able to receive TUIO messages from any TUIO enabled multitouch or object tracking application.
You can use these TUIO client and server demo applications for debugging purposes, and using them as a starting point for the development of you own open source C++ applications implementing the TUIO protocol.
Pressing F1 will toggle FullScreen mode within the TuioDemo, pressing ESC or closing the Window will end the application. Hitting the V key will print the received TUIO events to the console.
Dragging the mouse will generate TUIO cursor events within the SimpleSimulator. Pressing the SHIFT key while clicking, will produce "sticky" cursors. Hitting the V key will print the generated TUIO events to the console.
Keep in mind to make your graphics scalable for the varying screen and window resolutions. A reasonable TUIO application will run in fullscreen mode, although the windowed mode might be useful for debugging purposes or working with the Simulator.
First you need to create an instance of TuioClient. This class is listening to TUIO messages on the specified port and generates higher level messages based on the object events. The method connect(true) will start the TuioClient in a blocking mode, simply calling connect() will start the TuioClient in the background. Call disconnect() in order to stop listening to incoming TUIO messages.
Your application needs to implement the TuioListener interface, and has to be added to the TuioClient in order to receive messages.
A TuioListener needs to implement the following methods:
Typically you will need just the following code to start with:
MyTuioListener listener; // defines a TuioListener TuioClient client(port); // creates the TuioClient client.addTuioListener(&listener); // registers the TuioListener client.connect(); // starts the TuioClient
Each object or cursor is identified with aunique session ID, that is maintained over its lifetime. Additionally each object carries fiducial ID that corresponds to its attached fiducial marker number. The finger ID of the cursor object is always a number in the range of all currently detected cursor blobs.
The TuioObject and TuioCursor references are updated automatically by the TuioClient and are always referencing the same instance over the object lifetime. All the TuioObject and TuioCursor attributes are encapsulated and can be accessed with methods such as getX(), getY() and getAngle() and so on. TuioObject and TuioCursor also have some additional convenience methods for the calculation of distances and angles between objects. The getPath() method returns a Vector of TuioPoint representing the movement path of the object.
Alternatively the TuioClient class contains some methods for the polling of the current object and cursor state. There are methods which return either a list or individual object and cursor objects. The TuioObject and TuioCursor classes have been added as a container which also can be used by external classes.
This package includes a Visual Studio .NET 2003 project and a Linux Makefile for building the two example applications. The Win32 project already includes the necessary libraries. To build the GUI example for Linux make sure you have the SDL, OpenGL and GLUT libraries and header installed on your system.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA
This package uses the oscpack OpenSound Control library, and the SDL graphics library.