モーションキャプチャーを手軽に行え、姿勢推定アルゴリズムを持ったKinect は、現在でも学術研究やアプリ開発など多方面で活用されています。ここでは、Windows10Proの64bit版環境でKinectV1(XBOX360単体版)を使って、MMDでモーションキャプチャーを行うために必要な設定や導入方法、導入時に発生するエラーとその解決策についてまとめています。
Windows10にはエディションやビット数によって複数の組み合わせがありますが、Windows32bitアプリが動けば問題なさそうです。OSはどのエディションやビット数でも動作するはずです。
KinectV1系であるKinect XBOX360単体版か、Kinect for Windows で動作するようです。SDKバージョンは、1系最新の1.8推奨です。
MikuMikudance には32bit版アプリと64bit版アプリがありますが、Kinectを使うには32bit版アプリである必要があります。64bit版でKinectモーションキャプチャーを使おうとするとエラーが発生し、正常に動作しません。
マイクロソフト公式が提供しているKinectドライバが同梱されているSDKには、いくつかのバージョンがあります。Kinect for Windows SDK にはKinectバージョン2系をサポートしたKinect for Windows SDK v2.0 もありますが、これはKinectV2専用なのでV1では利用できません。バージョン1.8のSDKをインストールして下さい。
このSDKに、Kinectのドライバが含まれています。
インストール完了後、コントロールパネル内にあるプログラムの追加と削除を見ると、Driver や SDK がインストールされているのがわかります。
Kinect for Windows SDK に似たようなものとして、Kinect for Windows Developer Toolkitというものがあります。MMDでKinectを使うにあたっては必須ではありませんが、Kinect を使った開発に役立つコンテンツが入っているようです。
Kinect for Windows SDK をインストールしたら、Kinect本体とパソコンをUSBケーブルでつなぎ、Kinect本体から出ている電源ケーブルをコンセントにつなぎます。ハードウェア故障などがなければ、このとき、Kinect本体前面についているランプがグリーンに点滅します。
次に、Windowsのデバイスマネージャーを開き、Kinect がWindows10上で正しく認識されているか確認します。
Microsoft Kinect 配下に、
の4つが認識されていればOKです。
MikuMikuDanceには3種類のパッケージがありますが、64bit版はKinectモーションキャプチャーが動作しません。MMDでモーションキャプチャーを使うには、MikuMikuDance32bit版を使う必要があります。
MikuMikuDanceは、下記のサイトからダウンロードできます。
32bit版はMikuMikuDance(DirectX9 Ver)と書かれたもので、MikuMikuDance_v931.zip です。
下記3つのランタイムパッケージをインストールします。
ここまでやったら、一旦MikuMikuDanceが正常に起動するか確認しておきましょう。
下記のサイトから、MoggDxOpenNI version 0.5.6 をダウンロードします。
zipファイルを展開し、
の3つを、MikuMikuDance内にあるDataフォルダにコピーします。
モーションキャプチャーで動かしたいMMDモデルを読み込みます。ニコニ立体で様々ななMMDモデルがダウンロードできるので、好きなMMDモデルをダウンロードしてください。
MMDのzipファイルを解凍後、デスクトップなど適当な場所に解凍しておきます。その後、MikuMikuDanceを起動し、画面下部にある「モデル操作」欄にある「読込」ボタンをクリックし、MMDモデルを読み込みます。MMDモデルのファイル拡張子は、.pmx形式です。
正常にPMXファイルが読み込まれると、MikuMikuDanceの画面にMMDキャラクターモデルが表示されます。
ここまで完了したら、MikuMikuDance で Kinect を有効化します。
MikuMikuDanceを起動し、画面上部のメニューバーから「モーションキャプチャー」を選び、Kinectにチェックを入れます。画面上は何も表示されませんが、正常にKinectとMMDのセットアップが終わっていれば、Kinect前面の一番左に赤いランプが点灯します。
カメラと被写体の位置が適切であり、被写体の全身が認識されていれば、画面右上にシルエット動画が表示され、カメラの動きに合わせてMMDモデルキャラクターがリアルタイムで動くようになります。
このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーションのイベントログを参照するか、コマンドラインツール sxstrace.exe を使用して下さい。
DxOpenNI.dllがDataフォルダ内にありません。
タイトル:error メッセージ:GetProcAddress: 193:%1 は 有効な Win32 アプリケーションではありません。 操作ボタン:「OK」のみ
というダイアログが表示される。「OK」を押すと、
タイトル:Kinect メッセージ:OpenNIが動作しません。おそらくOpenNIのインストールに失敗しています。 OpenNIのサンプル、NiUserTrackerが正しく動作するようにOpenNIをインストールし直して下さい。 操作ボタン:「OK」のみ
というダイアログが表示され、KinectがMMD上で起動しない状態になります。このエラーは、MikuMikuDance64bit版を使っている場合に発生します。この問題を解決するには、MikuMikuDanceの32bit版インストールし使って下さい。
下記の点を改善してみて下さい。
被写体とKinectの距離が近すぎると認識されません。Kinectと被写体の距離を1〜2m程とり、人型全体が認識されれば自動的に画面の右上にシルエット画像が表示されます。
KinectXBOX360単体版でMMDの全身モーションキャプチャーをする場合、全身を映す必要があることから、カメラと被写体との距離は2〜3m程度必要になります。身長が高いほどカメラとの距離空間が必要です。下記の記事にもモーションキャプチャー実行時の詳しい注意点が書かれています。
今回は MikuMikuDance + Kinect でモーションキャプチャー環境を構築しましたが、MMDでモーションキャプチャーをするなら、 MikuMikuCapture + Kinect を使った方が楽です。