KinectSDK 1.6 + Unity3D体感应用

本文详细介绍了如何在Unity3D中利用不同Kinect SDK版本和开源工具进行骨骼数据处理与体感游戏开发的实践经验,包括Zigfu的ZDK、CMU封装、adevine1618插件、自定义C#类库及UnityPlugin方式等,并对每种方案的优劣进行了对比分析。
    最近买了个Kinect中国版,加上新出的KinectSDK 1.6,于是开始尝试起来,先是给同事的一个朋友帮忙,为Flash提供骨骼数据,之前早就给了这个朋友网上一套KinectHtml5源码,这个代码很早我编译过的,能够在支持Html5上浏览器使用,这个朋友说编译失败,当时还是很疑惑为什么,   只是当时没条件编译,   现在条件具备,就自己再用起这套源码,发现是KinectSDK 1.0的版本的Demo,怪不得我以前能直接编译通过,而这位朋友编译通不过,因为他采用的是KinectSDK 1.5。这次我采用Kinect SDK 1.6,看看ToolkitBrowser上示例,没多久就把这份代码修改并编译通过了。后面就尝试在Unity3D上使用,网上查找了些方案,其中这篇文章不错, Kinect+Unity3D 体感游戏开发 — Kinect SDK v1.5 ,给出几种方案,我做了相应尝试,现在也进行一下总结:
1、Zigfu的ZDK
    以前用OpenNI的时候用过,没想到能够支持Kinect,于是很高兴的下好了trial版本,果然能用,不过发现一下子能打开Kinect设备,一下子不能打开Kinect设备,很是困惑,后面发现360安全卫士及360杀毒把Kinect服务当木马的提示,果断设置为信任,也把360安全卫士和360杀毒退出,在测试打开Kinect设备成功率高的多,但依然会有失败的。

2、CMU的封装
    这套在看这篇文章是先下到,只支持Kinect SDK 1.0,本想修改一下用起来,但是懒的基因没有马上动手,而是再Google下,找到了这边文章,下载替换文件,看了一下,Kinect SDK 1.5跟Kinect SDK 1.6还是有区别,用了一下果然也是用不起来。

3、adevine1618开发的插件
    缺点有说不在维护,所以就没有去试了。

4、根据Zigfu自己写一套C#类库
    前面说到Zigfu的打开不稳定,于是想自己写一套能够同时支持Kinect和OpenNI的封装。没花多长时间,总结了一下需要各抽象层就动手写了骨骼数据方面,于是放到Unity进行测试。发现MonoDevelop编译没有问题,在Editor下确提示编译出错。这篇文章有提到:Unity3.5 只支持到.Net 3.5, 而Kinect SDK v1.5 最低要求是.Net 4.0. 所以直接在Unity中使用v1.5的assembly是不行的。不过我尝试才真正体会到真的是不行,在VS2012中改成.Net 3.5的话,编译又通不过,改成.Net 4.0编译通过,在Unity中又通不过,默认是.Net 4.5。很好奇Zigfu是如何做到的,ZDK下有Kinect10.dll及OpenNI.Net的引用,也是用C#写的一套类库啊,难道是Kinect SDK 1.5,而且用的是.Net 3.5?用Kinect SDK 1.5的话,为何CMU的封装(替换文件了)有如何跑不起来?

5、Unity Plugin方式,用C++写DLL
    这个动手写以前就肯定是可行的,但还是动手写了一下做了测试,发现Kinect 红外灯能够点亮了。这样比CMU封装更有好处,按更自然的C++方式来实现,仅导出需要的接口就好了。

    这么多方案下,最希望是能够把Zigfu实现能够把Kinect面部识别等更多功能放进去,当然是需要Unity能够支持.Net 4.5了,目前方案是Unity Plugin方式了,把需求放到C++中去完成好了。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值