5

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

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

  • X位置
  • Y位置
  • 高度
  • 宽度
  • MIDI 输出通道
  • MIDI 数据缩放器(将 xy 坐标转换为 midi 值)

我为算法创建考虑过的 2 个策略是 XML 描述和以某种方式将内容从屏幕上拉下来(即给定一个正在运行的程序,找到所有控件的 xycoords)。我不知道如何进行第二个,这就是为什么我用这种特定的技术语言来表达它;)。我可以做一些中间解决方案,比如使用鼠标点击控件的角来生成一个 xml 文件。我可以做的另一件事,我在 Flash 应用程序中经常看到的,是将屏幕尺寸放入一个变量中,并使用数学来根据屏幕尺寸构建所有界面对象。请注意,使对象与屏幕控件大小相同或表示所有屏幕对象(有些只是指示器,而不是交互式控件)并不是绝对必要的

其他考虑;

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

所以,总而言之,问题是

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

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

4

1 回答 1

2

哇,这里有很多东西。我在 Microsoft 期间从事过很多 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/

于 2011-10-14T18:24:44.320 回答