日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

KinectSDK + Unity3D学习总结

發(fā)布時(shí)間:2023/12/16 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KinectSDK + Unity3D学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Kinect結(jié)合Unity3D引擎開發(fā)體感游戲(一)

http://my.oschina.net/klttl/blog/161694
? ? 最近公司項(xiàng)目需要做科技館的體感游戲,以前也沒接觸過游戲,雖然以前自己也是想做游戲,我想大部分都是學(xué)編程出來來做游戲,哈哈(請(qǐng)?jiān)试S我淫笑一下,終于可以做這方面)。雖


然以前沒接觸過體感游戲,看到的體驗(yàn)也是大部分看到的視頻,幸好現(xiàn)在網(wǎng)絡(luò)還是比較發(fā)達(dá),上網(wǎng)大概了體感游戲開發(fā),目前比較好的是Unity3D和Kinect結(jié)合交互進(jìn)行開發(fā)。現(xiàn)在心里的感覺


用句話說:哥現(xiàn)在也走在世界技術(shù)最前言,TMD碉堡了!
? 9月7號(hào)開始查閱網(wǎng)上的資料,一直沒有找到詳盡而又簡(jiǎn)單的方案。網(wǎng)上目前我看到就三種方法,說是三種方法說白了就一種:中間件。形散而神不散--散文的最高境界(其實(shí)我語(yǔ)文不好,


對(duì)不起祖國(guó)氣我的期望,嗚嗚、、、)三種方法如下:
1.卡耐基梅隆的kinectWrapper.unitypackage;


2.OpenNI官方提供的OpenNI_Unity_Toolkit-0.9.7.4.unitypackage(現(xiàn)在官方不提供更新與支持了,支持的版本unity3.4,在往上版本會(huì)出現(xiàn)很多問題,需要修改很多地方,比較麻煩);


3.自己寫的交互的中間件,我在網(wǎng)上看見高手自己的寫的中間件,封裝為DLL,現(xiàn)在通過這段時(shí)間動(dòng)手實(shí)現(xiàn),發(fā)現(xiàn)自己寫一個(gè)這樣的中間件其實(shí)也不難,后期也自己準(zhǔn)備寫一個(gè)。 我在采用的


第一種方法,原因上面三點(diǎn)大概說來了,第二點(diǎn)以后考慮支持的版本和官方的態(tài)度,所以暫時(shí)不考慮;第三種目前自己還沒寫,目前來說也不太現(xiàn)實(shí),也暫時(shí)不考慮考慮。所以目前情況就暫


時(shí)考慮第一種;


?廢話說了那么多,相信各位機(jī)油們?cè)缇图拍y耐了,現(xiàn)在就切入正題:
一、Unity和Kinect交互的環(huán)境配置 我目前所使用的Unity3D的版本是Unity3.5; 使用的Kinect SDK版本是SDK1.6; Kinect和Unity交互的卡耐基梅隆的kinectWrapper.unitypackage方法是


使用CMU的封裝,這個(gè)方法支持的Kinect SDK版本是SDK1.0,要想使用1.6版本以上的kinect SDK,就要做一些相應(yīng)的修改。完整的方案如下(這個(gè)也為什么上面說后期打算自己封裝一個(gè)類似這


樣組件DLL):


1、安裝Uinty3D我使用的Unity3D版本是3.5,上官網(wǎng)下載(需要注冊(cè),才能用,我推薦大家去付點(diǎn)錢,我是自己找的破解碼,聲明不支持這樣的行為,大家懂就好)。


2、安裝Kinect SDK我使用的SDK版本是1.6,可以在Kinect for Windows官方網(wǎng)站上下載。


3、在Unity3D工程中,如果需要使用和kinect交互,那么就需要在這個(gè)工程中導(dǎo)入卡耐基梅隆的kinectWrapper.unitypackage。百度怎么用大家都懂吧(需要用kinect SDK版本是1.6以上版本


(1,7以上版本還沒試過替換是否可以,理論上應(yīng)該也可以),就要下載KinectWrapperPackage替換文件并替換導(dǎo)入包中的KinectInterop.cs和KinectSensor.cs這兩個(gè)文件即可) 好啦!目前


準(zhǔn)備工作都o(jì)k了!


二、簡(jiǎn)單Kinect Wrapper Package for Unity3D包含了所有我們開發(fā)unity+kinect需要用到的腳本。


1.導(dǎo)入包之后,所有我們需要的資源都會(huì)出現(xiàn)在project面板中,具體來說是以下的一些資源: 在此輸入圖片描述


2.Scenes KinectExample - 示例場(chǎng)景,這個(gè)例子向你展示了如何通過在每一個(gè)kinect 可以追蹤的骨骼點(diǎn)上放置小球來產(chǎn)生骨骼運(yùn)動(dòng)。


Prefabs Kinect_Prefab- 包含了我們開發(fā)unity+kinect程序所必需的所有腳本。但是它并沒有包含你需要的用于控制模型的控制器(controller)。 KinectPointMan -?


KinectPointController這個(gè)控制器(controller)是怎樣使用的。


Kinect KinectModelControllerV2 - 需要將這個(gè)腳本拖放到你想要應(yīng)用kinect控制的模型上。為了讓模型能夠跟上人的節(jié)奏,你需要將模型上控制模型動(dòng)作的關(guān)鍵骨骼拖放到這個(gè)腳本暴漏的


合適的變量中 ,也就是將模型中的骨骼與kincet識(shí)別到的人的骨骼綁定起來。另外這個(gè)腳本暴漏的變量中,還有一個(gè)變量時(shí)標(biāo)識(shí)模型是受哪個(gè)玩家控制。 KinectPointController - 需要將


這個(gè)腳本拖放到場(chǎng)景中的游戲物體上。但是這個(gè)游戲物體不是模型,而是由一系列分別代表頭部、肩部、手等人體部位的點(diǎn)組成。你需要將游戲物體中的這些關(guān)鍵點(diǎn)都拖放到這個(gè)腳本暴漏的


外部變量中。這樣就可以使用kinect控制游戲物體了


DisplayDepth - 得到深度圖像。


DisplayColor - 得到RGB圖像。


KinectRecorder - 用于記錄你的動(dòng)作,并為kinect模擬器(emulator)產(chǎn)生回放文件。


KinectEmulator - 模擬kinect設(shè)備.和KinectRecorder產(chǎn)生的回放文件一起工作。


KinectSensor - 從Kinect設(shè)備中取得數(shù)據(jù)。需要替換這個(gè)文件使用特用版本的SDK.


DeviceOrEmulator - 設(shè)置使用kinect物理設(shè)備還是kinect模擬設(shè)備.


SkeletonWrapper - 腳本抓取骨骼數(shù)據(jù).


DepthWrapper - 腳本抓取深度圖像數(shù)據(jù).


KinectInterop - 從Microsoft Kinect SDK中抓取數(shù)據(jù).


三、使用KinectWrapperPackage包要想在自己的工程中 首先需要用unity3D創(chuàng)建一個(gè)空工程,然后將kinectWrapper.unitypackage導(dǎo)入這個(gè)包到unity中,然后經(jīng)過下面的步驟完成交互。


1、設(shè)置Kinect_Prefab前面提到過了,如果在Unity中和Kinect交互,Kinect_Prefab這個(gè)游戲物體是必不可少的。 這個(gè)物體需要存在于你的場(chǎng)景中的某處。所以當(dāng)你切換場(chǎng)景時(shí),它仍舊存在


著,因此你不必在每個(gè)場(chǎng)景中都實(shí)例一個(gè)Kinect_Prefab。 在Unity3D中,找到project面板中的Kinect_Prefab直接拖拽到Hierarchy面板就可以了。


2、控制游戲中的角色為了控制場(chǎng)景中的角色的移動(dòng),你需要將KinectModelControllerV2這個(gè)腳本拖拽到場(chǎng)景中的模型上,并綁定骨骼; 當(dāng)然你為了控制一系列的游戲物體,你需要將


KinectPointController拖拽這些物體上。 下面分別說明這個(gè)腳本的使用(這兩個(gè)腳本需要自己更具情況去定制)。


控制器:KinectPointController: 在場(chǎng)景中創(chuàng)建一個(gè)空物體對(duì)象,作為你想要控制的容器。 將其他的物體拖拽到剛剛創(chuàng)建的空物體中,并放置到相同的位置。使剛才創(chuàng)建的空物體成為這些


物體的父節(jié)點(diǎn)。 拖拽KinectPointController腳本到這些物體的父節(jié)點(diǎn)上。 選中父節(jié)點(diǎn),在Inspector面板中暴漏的變量中,找到Sw變量 (該變量表示Skeleton Wrapper).拖拽當(dāng)前場(chǎng)景中


Kinect_Prefab賦給這個(gè)變量。 拖拽你想利用Kinect控制的每一個(gè)物體到Inspector面板對(duì)應(yīng)的合適的變量中。 設(shè)置Player變量(代表玩家)和Mask變量(代表哪些骨骼收到監(jiān)控). 在此輸入圖


片描述


控制器:KinectModelControllerV2: 拖拽腳本資源KinectModelControllerV2到場(chǎng)景中的模型中。 選擇場(chǎng)景中的模型。找到模型中的暴漏變量Sw(它代表Skeleton Wrapper). 并將當(dāng)前場(chǎng)景


中的Kinect_Prefab拖拽給Sw這個(gè)變量。 詳細(xì)展開你的模型,讓模型的每一塊骨骼在hierarchy面板中可見。 一個(gè)接一個(gè)地把模型中的骨骼拖拽到腳本中暴漏的對(duì)應(yīng)的變量中.確保每一個(gè)骨骼


都對(duì)應(yīng)到了正確的變量上。 當(dāng)模型中所有的骨骼都放置好了之后,改變暴漏的Player變量的值,這個(gè)變量表明該模型是受哪個(gè)玩家控制, 0代表第一個(gè)玩家,1 代表第二個(gè)玩家。 接下來要


設(shè)置暴漏的Mask變量的值。設(shè)置合適的值,以決定是所有的骨骼都受Kinect控制,還是僅僅一部分骨骼受Kinect控制.如果這些受Kinect控制的骨骼都不是你想要的,你可以自己寫一個(gè)控制模


型的腳本來代替KinectModelControllerV2。 當(dāng)游戲玩家在控制模型時(shí),如果你想要該模型同時(shí)播放自帶的動(dòng)畫,那么你需要在暴漏的變量中選中animated選項(xiàng),并設(shè)置BlendWeight變量的值


,來決定模型受自帶模型動(dòng)畫和Kinect驅(qū)動(dòng)動(dòng)作的最終混合效果。該變量取值范圍為0到1之間。 在此輸入圖片描述


四、運(yùn)行KinectWrapperPackage包中事例 保證Kinect設(shè)備連接成功指示燈為綠色,上面安裝包安裝配置好,最后運(yùn)行事例 在此輸入圖片描述 注意圖片的左下角的數(shù)字,證明連接成功 ,連


接成功的時(shí)候Kinect設(shè)備還會(huì)自己調(diào)整角度(最左邊的指示燈會(huì)有紅色)并且模型會(huì)隨著你動(dòng)而動(dòng)


歡迎大家期待第二篇,將寫一個(gè)3D人物模型,隨著身體指示,產(chǎn)生轉(zhuǎn)身和前進(jìn)與跑步 先上一張圖(第二篇會(huì)上相關(guān)的腳本代碼,由于unity腳本主要是c#和js,所以我采用c#寫的腳本,9月7


號(hào)才接觸到unity和kinect,原來工作一直用c/c++,c#都是現(xiàn)學(xué)現(xiàn)買所以有不當(dāng)之處,還請(qǐng)大家使勁拍磚):?
========

KinectSDK 1.6 + Unity3D體感應(yīng)用

http://blog.csdn.net/yuanchunfa/article/details/8107628
? ? 最近買了個(gè)Kinect中國(guó)版,加上新出的KinectSDK 1.6,于是開始嘗試起來,先是給同事的一個(gè)朋友幫忙,為Flash提供骨骼數(shù)據(jù),之前早就給了這個(gè)朋友網(wǎng)上一套KinectHtml5源碼,這個(gè)


代碼很早我編譯過的,能夠在支持Html5上瀏覽器使用,這個(gè)朋友說編譯失敗,當(dāng)時(shí)還是很疑惑為什么, 只是當(dāng)時(shí)沒條件編譯, 現(xiàn)在條件具備,就自己再用起這套源碼,發(fā)現(xiàn)是KinectSDK?


1.0的版本的Demo,怪不得我以前能直接編譯通過,而這位朋友編譯通不過,因?yàn)樗捎玫氖荎inectSDK 1.5。這次我采用Kinect SDK 1.6,看看ToolkitBrowser上示例,沒多久就把這份代碼


修改并編譯通過了。后面就嘗試在Unity3D上使用,網(wǎng)上查找了些方案,其中這篇文章不錯(cuò),Kinect+Unity3D 體感游戲開發(fā) — Kinect SDK v1.5,給出幾種方案,我做了相應(yīng)嘗試,現(xiàn)在也進(jìn)


行一下總結(jié):
1、Zigfu的ZDK
? ? 以前用OpenNI的時(shí)候用過,沒想到能夠支持Kinect,于是很高興的下好了trial版本,果然能用,不過發(fā)現(xiàn)一下子能打開Kinect設(shè)備,一下子不能打開Kinect設(shè)備,很是困惑,后面發(fā)現(xiàn)


360安全衛(wèi)士及360殺毒把Kinect服務(wù)當(dāng)木馬的提示,果斷設(shè)置為信任,也把360安全衛(wèi)士和360殺毒退出,在測(cè)試打開Kinect設(shè)備成功率高的多,但依然會(huì)有失敗的。


2、CMU的封裝
? ? 這套在看這篇文章是先下到,只支持Kinect SDK 1.0,本想修改一下用起來,但是懶的基因沒有馬上動(dòng)手,而是再Google下,找到了這邊文章,下載替換文件,看了一下,Kinect SDK?


1.5跟Kinect SDK 1.6還是有區(qū)別,用了一下果然也是用不起來。


3、adevine1618開發(fā)的插件
? ? 缺點(diǎn)有說不在維護(hù),所以就沒有去試了。


4、根據(jù)Zigfu自己寫一套C#類庫(kù)
? ? 前面說到Zigfu的打開不穩(wěn)定,于是想自己寫一套能夠同時(shí)支持Kinect和OpenNI的封裝。沒花多長(zhǎng)時(shí)間,總結(jié)了一下需要各抽象層就動(dòng)手寫了骨骼數(shù)據(jù)方面,于是放到Unity進(jìn)行測(cè)試。發(fā)


現(xiàn)MonoDevelop編譯沒有問題,在Editor下確提示編譯出錯(cuò)。這篇文章有提到:Unity3.5 只支持到.Net 3.5, 而Kinect SDK v1.5 最低要求是.Net 4.0. 所以直接在Unity中使用v1.5的


assembly是不行的。不過我嘗試才真正體會(huì)到真的是不行,在VS2012中改成.Net 3.5的話,編譯又通不過,改成.Net 4.0編譯通過,在Unity中又通不過,默認(rèn)是.Net 4.5。很好奇Zigfu是如


何做到的,ZDK下有Kinect10.dll及OpenNI.Net的引用,也是用C#寫的一套類庫(kù)啊,難道是Kinect SDK 1.5,而且用的是.Net 3.5?用Kinect SDK 1.5的話,為何CMU的封裝(替換文件了)有


如何跑不起來?


5、Unity Plugin方式,用C++寫DLL
? ? 這個(gè)動(dòng)手寫以前就肯定是可行的,但還是動(dòng)手寫了一下做了測(cè)試,發(fā)現(xiàn)Kinect 紅外燈能夠點(diǎn)亮了。這樣比CMU封裝更有好處,按更自然的C++方式來實(shí)現(xiàn),僅導(dǎo)出需要的接口就好了。


? ? 這么多方案下,最希望是能夠把Zigfu實(shí)現(xiàn)能夠把Kinect面部識(shí)別等更多功能放進(jìn)去,當(dāng)然是需要Unity能夠支持.Net 4.5了,目前方案是Unity Plugin方式了,把需求放到C++中去完成好


了。

========

資源

http://www.manew.com/labe/plus796.html
體感相關(guān)資源,unity3d 體感插件等;


https://pan.baidu.com/s/1hs8t0US

motion-sdk-latest.zip


總結(jié)

以上是生活随笔為你收集整理的KinectSDK + Unity3D学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。