Kinect v2とMMDでモーションキャプチャーをする

Kinect v2を購入しました

先に書いておきますが、少なくともMMDでモーションキャプチャーをしたいのならば旧型のKinect v1を買ったほうが良いと思います。

Advertisement

Kinect v2でモーションキャプチャーをする

今までWebカメラとして利用したりWindows Hello用デバイスとして利用したりしていましたが、本来Kinectはモーションキャプチャーをするために作られたデバイスです。

なのでモーションキャプチャーをしましょう。

前提条件

全身をキャプチャーする場合はKinectから2m程度離れる必要がありますし、Kinectもある程度高い位置に設置する必要があります。

また、Kinectと被写体の間に障害物があるとキャプチャー品質が下がるのでどうにかしてください。

準備するソフトウェア

MikuMikuDance(DirectX9 Ver)

Kinect v2でモーションキャプチャーをして3Dモデルに反映させる方法はいくつかあるのですが、その中で私が楽だと思ったのがMMDを利用する方法なのでMMDを利用します。

32bit版のMMDでないとKinectが利用できないので32bit版のMMDを用意します。

ランタイムなりなんなりをインストールして起動できる状態にしてください。

KinectV2NUI

MMDは本来Kinect v2に対応していませんが、こちらのDLLを利用することでKinect v2とMMDの組み合わせでもモーションキャプチャーをすることができるようになります。

ダウンロードしたら展開し、中にある”DxOpenNI.dll”をMMDのDataフォルダーにコピーしてください。

MMDの利用

ということでMMDでモーションキャプチャーをしていきましょう。

MMDを起動したらモデルを読み込み、モーションキャプチャー→Kinectを選択すればOKです。
Kinectに認識されると被写体の動きがモデルに反映されます。

使ってみて

この映像はKinect v2を被写体から1m程度離れた状態でディスプレイの上に設置し、椅子に座った状態でキャプチャーした様子です。

モーションキャプチャーをするには近すぎることや照明が暗めであること、足元がキャプチャーできていない状態であることなど、条件が悪いのにも関わらずかなり善戦していると思います。

なお、今回はプレビュー画面を撮影しているためガクガクな動きになっていますが、動きを一旦キャプチャーしてモデルに反映した場合は滑らかな動きになります。
ただし、私の環境では首の動きが反映されませんでした。なぜか。

なお、Kinect自体の特性として回転動作の動きをキャプチャーすることが難しいという点があります。
手首や手のひらなどの動きも精度はそこまで良くありません。

また、今回の場合は指の開閉動作などもキャプチャーできません。
Kinect自体は指の開閉動作をキャプチャーできるらしいので頑張ってソフトウェアを開発すればキャプチャーできるかもしれませんが・・・

Advertisement

Kinect v2とMMDでモーションキャプチャーをしてみましたが、細かい動きをキャプチャーするには向いていないと感じました。

また、Kinect v2はKinect v1と比べてソフトウェアが充実していないので、モーションキャプチャーメインでKinectを利用したいような場合はKinect v2よりもKinect v1を利用したほうが良いと思います。

とはいえ、条件が揃った環境で正面を向いた大まかな動きの全身キャプチャーをする場合には便利だと思います。体にセンサーを取り付ける必要もありませんし、設置するセンサーもKinectのみとかなり楽です。