如何用C sharp写kinect和unity的中间件

如题所述

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++中去完成好了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-10-17
假如别人真做过的话, 除非把代码给你看,否则还是要你自己想。
可以考虑的角度是:把kinect作为输入控制,鼠标的角色。unity3d 是否有相关的API?否则需要hack?
相似回答