KinectModelControllerV2为Kinect联合Unity3D开发的一个开源C#脚本程序,用于调用Kinect驱动提供的接口,在Kinect获取到人体骨架节点的三维坐标信息之后,可以控制Unity3D中的此彩虹骨架,做出与用户一致的肢体动作。可见,在Unity3D与Kinect进行联合开发的时候,可以很好的体现Kinect捕获、处理视频图像信息的空间性,与Visual Studio编写的C#窗口应用程序相比,Unity3D的环境能够很好的体现骨骼节点在三维空间内的运动,能够使开发者更好的理解Kinect的运行机理,同时也为Kinect的应用开发提供更加直观的骨骼节点观察界面。在使用KinectModelControllerV2。cs脚本时,我们需要将此脚本绑定在彩虹骨架上,然后将彩虹骨架中的每一个节点对象,以Unity3D中可视化界面拖拽的方式,赋予脚本中公共游戏对象(public GameObject),即将场景内的骨骼节点模型赋予脚本中的预设骨骼节点对象,从而让脚本实现控制数字骨架的效果。具体的操作如图4-12所示,箭头表示拖拽的过程。
在Unity3D的脚本中,所有的公共游戏对象,都可以在属性栏中看到,并且可以在可视化界面中进行赋值。其赋值的方法就是直接将场景环境中的物体,用鼠标左击拖拽到紧跟在变量名后面的输入框内。
如图4-13、图4-14所示为虚拟抛掷盛接系统的最终界面,当程序运行时,便会得到这样的全屏界面。我将地面设置为网格纹理,其目的是方便观察小球的落点位置。用户站在Kinect设备前,使用右手向前上方较快速地完成抛掷动作,便可以抛出一个小球,木箱模型会根据小球的落点数据,移动到小球的落点位置,将其接住。
目前,抛掷算法可以实现,当用户较为快速的完成右手向前上方抛出物体的动作之后,在虚拟场景中实例化小球,并让小球根据用户的抛掷动作,做抛物运动。盛接算法可以在小球被抛出的时刻计算出小球的落点,并控制木箱移动,使木箱在落点位置等待小球落进木箱。 来-自~优+尔=论.文,网www.youerw.com +QQ752018766-
下图4-13 为程序刚开始运行,用户还没有站在Kinect的摄像头前时的状态。
下图4-14 为程序开始运行,用户已经站在Kinect摄像头前,完成了右手的抛掷动作,并且木箱已经移动到落点位置接住小球的状态