图像识别技术在现代的计算机技术中,已经得到了飞速的发展,应用也很广泛,例如人脸识别。现在的人脸识别技术,可以做到准确区分双胞胎,而这一点,普通人在很多情况下都无法办到。在图像识别的基础上,建立算法分析视频信息,并将视频化为一帧一帧的图像,同时利用红外线散射编码技术,对视频信息做深度数据挖掘,可以获取人体的运动信息,这就是微软Kinect体感设备的工作原理[2]。这样的自然用户界面就是现在计算机的发展趋势,其目的在于让用户以最自然的方式,与计算机进行交互,不再使用传统的鼠标、键盘,转而使用自身的肢体动作。
1。2 设计启发
Kinect可以将站在其摄像头前方用户的肢体信息捕获,并将用户的肢体信息凝练为20个骨骼节点的三维空间坐标值,并实时随着人体的运动,更新坐标值,将这些数据以接口的形式,提供给需要进行动作处理、响应的计算机。虽然Kinect也具有高性能的处理器,能够对采集到的视频信息做高速的处理,但Kinect作为一个辅助设备,它只能做到捕获人体的骨骼节点信息,并不能对这些信息做进一步的处理。如果要对一个动作进行识别,需要将Kinect捕获的人体信息进行收集,在另一台计算机上进行判断处理。Kinect就相当于一个动作识别系统的“眼睛”,这里的眼睛,还应包含“视觉中枢”。其摄像头就是“眼睛”,其内置的处理器与内存就是“视觉中枢”[3]。
美国心理学家威廉·詹姆斯说过:“情绪始于身体变化的感知。在你感受到某种情绪前,你的身体已经做出了反应。”Kinect宣言说:“你就是控制器”。也就是用户对计算机进行输入时,不再需要鼠标和键盘,只需要自己的身体做出动作就能够完成输入。
当前Kinect的应用非常之多,相关的创意项目也有很多。目前,Kinect甚至可以成为智能家具的一环。有一位日本的程序员,设计了一套基于Kinect设备的智能垃圾桶系统,通过Kinect去识别用户的抛掷动作,然后通过程序将抛掷物体的落点计算出来,最终将数据传递给垃圾桶的接收器,让装在垃圾桶上的制动装置将其移动到物体的落地位置。实现了用户抛出物体,并让带有接收器与制动装置的垃圾桶主动去盛接抛出物体的效果。这套智能垃圾桶设备,虽然当前的盛接准确率并不是100%,但是已经能够接住大部分用户向前上方抛掷出去的物体。
受到这位日本程序员的启发,我决定尝试去实现虚拟的抛掷盛接系统。在Unity3D的环境下,让用户抛出一个小球,在落地之前,用一个朝上开口的木箱模型,去接住小球。本文论述了对基于Kinect体感设备,在Unity3D环境中的虚拟抛掷盛接系统的设计与实现。
2开发工具
本项目中使用了Kinect体感设备,联合了Unity3D进行开发,通过Kinect收集用户的肢体信息,并将信息传递给Unity3D,通过脚本控制项目中使用的开源骨架模型,实现抛掷与盛接的算法,并实现抛掷与盛接的虚拟效果。
2。1 硬件说明
本项目中需要使用微软的Kinect设备,另外需要一台计算机,在开发过程中需要的计算机性能要求较高,当开发完成,导出可执行程序之后,需要的机器性能不必太高。
2。1。1 Kinect简介
Kinect原来是微软游戏机Xbox供体感输入的3D摄影机。它利用实时动态捕捉、影像识别等功能,让玩家不再需要使用传统的游戏设备,而直接使用自己的肢体,就可以对游戏进行操控。任天堂的wii、索尼的Play Station Move等游戏机都是基于体感的同类产品,但是玩家都需要借助使用一个或者多个硬件设备,才能与计算机实现体感的互动,并没有能真正做到让用户脱离硬件设备的束缚。