我正在开发一个使用kinect作为输入设备的应用程序(游戏sorta)。 我需要一个“主持人”才能在新用户感兴趣时重置应用程序。
我在想用手捂住传感器几秒钟就可以了。 然而,实现这一目标的唯一方法是始终分析rgb相机输出“全黑”。
对此有何看法?
非常感谢。
p.s。:我在mac上使用openni sdk,使用airkinect框架在as3中开发游戏。
答案 0 :(得分:1)
你提到的听起来像是一个公平的解决方案。在类似的线路上,您甚至可以使用深度传感器并检测深度为(大约)0以触发重置。
但是,我可以提出使用任何一种解决方案可能是误报的情况。为用户保持简单,您甚至可能希望使用零深度和全黑的组合。
使其复杂和准确,您可以使用QR码或红纸指示(停止)。绿色(GO)等等
(如果您觉得这个问题已经足够,请将此解决方案标记为已接受。等待您的评论,如果有的话。)
答案 1 :(得分:1)
我的第一个想法是使用语音识别。它似乎比覆盖传感器更自然。如果你保持语音命令有限,那么效果非常好。
我过去曾使用语音识别来确定“playfield”的最左边和最右边,将手放在其中一条边上并说“校准”,“左”,“右”和“好” “ 确认。它工作得很好。如果你有很多人在说话,你可以先听一个关键短语。所以“Kinect:校准”和“Kinect:left”来过滤掉误报。
答案 2 :(得分:1)
您应首先回答用户和主持人如何与应用程序和活动交互空间进行交互的问题。如果主持人必须接近Kinect传感器并掩盖相机以重置实例,为什么不给他们一个无线键盘或鼠标来保持?在这种情况下,鼠标单击或按键可以重置场景 - 键盘将提供许多其他键以在多个场景或配置设置之间跳转。
如果您真的需要主持人的“免提”解决方案,我会调查手势或语音识别。我对OpenNI并不熟悉,所以下面的链接将引用Microsoft SDK,但可以用作参考和想法......
在语音识别的情况下,可以使用“激活”关键字(例如,“Kinect”或“计算机”),然后是动作请求(例如,“Destruct sequence 3,code 1 B-2B-3”) ,或者只是“重置”,如果你想要无聊)。您可以在此处阅读有关使用Microsoft库进行语音识别的更多信息:http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx
对于手势,您可以使用静态手势重置场景 - 例如,在XBox上握住一只手臂在另一侧,另一个45度角将发送回主菜单。你总是可以认为主持人会在某一方面,或者永远是第二个进入场景的玩家。您可以随心所欲,让用户在需要时重置场景。您也可以将其混淆并让主持人首先提供“控制”手势或语音命令,以便系统知道他们是主持人,然后给出重置(或其他)手势。
这里有两个可以提供帮助的手势库: