在过去的几个月里,我一直在研究为各种软件音乐合成器开发基于 Kinect 的多点触控界面。
我提出的总体策略是创建对象,以编程方式或(如果可能)算法方式来表示软合成器的各种控制。这些应该有;
- X位置
- Y位置
- 高度
- 宽度
- MIDI 输出通道
- MIDI 数据缩放器(将 xy 坐标转换为 midi 值)
我为算法创建考虑过的 2 个策略是 XML 描述和以某种方式将内容从屏幕上拉下来(即给定一个正在运行的程序,找到所有控件的 xycoords)。我不知道如何进行第二个,这就是为什么我用这种特定的技术语言来表达它;)。我可以做一些中间解决方案,比如使用鼠标点击控件的角来生成一个 xml 文件。我可以做的另一件事,我在 Flash 应用程序中经常看到的,是将屏幕尺寸放入一个变量中,并使用数学来根据屏幕尺寸构建所有界面对象。请注意,使对象与屏幕控件大小相同或表示所有屏幕对象(有些只是指示器,而不是交互式控件)并不是绝对必要的
其他考虑;
给定(目前)两组 X/Y 坐标作为输入(左手和右手),我使用它们的最佳选择是什么?我的第一个直觉是/是创建某种焦点测试,如果 x/y 坐标落在接口对象的范围内,则该对象变为活动状态,然后如果它们在一段时间内超出其他一些较小的范围,则变为非活动状态。我找到的廉价解决方案是使用左手作为指针/选择器,右手作为控制器,但似乎我可以做更多。我有一些手势解决方案(隐藏马尔可夫链)我可以搞砸。确切地说,并不是说他们很容易开始工作,但如果有足够的激励,我可以看到自己在做的事情。
所以,总而言之,问题是
- 表示接口(必需,因为默认接口总是需要鼠标输入)
- 选择一个控件
- 使用两组 x/y 坐标(旋转/连续控制器)来操作它,或者在切换的情况下,最好使用手势来切换它而不给予/关注焦点。
非常感谢任何评论,尤其是来自曾/正在使用多点触控 io/NUI 的人的评论。链接到现有项目和/或一些好的阅读材料(书籍、网站等)将是一个很大的帮助。