Leap Motion OSD – Qt Sample

在我们做交互界面的过程中,友好的交互是当程序识别到一个手势时,给用户一个可视化的反馈,而不是用控制台打出一句“这是Circle”的文本。
一个好方法就是用OSD层来做。将一个层叠加到当前屏幕上,就像品牌笔记本调节音量或屏幕亮度会出现的可视化提示一样。
lenovo-osd

我们试着用Qt来实现上述功能。
Continue Reading…

BACKGROUND_FRAMES – Leap Motion API

之前在运行Leap Motion官方示例程序的时候,发现一个问题:当程序失去操作系统焦点的时候,程序显示“Focus Lost”并不再接收数据,直到程序取回操作系统焦点。

这里我们发现有两个问题:
1.是程序不再接受来自设备的数据,还是设备不再进行识别?
2.为什么要程序失去操作系统焦点后就停止数据获取了呢?或者是设备停止识别了呢?

这两个问题的重点在于:
1.设备是否暂停识别?还是一直在识别,只是程序暂停从设备获取数据?
2.是否有办法使得程序能在无焦点状态还持续获取数据?
Continue Reading…

Config() Details – Leap Motion API

之前在看Leap Motion的API文档的时候发现一个有趣的问题,就是config()函数的用法。关于Leap Motion的设置都是存储在特定的键(Key)里面的,更改就是更改特定键的键值(Value)。如键Circle手势最小半径(Gesture.Circle.MinRadius)键值就是float型的5.0,单位为mm。
一般情况下是用getFloat/getBool/getInt32/getString获取键值,setFloat/setBool/setInt32/setString设置键值。

有趣的有两点:
1.每次用上述set语句设置后均需要运行save(),该设置才会生效。
2.程序关闭后设置复原回默认值。

为什么说这两点有趣:
1.set语句本身如果有设置功能的话,为什么最后需要一个save呢?如果没有的话,意义何在?
2.程序的设置存储在哪?是作为程序变量?还是文本存储到硬盘?
Continue Reading…