Author Topic: 新手请教 卡在Kinect输入模拟touch事件这一问题上了,C#的话应该怎样发送Tuio信息  (Read 11360 times)

Grocean

  • Newbie
  • *
  • Posts: 10
俺现在想实现这么一个功能,用Kinect对双手进行跟踪,手握拳时能发出一个touchdown事件(松开自然就是touchup),以让双拳进行双点触摸的操作,从而玩转以触摸操作为基础的WPF界面。

这对我这个新手来说有俩难题,一是怎么让Kinect识别握拳这一动作,二就是如何只通过位置模拟此处的触摸事件

SDK 1.7的出现让第一个问题迎刃而解
但第二个问题实在是找不到头绪

这些日子看了Vinjn大神的帖子,他在双手玩水果忍者的楼里提到“将手的坐标以 TUIO 形式进行广播”
接着我又在顶贴里面看到了send_tuio_msg() 函数的例子
所以想问下:
1.C#里面如何发出TUIO信息呢? ofxOsc似乎只适用于C++
2.发送的时候都要送出哪些参数呢? 除了手的位置以外似乎还有设备ID什么的?
3.发送出TUIO信息后又该怎么办呢? Vinjn大神说“同时运行第三方的 BsqSimulator 将 TUIO 信号转换为 Win7 的 WM_TOUCH 多点触摸消息”,这是不是就跟代码没关系了?

希望各路高手,尤其是@Vinjn大神能给俺指点迷津,感激不尽

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
1.C#里面如何发出TUIO信息呢? ofxOsc似乎只适用于C++
C# 也有自己的 OSC 库,找找吧

2.发送的时候都要送出哪些参数呢? 除了手的位置以外似乎还有设备ID什么的?
参数与send_tuio_msg()中一致,推荐你再去看下 TUIO 的协议,这样就知道为什么需要发送这些信息

3.发送出TUIO信息后又该怎么办呢? Vinjn大神说“同时运行第三方的 BsqSimulator 将 TUIO 信号转换为 Win7 的 WM_TOUCH 多点触摸消息”,这是不是就跟代码没关系了?
要转换成 WM_TOUCH 是因为水果忍者支持 WM_TOUCH


另一种思路:

你是使用 C# 的,那 SDK 1.7 对你是个好消息,因为它实现了很多 WPF 的控件,是专门为 Kinect 定制的。
所以你可以脱离 TUIO 这一层,直接在 WPF 里操控 Kinect,官方提供了一些 Sample,慢慢研究研究。
« Last Edit: April 02, 2013, 09:29:44 PM by vinjn »

Grocean

  • Newbie
  • *
  • Posts: 10
非常感谢 我再研究研究去

leezhm

  • Newbie
  • *
  • Posts: 10
1. 首先Vinjin大神是正解,Kinect直接有WPF的支持Demo,可以研究下。

2. http://www.tuio.org/?software上面有tuio的C# SDK,自己去下载,然后按需封装TUIO消息,并发送即可。

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587

Grocean

  • Newbie
  • *
  • Posts: 10
谢谢 我看了看 那些按钮控件都是响应的click事件 跟用鼠标垫一样了
我还是觉得您的发送tuio消息的方法最好(虽然我还没搞定自己的。。。)

vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
谢谢 我看了看 那些按钮控件都是响应的click事件 跟用鼠标垫一样了
我还是觉得您的发送tuio消息的方法最好(虽然我还没搞定自己的。。。)

说说你的想法,为什么觉得tuio好

Grocean

  • Newbie
  • *
  • Posts: 10
目前我是想为将来的 以触控操作为基础的WPF界面加上Kinect操作,用两只手(握拳)模拟两点触摸,代码都是直接加在原来的wpf代码里

但是我最终希望能把这个Kinect操作的部分分离出来
就像Kinect应用开发实战的空气鼠标切水果那样,通过一个单独的程序实现手控制光标和左键按下

我希望自己也能做出这么一个“单独的程序",这样就相当于在原来的触摸应用(比如水果忍者啊、愤怒的小鸟啊)之上再盖上一层看不见的Kinect交互层
这样无论是用Kinect玩游戏还是用Kinect操作某个触摸用户界面,都可以直接实现,而不用修改原来WPF界面的代码

这样我觉得还是发送tuio消息比较好。。。

俺表达能力比较差不知道说清楚了没 :'(


vinjn

  • SuperManager
  • Hero Member
  • *****
  • Posts: 587
但是我最终希望能把这个Kinect操作的部分分离出来
我希望自己也能做出这么一个“单独的程序",这样就相当于在原来的触摸应用(比如水果忍者啊、愤怒的小鸟啊)之上再盖上一层看不见的Kinect交互层
这样无论是用Kinect玩游戏还是用Kinect操作某个触摸用户界面,都可以直接实现,而不用修改原来WPF界面的代码

可以,这也是我一贯的思路,及硬件输入与内容表现分离
我的CamServer和KinectOsc都是这样的产品

我开源了一个项目 KinServer,便是希望把这个思路做到极致
https://github.com/vinjn/KinServer
但是一直没时间做进一步开发

Grocean

  • Newbie
  • *
  • Posts: 10
我记得我还下了这个项目。。

唉 现在只恨自己技艺不精
等明儿回学校继续研究

Tags: