Author Topic: TuioGateway: 开源的 TUIO 辅助调试工具  (Read 13888 times)

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
TuioGateway: 开源的 TUIO 辅助调试工具
« on: March 13, 2013, 11:21:27 PM »
TuioGateway
Cinder based multi-purpose TUIO server/client

开发语言:C++/Cinder

有三种工作模式

  • Client,仅仅接收TUIO信号,并进行可视化,可以取代Ventuz来验证TUIO信号
  • Server,仅仅发送TUIO信号,输入源可以是鼠标,也可以是 Win7 的触摸消息,可以用来测试Ventuz
  • Gateway,转发器,接收TUIO信号,并且以OSC信号 /cursor/x 与 /cursor/y 进行转发



https://github.com/vinjn/Cinder-portfolio/tree/master/_cinder_app/TuioGateway

目录下的 TuioGateway.exe 为可执行文件,无任何依赖,运行即可
« Last Edit: March 30, 2014, 08:14:23 PM by vinjn »

zhouxiangming14

  • Newbie
  • *
  • Posts: 10
Re: 开源的 TUIO 小工具 TuioGateway
« Reply #1 on: March 14, 2013, 12:42:10 PM »
赞一个,还有我想请教一下Vinjn大神。屏幕坐标系(x1,y1)要怎么转换成TUIO的x,y呢?我看到指导上面写着:
x = sensor_x / sensor_width
y = sensor_y / sensor_height

意思是要:x = x1/1366.0f;
               y = y1/768.0f;
(PC分辨率是1366*768的,x1,y1已经是屏幕下的坐标了)
可是怎么调试都无法通过。

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: 开源的 TUIO 小工具 TuioGateway
« Reply #2 on: March 14, 2013, 01:04:27 PM »
sensor_width/height 指的是 sensor 可以检测到的最大宽度/高度,单位是毫米
Kinect 的这个值分别是4000毫米和3000毫米左右,Leap Motion的值分别是400毫米和400毫米左右
同样的,sensor_x /y 的单位也是毫米

和屏幕的分辨率毫无关系

zhouxiangming14

  • Newbie
  • *
  • Posts: 10
Re: 开源的 TUIO 小工具 TuioGateway
« Reply #3 on: March 14, 2013, 01:25:57 PM »
谢谢您的解答,我还是不明白,鼠标的位置坐标x1,y1(屏幕坐标系)是怎样转化成TUIO中的x,y的呢?TUIO的x,y的范围是在0-1之间的浮点数。

zhouxiangming14

  • Newbie
  • *
  • Posts: 10
Re: 开源的 TUIO 小工具 TuioGateway
« Reply #4 on: March 14, 2013, 01:44:57 PM »
我不知道我理解的对不对,传感器中的坐标x1,y1.根据传感器的边界w1,h1.被映射到0--1之间,变为X2,y2.然后x2,y2复制给TUIO协议中的x,y.TUIOsever接收到这个信息后,再根据自己所在的坐标边界(如显示器的分辨率ScreenWidth,ScreenHeight)把0--1之间的坐标放大,映射到实际的坐标系中。。。。。这样理解对吗,谢谢~

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: 开源的 TUIO 小工具 TuioGateway
« Reply #5 on: March 14, 2013, 01:52:48 PM »
你的理解是对的
需要补充一点,传感器的边界其实并不都是  (0, sensor_width) X (0, sensor_height)
更准确的说,是,( sensor_min_x, sensor_max_x) X (sensor_min_y, sensor_max_y)
存在最小可检测范围和最大可检测范围

zhouxiangming14

  • Newbie
  • *
  • Posts: 10
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #6 on: March 15, 2013, 01:38:01 PM »
vinjn大神,还是有问题,我的代码如下,打开TuioGateway,运行下列代码,TuioGateway就崩了,BSQSimulator也没有反应。我是想获得鼠标的坐标,然后把这个坐标用TUIO发送。您能告诉我哪里不对吗?thanks

#include "ofxOscSender.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <string>

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "Winmm.lib")

#define ADDRESS "127.0.0.1"
#define PORT 3333

using namespace osc;

class OSCApp
{
public:


   OSCApp()
   {
      frameSeq = 0;

   }

   ~OSCApp()
   {
   }

   void connectSocket(std::string ip_address, int port)
   {         
      tuioSender.setup(ip_address, port);
      printf("Socket Initialized : %s Port : %i\n\n", ip_address.c_str(), port);
      frameSeq = 0;
   }

   void frame()
   {
      ofxOscBundle bundle;

      ofxOscMessage alive;
      {
      alive.setAddress("/tuio/2Dcur");
      alive.addStringArg("alive");
      }

      ofxOscMessage fseq;
      {
      fseq.setAddress( "/tuio/2Dcur" );
      fseq.addStringArg( "fseq" );
      fseq.addIntArg(frameSeq);
      }

      POINT pt;
      GetCursorPos(&pt);  //获得当前鼠标坐标

      ofxOscMessage m;
      m.setAddress( "/tuio/2Dcur" );
      m.addStringArg("set");
      m.addIntArg(1);            // id
      m.addFloatArg(pt.x/1366.0f);   // x
      m.addFloatArg(pt.y/768.0f);   // y
      // TOTO
      m.addFloatArg(0.0f);         // dX
      m.addFloatArg(0.0f);         // dY
      m.addFloatArg(0.0f);      // maccel
      bundle.addMessage(m);

      alive.addIntArg(1);            // add blob to list of ALL active IDs
      bundle.addMessage(alive);
      bundle.addMessage(fseq);
      tuioSender.sendBundle(bundle);

      frameSeq ++;
      if(frameSeq>65530)
      frameSeq = 0;
   }

private:
   ofxOscSender tuioSender;
   int frameSeq;
};


int main()
{
   OSCApp app;
   std::string ip_address = ADDRESS;
   int port = PORT;
   app.connectSocket(ip_address, port);

   cvNamedWindow("touch",CV_WINDOW_AUTOSIZE  );
   int key;
   while(1)
   {
      key=cvWaitKey(1);
      if(key==27) break;
      
      app.frame();
      Sleep(10);
   }
   cvDestroyWindow("touch");
   return 0;
}

leezhm

  • Newbie
  • *
  • Posts: 10
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #7 on: April 02, 2013, 10:24:50 PM »
TuioGateway
Cinder based multi-purpose TUIO server/client

开发语言:C++/Cinder

有三种工作模式

  • Client,仅仅接收TUIO信号,并进行可视化,可以取代Ventuz来验证TUIO信号
  • Server,仅仅发送TUIO信号,输入源可以是鼠标,也可以是 Win7 的触摸消息,可以用来测试Ventuz
  • Gateway,转发器,接收TUIO信号,并且以OSC信号 /cursor/x 与 /cursor/y 进行转发



https://github.com/vinjn/TuioGateway

根目录下的 TuioGateway.exe 为可执行文件,无任何依赖,运行即可

Nice job. 我每次调试ventuz,我都是用ipad上的touchpad软件。

btw, 你也再做ventuz的项目么?

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #8 on: April 02, 2013, 11:09:12 PM »
btw, 你也再做ventuz的项目么?

我不做Ventuz,只给Ventuz开发些工具/C# Script,不涉及内容制作
今后还会写点 Ventuz 上使用的 DirectX9 的 Shader

leezhm

  • Newbie
  • *
  • Posts: 10
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #9 on: April 03, 2013, 12:19:39 AM »

我不做Ventuz,只给Ventuz开发些工具/C# Script,不涉及内容制作
今后还会写点 Ventuz 上使用的 DirectX9 的 Shader
[/quote]

哦, 我也一样啊。跟公司的一个设计师合作,我也是主要些ventuz的c#脚本的。你们ventuz项目主要用于那些啊

o2co2

  • Newbie
  • *
  • Posts: 12
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #10 on: May 21, 2013, 07:32:07 PM »
 不好意思我想问问,是不是没有开源Server端啊?

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #11 on: May 21, 2013, 10:49:57 PM »
开源了
你没仔细看代码

o2co2

  • Newbie
  • *
  • Posts: 12
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #12 on: May 22, 2013, 12:01:25 AM »
不好意思!恕我愚钝,我仔细看了代码,确实没有鼠标点击发生tuio消息给其他客户端的代码。请大侠指点。

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #13 on: May 22, 2013, 12:19:01 AM »
不好意思!恕我愚钝,我仔细看了代码,确实没有鼠标点击发生tuio消息给其他客户端的代码。请大侠指点。

额,是我的失误,没有放最新版,现在更新了

o2co2

  • Newbie
  • *
  • Posts: 12
Re: TuioGateway: 开源的 TUIO 辅助调试工具
« Reply #14 on: May 22, 2013, 11:04:15 AM »
不好意思!恕我愚钝,我仔细看了代码,确实没有鼠标点击发生tuio消息给其他客户端的代码。请大侠指点。

额,是我的失误,没有放最新版,现在更新了

谢谢大神的分享

Tags: