Final version for GSoC 2008...

...to be found in repo. "Of course" not everything has been implemented as planned but basic starters for majority of functions have been introduced. So... there is muuuuch more to be done later - since I plan to slowly continue to develop more and more advanced options.


Main Menu

I decided to go ahead and introduce the Main Menu on application's area. It's going to be a tricky one since everything is tricky in case of multi-touch applications. This one can be in a few states:
1. 2. 3. 4. 5.

1. idle (semitransparent)
2. "on-touch-over" (highlighted) - e.g. when some blob moved from outside
3. "on-touch-press" (highlighted and expanded) - new blob has been created within the button area
4. "on-touch-out" (expanded but not highlighted) - blob goes off the button or dies - after 3. took place
5. "on-touch-press" of first option ("Create a new rectangle"):

On state 5. - the other hand can draw a shape of rectangle which becomes a rectangular object in world of "physics". When 5. is released - the main menu goes to the state 1.

Tweener (caurina) is used for menu visual effects.


Vacations vs. updates...

... anyway, new code in repo. Fixed some problems with TUIO on box2D.


First tests...

... are demonstrating multi-touch coordinates transferred to Flash app. and visualized as circles and list of coordinates. The app. is using them as source of user's actions input. Some fine tuning is yet necessary like defining of unmovable objects etc.


Physical context of use

Table's design gives an ability to change the angle between table-top and frame from horizontal to vertical setup with a continuum of intermediary stages (e.g. 30º, 60º etc.).

When positioned vertically (90º) the table-top induces a context of gravity working top-down (vertically). It can help introducing a dynamic gravity factor dependent on physical context of use. It might be interesting to implement some sensor (resistor’s bar, multi-axis accelerometer or some gyroscopic sensor) checking table-top’s position (the angle between the table-top and the frame from horizontal to vertical setup) and simple software functionality for checking and passing the angle as parameter to the application which would react by changing attributes of the virtual environment (gravity vector). For example changing the angle to 90º position allows the gravity to work vertically (top-down) making the objects falling down to the bottom of the screen. But changing that angle to 0º changes the direction of the gravity and makes it working perpendicularly to the screen – the objects do not fall down anymore but can slide on the whole area of the screen decelerated by a factor of environment’s friction. It’s a feature which can be used to create the application reacting to changes of display’s physical position in real-time, similarly to Newton Virus. All of the above can be used by a special version of this application adapted to portable hand-held computers equipped with position sensors, and work similarly to iPhysics on iPhone.



Hardware + Software

When combined it works like this:

  • a) Table’s metal frame
  • b) Table-top - made of two sheets of acrylic glass and architect paper (working as diffuser for the picture emitted by projector) and two lines of infra-red (IR) Light Emitting Diodes (LED). It's fixed to a metal frame fixed with two hinges to the table’s frame.
  • c) Two lines of IR LEDs - with appropriate power supply
  • d) USB Web-camera with IR filter attached on flexible arm. IR filter is made of overexposed and processed negative film.
  • e) Short-throw projector
  • f) PC with Windows
Video analysis on one hand and Flash applications on the other hand can be quite processor-power consuming. But the video analysis and blob-detection (f) can be easily separated from the user's application (g) so both can be run on separate computers connected with LAN where 'f' will pass only TUIO information to 'g'.


Software part

The software part consist of Flash application which takes the touch coordinates from Flosc which is an open source communication gateway transforming all TUIO (OSC based) standarized UDP communication from e.g. Touchlib (which is a video-analysis software library for reading the touch coordinates on multitouch displays) or from TUIO Simulator to TCP-formatted data for Flash (via Flash's XMLSocket).


Hardware part

The multi-touch table setup is a simple solution in its idea. My table is based on Jeff Han's prototype.

But there are many ideas out there:

Thank you Lars for the photos!


What is Multi-Physics?

The main goal of this project is to create a multi‐touch sensitive application for two‐dimensional graphic visualizations of a few basic concepts of physics (esp. mechanics). It is meant to be used by primary school pupils as a simple educational entertainment tool making them familiar with physics and allowing for certain extent of creativity. Young users can actively participate in the learning process by designing and testing their own simulations in a visually catchy cartoon‐style environment. Therefore the program will fulfill the idea of "learning by playing" and hopefully promote interest in science and technology among children.


Created (tadaaamm!)...

This blog has been created because of my participation in GSoC 2008 programme.