Miku Miku Dance DxOpenNI for OpenNI 2


Miku Miku Dance(簡稱 MMD,英文官方網站維基百科介紹)這套軟體,算是相當早就透過 OpenNI 來支援 Kinect 這類的感應器的一套軟體,Heresy 在當初寫 OpenNI 1,x 的安裝教學的時候,就有以他為例子了~有興趣的話,可以回過頭去看《在 WIndows 上安裝 Kinect(含 MMD 使用 Kinect 簡易教學)》這篇文章。

基本上,MMD 也算是一個很簡單、可以用來展示 Kinect 這類感應器的動作捕捉功能的程式了~不過滿可惜的是,作者應該是已經停止更新了。也因此,雖然 OpenNI 2 已經推出一段時間了(雖然還是 Beta 版),作者卻還是沒有針對 OpenNI 2 來改版,所以 MMD 到現在還是只支援 OpenNI 1.x,並不支援 OpenNI 2。而雖然現在也有 MikuMikuMoving(官網)、算是 MMD 的後繼者,不過他也還是只支援 Kinect for Windows SDK 和 OpenNI 1.x(沒弄錯的話,應該是這樣)。

而雖然 Heresy 自己是沒有在用 MMD 這樣的程式,但是對 Heresy 來說,還是算少了一個滿好的展示程式。

後來考慮了一下,由於 MMD 作者是把對於 Kinect 的支援,使採用獨立模組(DxOpenNI.dll)的方法,而且也有提供原始碼,所以 Heresy 就決定,自己試著根據他的程式,把使用的 API 從 OpenNI 1.x 改成 OpenNI 2.x。(Miku Miku Moving 對於這方面的支援是寫死在程式裡的,沒辦法改。)

基本上,Heresy 是基於官方網站的 DxOpenNI 1.30 做修改的,初步移植的時間大概是一個晚上(不包含測試),後來又有針對內部的架構、程式做一些修改,目前做出來的,就是現在這個版本了。

檔案目前放在:

http://sdrv.ms/Zp3vhg

裡面有兩個檔案,一個是編譯好的 DxOpenNI.dll,另一個則是原始碼 DxOpenNI2.cpp。

而由於 Heresy 是使用 VisualStudio 2012 來建置這個檔案的,所以可能也會需要安裝 Visual C++ 2012 的可轉發套件;這個可以到微軟官方網站下載,其連結是:http://www.microsoft.com/zh-tw/download/details.aspx?id=30679,請下載安裝 vcredist_x86.exe 這個檔案。

要使用的話,首先須建立好 OpenNI 2 的使用環境,其步驟如下::

  1. 如果是使用 Kinect 感應器的話,請先安裝 Kinect for Windows SDK(官網)。
    如果是使用 ASUS Xtion 這類感應器,則不需要安裝。

  2. 安裝 OpenNI 2(下載頁面)和 NiTE 2(下載頁面),並確認官方範例程式可以正確運作。
    請注意,由於 MMD 為 32 位元程式,所以請下載、安裝 32 位元的版本。

而要在 MMD 裡面使用的話,其步驟為:

  1. 把 DxOpenNI.dll 這個檔案,放到 MMD 的 Data 目錄內。

  2. 把 OpenNI 2 的 Redist 目錄下的檔案, 複製到 MMD 主程式(MikuMikuDance.exe)所在資料夾。
    32 位元 Windows 的話,OpenNI 的檔案是在 C:\Program Files\OpenNI2\Redist
    64 位元 Windows 則是要複製 C:\Program Files (x86)\OpenNI2\Redist 下的檔案。

  3. 把 NiTE 2 的 Redist 下的檔案,也複製到 MMD 主程式所在資料夾。
    32 位元電腦是要複製 C:\Program Files\PrimeSense\NiTE2\Redist 下的檔案,
    64 位元電腦則是要複製  C:\Program Files (x86)\PrimeSense\NiTE2\Redist 下的檔案。

最後,在 MMD 程式的目錄下的檔案,應該會像右圖這樣子;而如此一來,MMD 應該就可以透過 OpenNI 2,來使用 Kinect、或是 Xtion 進行動作捕捉的動作了~

Heresy 自己在 Windows 7 x64 的電腦上,使用官網最後的「MikuMikuDanceE_v739dot」這個版本,是可以正常運作的。不過,似乎某些模型,會有腳尖位置的問題,這點 Heresy 就不知道是什麼回事了。

最後,基本上 Heresy 自己算是以接近練習的心態來改的,所以並沒有改得非常認真,也不打算詳細地說明裡面的程式,有興趣的人可以自己參考原始碼;雖然也可以比對原始的 DxOpenNI(官方的 zip 下載後,也有原始碼),不過由於某些地方 Heresy 有把架構改掉了,所以會有一定程度的差異就是了。

整體來說,其實 OpenNI2 和 NiTE2 的程式開發,算是比 OpenNI 1.x 的架構簡化了不少,要寫他的程式,其實相對簡單許多;不過很可惜的,就是現階段還是在功能欠缺的 Beta 階段,而許多現成的程式,也都還是使用 OpenNI 1.x…像是 OpenNI 最早的鍵盤模擬器 FAAST(介紹),現在似乎也沒繼續更新了?(話說,有人知道 OpenNI 2 有類似功能的程式嗎?)

所以…接下來,還是等 OpenNI 2 的正式版吧,以及更多好用的工具吧。


OpenNI / Kinect 相關文章目錄

對「Miku Miku Dance DxOpenNI for OpenNI 2」的想法

  1. 您好
    不好意思我想請教個問題,如果要將OpenNI 1.x的範例程式改寫成OpenNI 2.x的形式需要做哪些修改,我知道OpenNI 1的標頭檔是用而OpenNI 2的是,
    那除此之外還需要把握那些要點?

    謝謝

      • 感謝您的回覆,因為我現在手邊有找到OpenNI 1的範例程式(沒有找到OpenNI 2版的)
        但我主要也是在使用OpenNI 2,所以希望能夠將之改寫成2代的形式
        那我目前就先參考這份文件來做修改,有問題我再提出

        謝謝

  2. Dear Heresy-san,

    I’m using KINECT and I tried to install (avin) PrimeSense Sensor KinectMod but it’s keep telling me to install OpenNI version 1.2.0.4 or higher despite now I’m using OpenNI 2.x. Is there any work around for this problem?

    TY

    • OpenNI 2 works with Microsoft Kinect for Windows SDK.
      It doesn’t need SensorKinect anymore, so you can NOT install it with OpenNI 2.

      If you want to use OpenNI 2 with Kinect, you need:
      1. install Kinect for Windows SDK 1.6+
      2. install OpenNI 2.2
      3. install NiTE 2.2

      • I see, thank you for your response.
        Is Kinect for Windows SDK 1.7 works for Kinect for Xbox 360? Or should I go with Kinect for Windows SDK (beta) to fetch the drivers for Kinect sensor device, will it gonna work fine too?

        • Yse. Kinect for Windows SDK 1.7 works with both Kinect for Xbox360 or Kinect for WIndows Sensor.
          You need to use ther new version for OpenNI 2.

  3. 博主好,我在使用官网的MikuMikuDance(x64 Ver) 以及64位版本的OpenNI2 Nite2 SDk。按照博主的方法依旧提示“Cannot move OpenNI",请问这是由于此文内的xOpenNI.dll是为32位系统编译的原因吗?

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.