PyMT – A Python Multi-Touch Framework


pymt demo reel from Thomas Hansen on Vimeo.

With PyMT there is a new kid in town for visual multi-touch interaction frameworks, which is based on the scripting language Python and connects to TUIO producers like the Touchlib, reacTIVision or Touchsmart TUIO.

Currently, the most multi-touch applications seem to be implemented in Flash AS3. Flash is relatively easy to learn, offers great possibilities in interactive 2D animation programming and there seem to be of people that at least can make multi-touch things work in Flash by plugging modules together. Python has not so far been common for interaction or animation but for rapid, high-performance and professional “underneath the hood” server development.
Continue reading “PyMT – A Python Multi-Touch Framework”

Touchsmart TUIO from Georg Kaindl

Georg Kaindl, the guy who has written the Mac OS X multi-touch tracking software Touché has published Touchsmart TUIO. This is a piece of software, which produces TUIO messages on HP Touchsmart PCs (and any other NextWindow frame).

Thus, existing TUIO (multi-touch) applications like those from the nuigroup (which you can e.g. find here) can be used on HP Touchsmarts. Additionally, it allows the development of multi-touch applications on a small and reliable device. However, HP Touchsmart and the NextWindow frames have some drawbacks, which Georg presents us in his video about Touchsmart TUIO (with his charming Vienna accent):


Touchsmart TUIO Demo from Georg Kaindl on Vimeo.

TUIO 1.0 Protocol Specification

Finally, the Universitat Pompeu Fabra in Barcelona guys around Martin Kaltenbrunner released a special page for TUIO that explains the protocol in more detail and with some examples. In the past it had not been that easy to extract all necessary information from their TUIO paper.

Just in time, before they will hopefully release TUIO 2, which supports OSC via TCP and thus a support for Flash without the need for Flosc or Toxy as Flash does not support native connections via UDP sockets.

Additionally, they moved the reacTIVision site to sourceforge, which seems to be a step that makes sense.

Vispol Tangible and Multi-Touch Interface Video

This video presents the results of the Bachelor thesis of Frederic Friess at the Vislab of the Wiesbaden University of Applied Sciences. I have been Frederic’s mentor under the guidance of Prof. Dr. Doerner for this work.
Continue reading “Vispol Tangible and Multi-Touch Interface Video”

Pf Design Media Installation

I helped Sensory Minds to build an interactive multi-touch and tangible media installation for a Werkschau of students from the Hochschule Pforzheim. Graduates are represented by objects that are provided with a fiducial on the underside and a picture of the work on the upper side. As soon as the object is added to the table, pictures of the student’s projects will be loaded and circularly arranged around the object. Those pictures can be browsed via multi-touch. If a user taps on a project picture all pictures to this project will be loaded and will be arranged on a second circle around the project images.
Continue reading “Pf Design Media Installation”

Vispol Multi-Touch Video

This video demonstrates the fundamental multi-touch functions of Vispol. The demonstrated functions contain the creation and modification of persons and objects and connections. Additionally, examples for the application of the layout functions in Vispol are being introduced.

Click here for further information about Vispol.

You can try out the mouse version of Vispol here.

My Master’s Thesis Project: Vispol – An Interactive Scenario Visualization

As part of my Master’s thesis with the title Conception, Realization and Evaluation of Multi-Touch Interfaces for Interactive Visualizations, there has been the goal to create an interactive visualization that can be used via multi-touch. Finally, this visualization should be evaluated, which means it should be thoroughly tested and there should be some results in numbers.

Videos:

Vispol on Sensory Mind‘s Round Table:

Paper: Read a summary about Vispol in this paper.

Desktop version:
Try out Vispol (Flash necessary)

Background information:
This multi-touch visualization should be different from the common multi-touch use cases scaling/rotating images and zooming in maps. Additionally, this visualization should have a dedicated use and should not just be a prototype that demoes basic multi-touch capabilities.

Vispol
Vispol

I have been intrigued by the interactive visualizations in Minority Report, which provided natural user interaction for profiling activities of a policeman in future.
Continue reading “My Master’s Thesis Project: Vispol – An Interactive Scenario Visualization”

A few Multi-Touch Impressions from the Cebit ’09

At the Telekom booth there has been a long kind of bar multi-touch table. It is not rectangular but a curve. However, the quality of the projection has not been even as the creators of this table used different projections and did not get the projection illumination even. The application has been quite simple: Photo and video browsing. Anyway, it is looking very impressive:

Cebit 09: Multi-Touch Bar at the Booth of the Telekom

Cebit 09: Multi-Touch Bar at the Booth of the Telekom 2

Cebit 09: Multi-Touch Bar at the Booth of the Telekom 3
Continue reading “A few Multi-Touch Impressions from the Cebit ’09”

Setting the Width and Height of an Object in Flex to 100% with Actionscript

Today I had the problem that i needed to create a Flex element by hand and apply to it a width of 100%.

This goes as easy with MXML as this
<mx:VBox id="wrapperBox"><mx:UIComponent width="100%" height="100%" id="elementXYZ"></mx:VBox>

But you cannot code this to achieve the adding programatically with Actionscript:
var elementXYZ:UIComponent = new UIComponent();
elementXYZ.width = "100%";
elementXYZ.height = "100%";
wrapperBox.addChild(elementXYZ);

Instead, you have to use this:
var elementXYZ:UIComponent = new UIComponent();
elementXYZ.percentWidth = 100;
elementXYZ.percentHeight = 100;
wrapperBox.addChild(elementXYZ);