上海交大新图书馆多点触摸墙
2008年底交大新图书馆开馆,我们为新图书馆搭建了一个60寸的多点触摸墙,但由于一直没有很好的launcher,平时很少开这个互动墙让同学们玩。前几周图书馆催得紧,急中生智,想到可以在CCV里做一个launcher。开启程序时用CreateProcess(),关闭时向系统发一个Alt+F4。看起来效果还不错。目前定义的手势为:十个手指长按1~2秒,则向系统发送Alt+F4消息,可以用如下代码实现:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
keybd_event( VK_MENU,0x38,KEYEVENTF_EXTENDEDKEY | 0,0 );//alt pressed
keybd_event( VK_F4,0x3E,0,0 );//F4 pressed
keybd_event( VK_F4,0x3E,KEYEVENTF_KEYUP,0 );//F4 released
keybd_event( VK_MENU,0x38,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0 );//alt released
现在国内做多点触摸的已经很多了,其实也没有什么复杂的原理,在这里对我们的软硬件系统做个简单介绍,供想自己DIY的朋友们参考。
我们的这个多点触摸墙属于LLP技术,在边上装有红外激光器,通过仔细的调试安装,可使激光束平行并贴近于墙面。于是当手指触摸到墙时,激光打在手指尖上形成一个亮斑。墙的后面是一个红外摄像头,用来检测亮斑。检测到亮斑后,程序计算亮斑的位置,编号,将这些信息发送给相应的应用程序,达到拖动图片,转动地球的多点触摸视觉效果。
从软件上来说,分为两个层次:底层程序负责亮斑的检测与跟踪,并按照OSC或TUIO协议向外发送信息。这部分工作由一个开源社区完成,即NUI Group。该社区提供了一个非常好用的开源软件,Community Core Vision(CCV),可以到这里下载。值得骄傲的是,我也参与了该软件的开发,负责其中FireflyMV相机的驱动支持(我们使用的是Point Grey Research公司的FireflyMV,所以我在视频里选择了A-teens的Firefly作为背景音乐:-) )。上层应用程序负责做各种视觉效果。因为中间有统一的协议,两部分工作可以分开来做。上面视频中展示的一些应用程序大部分都来自于NUI community,比如,其中Community Earth可以到这里下载。或者直接SVN checkout 这个链接http://nuicode.svnrepository.com/svn/community-earth. 视频的后半部分,用多点触摸墙漫游网上世博园,需要依靠另外一个中间软件,TUIO Mouse Driver,它负责将CCV发出的blob信息转变为相应的鼠标动作,比如:一个手指按下后,另一个手指在它左边点一下对应鼠标左键单击,在它右边点一下对应鼠标左键右击。这个软件由我的一个朋友charles开发,可以到这里下载(顺便为他的新公司打个广告,欢迎大家访问他的公司网页)
这周的更新就是这样,如果有感兴趣的朋友需要我这个增加了launcher mode的CCV的代码,可以留言或mail我。
hope you find it useful~