Release v0.8
Well it really was about damn time. I finally managed to do an official release. Most of the stuff has already been lying around on svn for quite some time but every time I managed to find some time to work on the library I rather fixed bugs or rewrote some stuff than test and put together a new package <.<
Anyway, here is a short rundown of the changes in this release:
- Merged Fiducial code into TuioManager
- Streamlined Mouse and Windows7 dispatcher System -> TuioClient, MouseTuioAdapter, NativeTuioAdapter extending AbstractTuioAdapter
- Renamed org.tuio.TouchEvent into org.tuio.TuioTouchEvent to solve naming conflicts
- Improved gesture performance by utilizing object recycling
- Added the new property "optional" to GestureSteps
- Improved gestures especially zoom & rotate
- Extended and updated documentation
- Added gesture and fiducial examples to the library package
- Improved usability of OSC classes for non internal means.
- Added actual support for TUIO source messages
- Fixed various bugs and hid some new ones
As you can see the release contains quite some refactoring so I will update the HowTos accordingly in the next few days.
If you have any major problems migrating to the new release please let me know.
Season’s Greetings
Hi, I just wanted to give you all a little sign of life and a likely arrival date for the next release which will be somewhere around the end of february I hope.
The release 0.8 will all be about performance(especially for the GestureManager), improved included gestures and further documentation. Johannes Luderschmidt has also created a custom Gesture system based on the library which may also be merged into the release or used to improve the current GestureManager.
You can already see some of the changes by checking out the latest svn version which should be stable.
I hope you all had a nice christmas and have a happy new year
New Articles & Hotfix Release 0.71 with Examples
Good news! I have finally finished the new articles on all the features of the library from the TuioManager to sending OSC messages!
Go check them out in the guides section
I also uploaded a new release of the library to the google code site containing example files for the following:
- TuioManager
- TuioClient
- GestureManager
- TuioDebug
You can also download them separately here. Though you will need 0.71 for them to properly work.
I also generated a new ASDoc from the current release which you can see online here or download from google code.
Have fun checking out the new stuff and let me know if you run into any problems.
Release 0.7
A little later than planned and probably a bit on the buggy side.
Nevertheless here it is with a bunch of shiny new features:
- GestureManager: Gestures based on native GestureEvents + a system to easily create new gestures (-> have a look at this post which explains how it works). Currently a very simple rotate and scale gesture are included.
- Native TouchEvents: are handled like MouseEvents and are dispatched alongside the original TouchEvents if TuioManager.dispatchNativeTouchEvents is set true. There is currently still some kind of namin mixup with the "TouchEvents" but this will be resolved in the next release.
- UDPConnector: For AIR2.0 only
- TCPConnector: now supports binary streams without the additional int. Although this could cause problems with very complex/nested OSCBundles.
- Fiducials: Thanks to Johannes Luderschmidt
- Windows7Touch to Tuio: (commited by Johannes Luderschmidt) - pretty much native TouchEvents to tuio TouchEvents
- Mouse to Touch: (commited by Johannes Luderschmidt) - for easier testing without the need of a touch setup
- Debug utilities: (commited by Johannes Luderschmidt) - for easily creating touch indicators
That's all for now folks.
The next release will be all about performance, a propper asdoc and fixing bugs <.<
I'll also clean up the articles in the guides section so that they fit the 0.7 release.
Since there are no demo files in the 0.7 release yet I'll post a little AIR2.0 Project which will demonstrate the GestureManager after I have cleaned it up.
Have fun trying out the new release and let me know what you think.
How gestures will (probably) work
In this post I'll try to give you an overview on how the gesture stuff in the tuio-as3 library will work so we can get a discussion started on what things to improve or change.
Basically all you have to do is:
-
GestureManager.init(stage, new TuioClient(new UDPConnector()));
That will start dispatching all the standard Gesture included in the library. Though there is no event for dispatching yet ...
That is cool and all but the key feature of the gesture package is that you can easily write your own Gestures based on all types of TuioEvents and TouchEvents that are dispatched by the TuioManager.
To give you a quick example here is the source code of the PressTabGesture:
-
package org.tuio.gestures {
-
[...]
-
public class PressTapGesture extends Gesture {
-
public function PressTapGesture() {
-
this.addStep(new GestureStep(TouchEvent.TOUCH_DOWN, { tuioContainerAlias:"A" } ));
-
this.addStep(new GestureStep(TouchEvent.TOUCH_MOVE, { tuioContainerAlias:"A", die:true } ));
-
this.addStep(new GestureStep(TouchEvent.TOUCH_UP, { tuioContainerAlias:"A", die:true } ));
-
this.addStep(new GestureStep(TouchEvent.TAP, {goto:2} ));
-
}
-
-
trace("press tap " + getTimer());
-
}
-
}
-
}
As you can see all you have to do is specify GestureSteps based on TouchEvents and TuioEvents and override the function dispatchGestureEvent which is called if the last step is reached. In this function you can simply dispatch the gesture's event to the stage or do some additional checks that can't be described with GestureSteps.
To create a GestureStep you have to specify an event type much like when adding an eventlistener. If the GestureStep receives the wanted event it is "saturated" and the next GestureStep is listening for its event. You can also specify an Object to narrow down the accepted events. This Object can currently have the following options:
- targetAlias This is a String that is used as an alias name for the event's target. By using the same targetAlias for different GestureSteps you can make sure that the event was dispatched on the same target.
- tuioContainerAlias This is again a String which if used for different GestureSteps makes sure that the tracked object that generated the event is the same.
- frameIDAlias This is also a String which can be used to make sure that the events were all generated by tracked objects from the same tuio frame. If you use a "!" as the first character the value behind the name will be overwritten if it has already been set. This might be useful within loops. Also a failed match will cause the Gesture to fail unlike the other alias types.
(This isn't fully implemented yet.) - minDelay Sets the minimum delay in ms for the specified event. After this the event is accepted.
- maxDelay Sets the maximum allowed delay in ms for the specified event. After this the gesture fails.
- die If set true the gesture fails if the GestureStep is saturated. GestureSteps that have die set true are optional and if the next GestureStep with die set false is saturated will be skipped.
- goto If set to a value between [1-n° of steps] the next check will occur on the specified GestureStep. This is basically for creating loops e.g. jump to an earlier step after reaching the final step.
One thing I'll probably add is a set of callback functions to the option Object.
After you have written your own Gesture all you have to do is add it to the GestureManager like this:
-
GestureManager.addGesture(new MyGesture());
I hope that I could give a you a nice little overview on how Gestures are going to work and that you like what has been done so far
c & c are welcome and wanted
Update: frameIDAlias should work now
Some news from the development front
I am happy to tell you that Johannes Luderschmidt recently commited a bunch of code for furher legacy package improvements and fiducial handling! There is also an initial implementation of a GestureManager on the svn which already supports a currently quite wonky system of easily specifying custom gestures. So you can check that out if you are interested in a sneek peak on the things to come in future releases or just be reasured that this library is still worked on
During this week I'll also try to post an example project with some very basic gesture action.
Little UDP status update
The current svn revision now has UDP support. This only works with the AIR 2 beta and seems to have some problems on MacOSX.
Thanks to Johannes Luderschmidt and Andy McDonald who both sent me UDPConnector implementations pretty much at the same day xD.
Also important to note is that I made some changes to the package structure since the last release so the ASDoc on the Documentation page won't be reliable. Also the ASDoc compiler seems to have a problem with the new DataSocket class which makes the UDP magic even possible so no ASDoc for the svn version :/
To use the new UDPConnector you have to use code as the following
-
import org.tuio.*;
-
import org.tuio.connectors.UDPConnector;
-
[...]
-
var tc:TuioClient = new TuioClient(new UDPConnector());
-
var tm:TuioManager = new TuioManager(stage, tc);
Have fun
New Release v0.6
At last the v0.6 release is out in the wild! It took a little longer than expected but I ended up adding some stuff like the touchTargetDiscoveryMode that I had planned for a later release at first.
This release is all about events dispatched by the TuioManager. You can read this article to get started wit hthis fancy new class.
I will also update all the older articles in the following days so they make sense again in context of the new release.
I also added a first raw version of the ASDoc to the Documentary section. Right now it is just for overview purposes and there are a lot of things in it that shouldn't and most of the explanations are very short and without any examples or whatsoever.
Now a bit on things to come:
- UDP support: I already received some requests to support the new UDP classes in Air 2.0 and it will definitely be in one of the future releases although I'll probably wait for the Flash CS5 beta. So blame Adobe ...
- Native Multitouch: Another thing tied to the CS5 Beta is the dispatching of the new multitouch events introduced in flash 10.1 but it will be supported sooner or later in a way. Also I might modify the new TouchEvent so that it resembles the actual flash.events.TouchEvent or just use that one instead.
- ASDoc: My major priority right now is cleaning up the ASDoc to a level it is actually usable if you haven't coded a Tuio library yourself xD
- RTMFP: I am still hoping that one day the protocol will be reverse engineered so UDP can also be used in normal flash projects and not just Air.
That's it for now, have fun and please write me if you have any problems or happen to rouse some bugs.
Little progress update
Sorry for the lack of updates but I managed to get some work done over the last few weeks and I am happy to tell you that the latest svn revision already contains most of the stuff I planned implementing for the next release. Especially the new event model!
I'll do a release somewhere around the first week of February and I will also publish another article in the Guides section on how to use the new event model.
So stay tuned and if you can't wait just use the current svn release. It should be pretty stable but there will be some naming changes for classes and events until the final release.
P.S. I am also working on some kind of feature roadmap for the upcoming releases until 1.0 and would like some input on what you'd like to see in the near future?
First release v0.5
I have just uploaded the initial release package of our Tuio as3 library.
The current version number is 0.5 because there are still a lot of 1.0 features missing like the new event model.
You can find all release packages here.
Have fun playing around and tell us about your experience so we can further improve the library.