Kinect应用设计思想

动作识别可以说是Kinect应用设计的一大核心

总体上来说,考虑到开发难度、延迟程度、判断精度、用户体验等多方面因素,几乎没有“最好”这一概念,只有“最合适”。

看一下结构图

-------------------------------------------------------------------

【动作识别】

手势

|- 触碰

|- 挥动

|- 触发机制

|- 双手缩放

姿势

|- 关键知识

|- 设计方案

|- 前景与限制

-------------------------------------------------------------------

触碰

首先说的是触碰(可以理解为鼠标的Click,也可以理解为触摸设备的Tap)

触碰多用于按钮的触发,按钮又分为了普通按钮、计时器按钮、磁力按钮、缩放按钮等方案。

普通按钮

普通按钮就像我们日常使用的各种按钮,把它画在一个界面上,然后我们通过判断手(脚也可以lol)和按钮所在的坐标来判断触发。

这就引出来一个误触的问题——我们知道大部分程序的按钮事件其实是OnMouseUp而不是OnMouseDown的,可惜Kinect无法根据坐标轴判断这种状态的差别。

于是,计时器方案就出现了。

计时器

这个方案早期大多是见于XNA的游戏上,只有当用户的手停留在一个按钮上一小段时间后才会触发(大多为1~3秒)。

计时器比较优雅的解决了误触发的问题,但相应的也引入了延时这一特性。

从结果上来说,计时器如果要提供优良的用户体验的话,需要在场景设计上下很大功夫。

因为对计时器而言,连续操作就是噩梦,熟悉操作的用户很容易觉得不便以及烦躁。

所以就计时器而言,可能连“3步法”的设计都太多余了——试着简化为2步吧。

磁力按钮

如果你的应用是面向全世界全年龄段全性别发布的话,往往要考虑多一个问题——用户(特别是小孩)手不够长怎么办?

当然,可能不是手不够长,更有可能的情况是用户懒得伸那么长的手去打成一个操作,或者不屑于提供太精确的动作。

这时候我们就需要一个磁力按钮。

磁力按钮实际上可以看做是一个大按钮套着一个小按钮,小按钮是我们实际的按钮,大按钮则提供一个“隐形”的磁场范围,当用户的手进入到大按钮的磁场里了,这个大按钮就把光标以一个适宜的速度向小按钮中间拖去。这样用户就可以用比较“懒惰”的动作完成一个精准的触发了。

“那我把所有的按钮都替换成磁力计时器按钮就可以了吧?”

当然不行!

因为磁力按钮带来的限制不比方便少。

第一,磁力按钮在UI上的布局必须松散。所谓松散是指最好是沿着画面边沿分散的、松散的排列的。想象一下各位电脑桌面密密麻麻的图标,如果他们还带有磁力的话,那对操控感来说简直是毁灭性的。可能还会发生磁场重叠的情况。

第二,引力强度必须设置得宜。用户希望他的手是被一个按钮轻轻吸引过去的,而不是被一个黑洞卷进去的,更糟糕的是卷进去后还出不来…

第三,在开发难度上,受限于不同的平台,不容易提供一个统一的实现方案。

所以磁力按钮是把双面刃,最好能在合适的平台、需求下才使用。

缩放按钮

缩放按钮是提供给用户和Kinect距离范围较大的时候的一套方案,例如展会或宣传现场等,用户受试探心里影响可能一开始和Kinect距离较远。

这时候在Kinect“眼里”,用户就是很小一个,要碰触到画面角落的按钮比较困难。相应的可以通过放大UI来帮助用户。

这种方案的限制在于,因为UI的大小不是固定的,所以对美工就有了特殊的要求:要么是控制好画面上按钮等设备的间距,使其在放大后依然具有良好的可行性;要么是设计两套UI,对应用户在远处和近处操作时,提供不同的操作方案(如在远处时显示大块图形LOGO为主,近处时显示文字为主)。

所以缩放的方案在设计和实现上都有新的要求,也增加了开发的工作量。

小结

现在我们已经举出了常用的4种按钮,以及它们各自的优、缺点。

     实际使用的方案往往更多,或者是这4种方案的变体、组合体。但是限于篇幅就不再赘述了。

正如之前所说,没有一个“最好的”方案,只能根据应用场景挑选“最合适的”。

     尽管只是一个简单的触碰操作,也可以看出,Kinect应用相比传统的“控件式”程序开发面临了更多的挑战。

     而这些,如果开发人员从用户体验的角度出发考虑使用情形的话,最终产品效果的与未优化时相比,差距会是巨大的。

posted @ 2012-11-27 13:37  代码改编世界  阅读(327)  评论(0编辑  收藏  举报