Kinect结合Unity开发(一)

因为对Unity比较熟悉,所以一开始想着就是用Unity结合Kinect来进行游戏开发,而不是用Kinect的SDK强行撸一个出来,再说我也不会啊。

然后就是上网各种找资料咯,开始想用的是OpenNI的那款插件,但是我用的Unity版本是4.5的,出了很多问题,要改的地方太多了,所以果断放弃了。

但是经过不懈地寻找,终于还是发现了两款比较好用的Unity插件啊哈

先来说说第一个: CMU封装的KinectWrapper.unitypackage

但是这个插件支持的Kinect SDK版本为1.0,要是想使用更高版本的SDK还得做相应的修改才行。插件可以点击这里下载


好了,现在我使用的是Unity4.5.2, Kinect SDKv1.8,首先我先将KinectWrapper.unitypackage导入新建的工程中,然后打开Kinect文件夹Kinect结合Unity开发(一)_第1张图片

标注的部分即为需要替换的两个文件,这样才能支持更高版本的SDK。替换文件在这里

当然也可以直接下载我替换后导出的资源包,点这里下载


修改好了之后正式开工,首先运行一下Scenes里面的场景

Kinect结合Unity开发(一)_第2张图片

你会发现场景中的模型会跟随着你的动作变化而变化,刚开始真是被震撼到了- -

然后看下Hierarchy面板

Kinect结合Unity开发(一)_第3张图片

发现相对于我们正常的Unity项目来说,多了三个东西:

Kinect_Prefab

KinectAvatar

rainbowMan_v6

首先Kinect_Prefab这个物体在场景中是必不可少的,你会发现这个物体添加了我们用来开发的各种脚本

Kinect结合Unity开发(一)_第4张图片

所以只要将它静静地放在场景中的某个角落就行。

然后是KinectAvatar,这个就是我们刚刚场景里面的由小球组成的人,这也是为我们展示了如何通过Kinect来控制游戏中的物体

Kinect结合Unity开发(一)_第5张图片

先创建一个空物体,将你想控制的游戏物体作为子物体给拖进来

然后在父节点上添加KinectPointController这个脚本

再将场景中的Kinect_prefab物体赋给脚本中暴露的sw变量

然后将想要控制的子物体赋给脚本中对应的变量,比如我想用左手控制13_Hand_Left这个子物体,就将它赋给脚本中的Hand_Left这个变量,依次下去即可

最后脚本下方还有这样几个变量:

Player:0代表第一个玩家,1代表第二个玩家

Mask:选择是否所有的骨骼都受控制,还是仅仅某部分

这样就能成功控制游戏中的物体了~


最后是rainbowMan_v6,这是展示了如何控制人物模型,方法和上面一样,只要把对应的骨骼放在对应的位置上就OK了

不同的是,它需要添加的是KinectModelControllerV2这个脚本,而且这个脚本对比之前多了两个变量:

animated:是否能播放模型自带的动画

BlendWeight:模型动画与Kinect动作的混合效果


最后还有几个Kinect常用的脚本:


DisplayDepth:得到深度图像

DisplayColor:得到RGB图像

SkeletonWrapper:获取骨骼数据

DepthWrapper:获得深度图像数据


怎么使用可以查看脚本内部的代码,其他就不一一列举了~



你可能感兴趣的:(Kinect相关)