前言:
一直想做一个简单的教程关于如何使用flash客户端(exe或swf)的TUIO模拟器。如果你不知道TUIO协议是什么,请先阅读本文TUIO介绍的部分.
需求环境:
1、flash player 9++(一般浏览器都会带的),没有的请下载。
2、Java Runtime 6+,没有的请下载。
说明:
1>、下载附件并解压到你的桌面;
2>、打开Flosc.jar,点击start;
3>、打开Simulator.jar
4>、打开Test.exe;
5>、返回Simulator.jar并且在里面用鼠标画圆,你会在Test.exe里看到相应的效果。可以使用shift+鼠标来模拟多个点触摸(更多信息请参照Simulator里面的帮助文件)。
原理:
基本步骤:
1、TUIO(OSC)数据是从Simulator或者触摸库中的“osc.exe”;
2、FLOSC通道将OSC数据(UDP)转换为XMP(TCP);
3、flash客户端通过XML串口来接收和识别XML数据,并在你的应用程序中渲染鼠标的事件。
注意:
• 主机:localhost -----端口:3000/3333
• TUIO和OSC的数据必须一致
• 需要步骤2的原因是flash不能识别UDP数据,所以我们要转换为TCP
• 直接二值化的方法没有在本教程中涉及,要了解请移步到Binary Socket Connection in flash.
TUIO是什么?
TUIO(Table-Top User Interfaces Objects)是一种简单通用的协议,被设计于特定要求的触摸屏设备人机界面。灵感来自于互连的想法存在于各种表面互动的接口如reacTab或AudioTouch。TUIO协议已经在OpenSound Control上实施,并且可以在支持这种协议任何平台中使用。
简单的说:TUIO是一种格式化OSC数据的标准方法。
了解更多请阅读文章《TUIO Documentation》.
消息语法:
当TUIO应用OSC会使用它的基本语法:
参数:
我们在表面互动界面非常重视的对象属性在这部分的参数定义中反映了出来。每一个对象都会分配一个session ID,非常必要的唯一标识未加标签在连续帧的对象,在这种情况下,多个对象标记为相同的classID同时出现在表面。
其中的一些参数(id、position和angle)直接由传感器获取。其他的(速度、加速度)派生从这些主要参数使用定时信息。计算这些参数在低水平侧的触摸用户接口系统允许一个更高效的计算,因为必要的计时信息不需要被转移到客户端。
参数允许使用下面一组信息:
s sessionID, temporary ob ject ID, int32
i classID, fiducial ID number, int32
x, y, z position, float32, range 0...1
a, b, c angle, float32, range 0..2PI
X, Y ,Z movement vector (motion speed & direction), float32
A, B, C rotation vector (rotation speed & direction), float32
m motion acceleration, float32
r rotation acceleration, float32
P free parameter, type defined by OSC packet header
配置文件:
我们定义一组配置文件,它适用于大多数桌面可触摸的用户界面。这使得物体跟踪和鼠标在在二维表面,在特殊情况下也在桌面上方三维空间表面。如果其中一个预定义的配置文件不满足系统的要求我们还允许所谓的原始资料,发送原始传感器数据,以及自由形式配置文件,它允许一个用户定义的一组参数传送。
2D的互动表面:
3D的互动表面:
自定义的配置文件:
TUIO主页
OSC主页
多点触控TUIO模拟器