NUI /触摸界面的一般注意事项

时间:2011-09-18 17:05:27

标签: kinect multi-touch nui

在过去的几个月里,我一直在研究为各种软件音乐合成器开发基于Kinect的多点触控界面。

我提出的总体策略是以编程方式或(如果可能)算法创建对象以表示软合成器的各种控件。这些应该有;

  • X职位
  • Y位置
  • 高度
  • 宽度
  • MIDI输出通道
  • MIDI数据缩放器(将x-y coords转换为midi值)
我考虑过2种策略用于创建算法是XML描述,并以某种方式在屏幕上拉出东西(即给定一个正在运行的程序,找到所有控件的xycoords)。我不知道如何去做第二个,这就是为什么我用这种特定的技术语言来表达它;)。我可以做一些中间解决方案,比如在控件的角上点击鼠标来生成一个xml文件。我在Flash应用程序中经常看到的另一件事是将屏幕大小放入变量并使用数学来根据屏幕大小构建所有界面对象。请注意,并非必须使对象与屏幕控件的大小相同,或者表示所有屏幕上的对象(有些只是指示符,而不是交互式控件)

其他考虑因素;

鉴于(目前)两组X / Y坐标作为输入(左手和右手),使用它们的最佳选择是什么?我的第一直觉是创建某种焦点测试,其中如果x / y坐标落入接口对象的边界内,则该对象变为活动状态,然后如果它们在一段时间内超出其他较小边界则变为非活动状态。我找到的廉价解决方案是使用左手作为指针/选择器,右边作为控制器,但似乎我可以做更多。我有几个手势解决方案(隐藏马尔科夫链)我可以搞砸。并不是说他们很容易上班,但确实如此,这是我可以看到自己做的事情,给予了足够的激励。

总而言之,问题是

  • 表示接口(必要,因为默认接口始终需要鼠标输入)
  • 选择一个控件
  • 使用两组x / y坐标(旋转/连续控制器)操纵它,或者在开关的情况下,最好使用手势来切换它而不给予/关注。

任何评论,尤其是那些曾在多点触控io / NUI中工作/正在工作的人,都非常感谢。与现有项目和/或一些好的阅读材料(书籍,网站等)的链接将是一个很大的帮助。

1 个答案:

答案 0 :(得分:2)

这里有很多东西。我在微软工作期间处理过很多NUI的事情,让我们看看我们能做些什么......

但首先,我需要让这个小小的烦恼:你说“基于Kinect的多点触控”。那是错的。 Kinect固有地与触摸无关(这就是为什么你有“选择控制”挑战)。触摸,身体跟踪和鼠标所需的UI考虑类型完全不同。例如,在触摸UI中,您必须非常小心根据屏幕尺寸/分辨率/ DPI调整大小...无论屏幕如何,手指总是相同的物理尺寸,人们具有相同的物理精度,因此您需要你的按钮和类似的控件总是大致相同的物理尺寸。研究发现3/4英寸是触摸屏按键的最佳位置。这并不是Kinect所关心的问题,因为你并没有直接接触到任何东西 - 精确度不是由手指大小决定的,而是由传感器精确度和用户精确控制挑剔的能力决定的。滞后虚拟游标。

如果你花时间玩Kinect游戏,很快就会发现有4种互动模式。 1)基于姿势的命令。用户敲击并保持姿势以调用某些应用程序范围或命令(通常会打开菜单) 2)悬停按钮。用户将虚拟光标移动到按钮上并保持一段时间以选择按钮 3)基于滑动的导航和选择。用户在一个方向上挥动手以滚动和列表以及从列表中选择的另一个方向 4)语音命令。用户只是说一个命令。

还有其他类似鼠标的想法已被业余爱好者尝试过(在实际游戏中没有看到这些)但坦率地说他们很糟糕:1)用一只手拿光标,另一只手用“点击”光标在哪里或2 )使用手的z坐标来确定是否“点击”

我不清楚你是否在询问如何让一些现有的鼠标小部件与Kinect一起使用。如果是这样,网上有一些项目将向您展示如何使用Kinect输入控制鼠标,但这是蹩脚的。这可能听起来很酷,但你真的根本没有利用设备最擅长的东西。

如果我正在构建音乐合成器,我会专注于方法#3 - 滑动。有点像舞蹈中心。在屏幕的左侧显示一个MIDI控制器列表,其中包含一些小的可视状态指示。让用户滑动左手滚动并从该列表中选择一个控制器。在屏幕的右侧显示您如何在他们身体前面的某个平面内跟踪用户右手。现在你让他们同时使用双手,立即给出每只手被解释的视觉反馈,并且不要求他们超精确。

ps ...我也想对Josh Blake的新书NUI一书大喊大叫。这是件好事。如果您真的想掌握这个区域,请订购一份副本:) http://www.manning.com/blake/