在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡(jiǎn)易教學(xué))
i
給個(gè)評(píng)價(jià)吧~
前一篇文章有大概介紹過微軟的 Kinect 這個(gè)新東西了~它的深度攝影機(jī),、以及他的衍伸應(yīng)用,,在最近也算是已經(jīng)被發(fā)揚(yáng)光大,應(yīng)用非常多了,。而這一篇呢,,就來(lái)簡(jiǎn)單講一下,要怎樣才能把 Kinect 裝到 PC 上,,在 Windows 作業(yè)系統(tǒng)下使用吧~
基本上,Kinect 的訊號(hào)接頭雖然是特殊的 XBox 360 AUX 接頭,,但是它實(shí)際上只是標(biāo)準(zhǔn) USB 加上額外的電源而已,;同時(shí),在臺(tái)灣買到的標(biāo)準(zhǔn)配件裡,,也有附上把 AUX 接頭轉(zhuǎn)為 USB + 電源的線,,所以要把 Kinect 接到 PC 上,並不需要做任何硬體、線路上的修改,。下方左圖就是他的 AUX 接頭,,而下方右圖就是官方附的轉(zhuǎn)接線,可以把 AUX 接頭轉(zhuǎn)換成一個(gè)標(biāo)準(zhǔn) USB 接頭和一個(gè)電源插座,。
但是由於微軟官方並沒有提供給 Windows 用的驅(qū)動(dòng)程式,,所以直接接上去後,是沒辦法直接使用的,。為了要讓 Kinect 能讓 Windows 上正常運(yùn)作,,就要有修改過、給 Kinect 用的驅(qū)動(dòng)程式才行了~而這些驅(qū)動(dòng)程式基本上都不是官方的,,也不只一種,;目前比較有名的,應(yīng)該是 OpenKinect 的 libfreenect(網(wǎng)頁(yè))和 OpenNI(網(wǎng)頁(yè)) 加上特製版的 SensorKinect(網(wǎng)頁(yè)) 這樣的架構(gòu),。
而 Heresy 這邊是採(cǎi)用 OpenNI 這個(gè)架構(gòu)來(lái)做的,。使用這個(gè)架構(gòu)的話,需要準(zhǔn)備三樣?xùn)|西:
- OpenNI
- OpenNI 的基礎(chǔ) Framework,。他基本上是一個(gè)跨平臺(tái)的「自然互動(dòng)」(Natural Interaction) 開放原始碼架構(gòu)(open source framework),,提供了一組標(biāo)準(zhǔn)的 API 來(lái)針對(duì)不同的裝置(目前應(yīng)該也只有 Kinect)、中介軟體來(lái)做操作,。
- 可以直接在 OpenNI 的官方網(wǎng)站下載,。目前最新版本為 1.0.0.23(檔名應(yīng)該是「OPENNI-Win32-1.0.0.23.exe」,直接下載連結(jié)),。
- SensorKinect
- 支援 OpenNI 的 Kinect 驅(qū)動(dòng)程式,,他是基於 PrimeSense 官方的版本、專門針對(duì) Kinect 修改出來(lái)的,;算是 OpenNI 的一部分,,要先安裝 OpenNI 後才可安裝。
- 可以在 SensorKinect 的 github 頁(yè)面下載(直接下載連結(jié)),,下載後只需要裡面的「\bin\SensorKinect-Win32-5.0.0.exe」這個(gè)檔案,。
- NITE
- 由 PrimeSense 提供的 OpenNI 的中介軟體,負(fù)責(zé)分析 Kinect 抓到的資料,,轉(zhuǎn)換為人體骨架,、手勢(shì)等資料,如果只是想要讀取 Kinect 的深度資訊和影像資訊的話,,其實(shí)可以不用安裝,。
- 可以在 PrimeSense 的網(wǎng)頁(yè)下載,最新版本為 1.3.0.17(檔名應(yīng)該是「NITE-Win32-1.3.0.17.exe」,,直接下載連結(jié)),;安裝時(shí)需要授權(quán)碼,,不過可以在 OpenNI 的網(wǎng)頁(yè)找到一組免費(fèi)的(0KOIk2JeIBYClPWVnMoRKn5cdY4=)。
而當(dāng)這些東西都準(zhǔn)備好後,,接下來(lái)就可以來(lái)安裝了,!不過這邊要注意一下,這些軟體目前都有比較新的 unstable 版,,建議看完這篇文章後,,再參考《OpneNI + Kinect unstable 版安裝更新(2011/01)》,下載新的 unstable 版來(lái)安裝,!
不過,,不要急著把 Kinect 連結(jié)到電腦上,因?yàn)樵谥跋劝惭b軟體,,會(huì)比較方便,。而安裝的步驟,大致如下:
- 安裝 OpenNI
- 只要執(zhí)行 OpenNI 的安裝檔(OPENNI-Win32-1.0.0.23.exe),,就可以完成安裝了~
- 預(yù)設(shè)安裝位置會(huì)在「C:\Program Files\OpenNI」,,裡面包含了開發(fā) OpenNI 程式所必須的檔案、文件,,也有一定數(shù)量的範(fàn)例可以做測(cè)試,。
- 安裝 SensorKinect
- 剛剛下載的檔案應(yīng)該會(huì)是一個(gè) ZIP 壓縮檔,解壓縮後,,可以找到「\bin\SensorKinect-Win32-5.0.0.exe」這個(gè)檔案,,點(diǎn)兩下就可以進(jìn)行安裝了。
- 預(yù)設(shè)的安裝位置會(huì)是「C:\Program Files\Prime Sense\Sensor」,,其中驅(qū)動(dòng)程式就是在「\Driver」裡,。
- 連接 Kinect 硬體
- 這時(shí)候,可以把 Kinect 的 USB 線接到 PC 上了~
- Kinect 的硬體分為三個(gè)裝置:Kinect Camera,、Kinect Motor 和 XBox NUI Audio,。其中 Kinect Camera 和 Kinect Motor 應(yīng)該都可以直接找到驅(qū)動(dòng)程式、並且自動(dòng)完成安裝,;但是目前因?yàn)闆]有 XBox NUI Audio 的驅(qū)動(dòng)程式,,所以這樣裝置會(huì)無(wú)法正確安裝,不過基本上不重要,。
- 右圖為安裝完成後,,在裝置管理員裡看到的東西。
- 如果沒有自動(dòng)找到驅(qū)動(dòng)程式的話,,請(qǐng)指定驅(qū)動(dòng)程式路徑到剛剛安裝的 SensorKinect 的驅(qū)動(dòng)程式所在路徑,,預(yù)設(shè)會(huì)是「C:\Program Files\Prime Sense\Sensor\Driver」。
- 測(cè)試 Kinect 是否可以正常使用
- 理論上,,這個(gè)時(shí)候已經(jīng)完成基本的安裝,,可以透過 OpenNI 來(lái)讀取攝影機(jī)的資料了~而此時(shí) Kinect 上應(yīng)該會(huì)有一個(gè)黃色的燈號(hào)開始閃爍。
- 要測(cè)試的話很簡(jiǎn)單,,可以到 OpenNI 的安裝路徑下,,找到「Samples\Bin\Release」這個(gè)資料夾(預(yù)設(shè)路徑會(huì)是「C:\Program Files\OpenNI\Samples\Bin\Release」),裡面有許多已經(jīng)編譯好的測(cè)試程式可以拿來(lái)做初步的測(cè)試,。不過由於有些程式需要其他模組,,所以可能無(wú)法正常運(yùn)作,Heresy 建議在這邊使用「NiViewer.exe」和「NiSimpleViewer.exe」這兩隻程式,,來(lái)做初期的測(cè)試,。
- 理論上,執(zhí)行 「NiViewer.exe」後,,應(yīng)該就會(huì)看到用黃色來(lái)表示的深度畫面,,以及彩色的攝影機(jī)畫面了(如下圖)~而如果有出現(xiàn)這樣的畫面,就代表 OpenNI 和 Kinect 基本上可以正常運(yùn)作了,。(NiViewer 則只會(huì)有深度畫面,,如圖)
- 另外要注意的是,OpenNI 程式的架構(gòu)應(yīng)該會(huì)呼叫一個(gè) XnSensorServer 的程序,,並且透過電腦內(nèi)部的連線來(lái)取得裝置的資料,;所以如果有安裝防火牆軟體的話,可能要注意一下相關(guān)的設(shè)定,,以避免因?yàn)檫B線被防火牆擋掉,,而無(wú)法正常使用。
- 安裝 NITE
- 在上面四個(gè)步驟都成功後,,基本上已經(jīng)可以使用 Kinect 和 OpenNI 的基本功能了,。但是如果要能夠透過 Kinect 分析場(chǎng)景、抓到人的骨架的話,,則還需要額外安裝 NITE 這個(gè) Middleware,。
- 安裝的話,只要執(zhí)行他的安裝檔案(NITE-Win32-1.3.0.17.exe),,並且輸入 OpenNI 網(wǎng)頁(yè)上提供的免費(fèi)授權(quán)碼(0KOIk2JeIBYClPWVnMoRKn5cdY4=)就可以了,。
- 另外要注意,由於 NITE 官方的範(fàn)例是使用 320 x 240 的解析度,,和 SensorKinect 預(yù)設(shè)的 640×480 不同,,所以必須要修改設(shè)定檔,讓兩者相同,。修改方法是用 Sensor「\SampleXMLs\NITE\Data\」目錄內(nèi)的所有 XML 檔案(三個(gè)),,取代掉 NITE「\Data\」目錄內(nèi)的 XML 檔。
- 測(cè)試 NITE 是否可以正常使用
- 此時(shí) NITE 提供給 OpenNI 的各項(xiàng)功能應(yīng)該都已經(jīng)可以正常運(yùn)作了~而要測(cè)試的話,,可以執(zhí)行 NITE 本身的範(fàn)例(執(zhí)行檔位於 NITE 資料夾內(nèi)的「\Samples\Bin\Release\」目錄),,或是 OpenNI 的範(fàn)例程式,。
- Heresy 個(gè)人是建議可以試試看 OpenNI 的 NiUserTracker.exe 這隻程式(檔案預(yù)設(shè)會(huì)在「C:\Program Files\OpenNI\Samples\Bin\Release\NiUserTracker.exe」),他的執(zhí)行畫面大致上會(huì)和下面的截圖一樣,;他會(huì)用灰階的畫面來(lái)呈現(xiàn)深度資訊,,同時(shí)會(huì)把畫面裏面有在動(dòng)的物體抓出來(lái),用不同的顏色來(lái)顯示,。
- 另外,,NITE 的範(fàn)例 Sample-StickFigure.exe(預(yù)設(shè)檔案位置:「C:\Program Files\Prime Sense\NITE\Samples\Bin\Release\Sample-StickFigure.exe」)也是值得跑來(lái)試試看的程式。
這個(gè)範(fàn)例程式是一個(gè)虛擬的 3D 場(chǎng)景,,除了會(huì)去取出識(shí)別出來(lái)的區(qū)塊(上圖中不同的顏色就是不同的區(qū)塊)外,,針對(duì)他認(rèn)為是人的物體,也會(huì)去找出他的人體骨架(下圖橘色人形中的藍(lán)線),,並進(jìn)行追蹤,。 而在使用上要注意的是,要讓 NITE 能抓到人的骨架,,必須要先對(duì)著 Kinect 擺出 NITE 所定義的「校正姿勢(shì)」,、並維持一段時(shí)間;這個(gè)姿勢(shì)基本上就是右圖的樣子(圖片取自 NITE 文件),。理論上擺出這個(gè)姿勢(shì)過一小段時(shí)間,,NITE 就可以成功地找出骨架了;不過如果過了一段時(shí)間都還沒有出現(xiàn)的話,,建議可以試著先把手放下來(lái),、重新再擺這個(gè)姿勢(shì)。
OK,,到這邊為止如果都正確無(wú)誤的話,,基本上就是代表整個(gè) Kinect + OpenNI 的環(huán)境都架設(shè)成功了!而接下來(lái),,理論上就可以透過 OpenNI 的提供的東西,,來(lái)寫自己要的程式了~
接下來(lái),來(lái)玩點(diǎn)比較有趣的吧,!這邊就以之前也有提到過的 Miku Miku Dance 來(lái)玩看看 Kinect 吧,!
Miku Miku Dance(簡(jiǎn)稱 MMD,英文官方網(wǎng)站,、維基百科介紹)這套軟體是基於要製作 Vocaloid 的初音未來(lái)(維基百科)的跳舞影片而發(fā)展出來(lái)的軟體~而目前的最新版本,,也已經(jīng)可以支援使用 Kinect + OpenNI 來(lái)擷取、錄製動(dòng)作了,!有興趣的人,,可以先參考官方的 YouTube 示範(fàn)影片。
要做到這件事,,首先是要先按照上面的步驟,,確定 Kinect 和 OpenNI 都可以正常運(yùn)作,。而接下來(lái),則是到官方網(wǎng)站,,下載「MikuMikuDance 7.24 (DirectX9 Ver.)」(直接下載連結(jié))以及 DxOpenNI(直接下載連結(jié)),。而在下載後,操作流程大致如下:
- 將兩者都解壓縮,。
- 把 DxOpenNI 裡的 DxOpenNI.dll 和 SamplesConfig.xml 這兩個(gè)檔案,放到 MikuMikuDance 的 Data 目錄下,。
- 執(zhí)行 MikuMikuDance.exe(Windows 7 的話,,可能要按右鍵,選取「以系統(tǒng)管理者身分執(zhí)行」),,其主視窗畫面如下:
- 接下來(lái),,可以透過下方褐色的「model manipulation」區(qū)塊裡的「load」按鈕(如圖),開啟位於「\UserFile\Model」目錄下的模型檔案,。
- 在讀取模型之後,,畫面的顯示區(qū)域就會(huì)顯示出剛剛讀取的模型的樣子,以及他的關(guān)節(jié)了(如下圖),。
他預(yù)設(shè)會(huì)把模型的骨架,、關(guān)節(jié)都顯示出來(lái),按下藍(lán)色區(qū)塊「bone manipulation」的「select」鈕,,可以取消選取,,讓這些骨架和關(guān)節(jié)消失。 而其中,,如果有讀取多個(gè)模型的話,,「model manipulation」區(qū)塊的第一個(gè)下拉選單,也會(huì)有所有已經(jīng)讀取的模型,,可以讓使用者選擇現(xiàn)在要針對(duì)哪麼模型做操作,。
- 而接下來(lái),要使用 Kinect 來(lái)操作目前的腳色的話,,請(qǐng)點(diǎn)選選單上「help」的「Kinect」,;點(diǎn)下去後,MMD 會(huì)透過 DxOpenNI 來(lái)去呼叫 OpenNI,、進(jìn)一步讀取 Kinect 的畫面,。這個(gè)可能要等一段時(shí)間,而等到抓到 Kinect 的畫面後,,在畫面的右上方,,就會(huì)出現(xiàn)不同顏色的區(qū)塊,代表 OpenNI 抓到的東西了~
而這個(gè)時(shí)候和之前測(cè)試 NITE 的 Sample-StickFigure.exe 時(shí)一樣,,請(qǐng)?jiān)?Kinect 能抓到整個(gè)人的情況下,,擺出校正姿勢(shì)(如上圖),,然後過一段時(shí)間,MMD 裡的腳色就會(huì)和你的動(dòng)作同步了~而接下來(lái),,就是隨便動(dòng),、隨便跳了!
- MMD 是有提供頭髮和衣物等的物理模擬功能,,不過預(yù)設(shè)是在撥放模式才會(huì)進(jìn)行模擬,。如果希望在使用 Kinect 操作時(shí)也有物理模擬的話,請(qǐng)選擇選單「physical operation」裡的「anytime」,,讓 MMD 在所有時(shí)間都會(huì)去計(jì)算物理效果,。
- 如果想要把動(dòng)作記錄下來(lái)的話,可以選擇選單「help」的「capture」,,這樣就會(huì)把所有的活動(dòng)過程都記錄下來(lái),。而再點(diǎn)選一次,則就會(huì)停止紀(jì)錄,。而在擷取後要撥放的話,,則是在畫面右下角的灰色「play」區(qū)塊,有一個(gè)「play」的按鈕,,按下去就會(huì)開始播放剛剛的動(dòng)作了~
而要輸出結(jié)果的話,,可以選則選單「file」的「render to AVI file」來(lái)做輸出的動(dòng)作。
- 如果想看比較好的製作結(jié)果的話,,可以透過選單的「file」-「open」,,開啟位於 MMD 下「User」目錄裡的範(fàn)例檔案(預(yù)設(shè)應(yīng)該會(huì)有 sample.pmm 和 sample(AllStar).pmm 兩個(gè)),這是包含舞臺(tái),、動(dòng)作都編輯好的範(fàn)例,,按下「play」就可以看到別人做好的結(jié)果了~
在 MMD 中使用 Kinect 的簡(jiǎn)易教學(xué),大概就先講到這裡了,?;旧希琈MD 應(yīng)該是目前對(duì)一般人來(lái)說,,比較有趣,、操作比較簡(jiǎn)單的 Kinect 互動(dòng)程式了~也基於這個(gè)原因,Heresy 才拿它來(lái)做展示,;但是實(shí)際上,,Heresy 自己對(duì)於這個(gè)程式也是一整個(gè)不熟,所以這邊的教學(xué)也僅只是紀(jì)錄如何在 MMD 裡使用 Kinect 而已,。其他細(xì)部調(diào)整的部分,,就請(qǐng)大家自己想辦法找教學(xué)了。 ^^"
而目前看來(lái),要拿 Kinect 來(lái)做這類型的應(yīng)用,,可能還有幾個(gè)問題要處理:
- OpenNI 目前能透過 NITE 抓到的人體骨架精細(xì)度有限,。基本上,,他能抓到就是單純的人的四肢,,但是對(duì)於四肢的方向(例如手心向上或向下,或是頭面對(duì)的方向),,就已經(jīng)無(wú)能為力了,,更別提手掌、手指的細(xì)部動(dòng)作了,。
- 雖然 Kinect 能取得深度資訊,,可以比純粹使用 Webcam 抓到更好的人體骨架資訊,但是他同樣有光學(xué)上的死角,;例如當(dāng)你的手在背後的時(shí)候,就沒有辦法抓到手的動(dòng)作了,。這個(gè)問題理論上可以透過多組不同視角的 Kinect 來(lái)解決,,不過就是還要自行做這樣的解決方案就是了。
- 上面這兩問題,,或許有可能可以透過 OpenNI 的架構(gòu),,寫一個(gè)更進(jìn)階、計(jì)算複雜度更高的 middleware 來(lái)取代 NITE,,但是這會(huì)是相當(dāng)麻的一件事,。
- MMD 目前沒有處理碰撞的問題,所以目前取得的骨架資料,,某些時(shí)候(比如說兩手非常接近的時(shí)候)可能會(huì)讓模型「打結(jié)」,、甚至糾纏、交錯(cuò)在一起,。
簡(jiǎn)單來(lái)說,,Heresy 個(gè)人會(huì)覺得,現(xiàn)階段要用現(xiàn)成的東西,、讓 Kinect 變成便宜,、窮人版的 motion captrue 設(shè)備不是不可行的,但是當(dāng)然,,後續(xù)的微調(diào)還是得要費(fèi)上不少力,;但是相對(duì)於完全沒有 motion capture 來(lái)說,應(yīng)該已經(jīng)算是省掉許多工夫了~至少在大動(dòng)作的部分,,motion capture 是可以做到一定的水準(zhǔn),,方便之後微調(diào)的;以 Heresy 非專業(yè)的眼光來(lái)看,這應(yīng)該算是滿有價(jià)值的了,。
|