2010-12-13

[][][]Kinect + OpenNIでモーションキャプチャー Kinect + OpenNIでモーションキャプチャー - Nao_uの日記 を含むブックマーク はてなブックマーク - Kinect + OpenNIでモーションキャプチャー - Nao_uの日記 Kinect + OpenNIでモーションキャプチャー - Nao_uの日記 のブックマークコメント


Kinectと、先日公開されたOpenNIを使って簡単なモーションキャプチャーを作ってみた。

まだ補間や細かい調整などは入っていなくて、OpenNIからもらってきた骨情報を何も考えずにそのままモーションに流し込んでいる状態で、脚の動きや体をひねったりなどの動作には対応できていない。

PTAMの時と同様にサンプルプログラムのWindow名を経由して関節の位置を取得している。PTAMほどではないけれど、頻繁に再起動をかけるときにも元アプリの再キャリブレーションが必要ないのはとても楽でいい。

OpenNIで取ってくるデータは骨の位置はかなり綺麗に拾ってくれているんだけど、前後の奥行きの判定は微妙に怪しい雰囲気。

部屋が狭いのでカメラを棚に置いて少し斜め上から撮っているせいか、「前へならえ」のポーズを取ったときに、平行に腕を伸ばしてるつもりなのに斜め上30度くらいに伸ばしてると判定されてしまっている。カメラから見た画像では正しく見えているんだけど、実際には奥行きがずれているためにモデルに割り付けてみるとおかしなポーズになってしまう現象も時々起こる。

360の実機で動くゲームでは床との角度も調べてるようで、同じカメラ位置であっても市販のゲームで遊ぶときにはこのような症状は起こらなかった。もしかしたら奥行きが上手く取れないのもカメラ位置がまずいのが原因かもしれないけれど、このあたりは今後のバージョンアップにも期待したい。

それにしても、発売からこんなに短期間で関節構造まで取得できるライブラリが公開されるとは思わなかった。

ある程度早い動きでもそれなりに追随してくれて個人用の簡易モーションキャプチャーとしても十分な精度をもっていそうなので、いままで手付けで作るしかなかったモーション作成も、個人レベルでキャプチャーできる環境が整ってくればさらにいろいろ面白いものを作る人が出てくるかも。さっそく動画サイトにもOpenNIをつかった動画がアップロードされはじめてるみたいなので、今後の展開がとても楽しみ。

追記:
  • 腕を伸ばす角度は斜め上からの撮影を止めることで改善できた
  • 奥行き情報に関しては、Z値をスケーリングすることで回避