在过去的几个月里,我一直在研究为各种软件音乐合成器开发基于Kinect的多点触控界面。
我提出的总体策略是以编程方式或(如果可能)算法创建对象以表示软合成器的各种控件。这些应该有;
其他考虑因素;
鉴于(目前)两组X / Y坐标作为输入(左手和右手),使用它们的最佳选择是什么?我的第一直觉是创建某种焦点测试,其中如果x / y坐标落入接口对象的边界内,则该对象变为活动状态,然后如果它们在一段时间内超出其他较小边界则变为非活动状态。我找到的廉价解决方案是使用左手作为指针/选择器,右边作为控制器,但似乎我可以做更多。我有几个手势解决方案(隐藏马尔科夫链)我可以搞砸。并不是说他们很容易上班,但确实如此,这是我可以看到自己做的事情,给予了足够的激励。
总而言之,问题是
任何评论,尤其是那些曾在多点触控io / NUI中工作/正在工作的人,都非常感谢。与现有项目和/或一些好的阅读材料(书籍,网站等)的链接将是一个很大的帮助。
答案 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/