9月14日にKinectを購入し、週末が来る度にセコセコ作業して2週間かかりましたが・・・ようやく出力したbvhをPoserに読み込ませる事に成功しました。1度導入に成功するまでは「何が悪くて動かないのか」がサッパリ解らない状態でしたが、一度インストール成功すればどの辺で失敗してたかが大体わかって来ます。;
64bit WindowsマシンへのKinect導入手順として活用できるページになるよう、2011年10月時点の情報として、ある程度詳細に手順を書きました。
まずはKinectでキャプチャしたデータの動画
KinectでキャプチャできるデータをPoserに取り込むと以下な感じ。導入1日目のデータなんで、使い方が上手くなればもう少し良いデータが取れるかも。
キャプチャしたデータをPoserに取り込み、補正や修正処理は一切しない状態でYouTubeにアップしています。▼Kinect+ライブアニメーションでモーションキャプチャしてbvhを出力し、Poserに取り込んだもの。
現状、精度はこれくらい。腰にひねりが加わる動作や、手足がカメラの死角に入るとダメですねぇ。十分使えると見るか、まだまだと見るか、判断の難しいラインです。
- 歩く・その場で回る、等の動きは思ったより高い精度で認識してくれる。
- カメラが1台なので、手足が身体の後ろに隠れた場合は正しく認識しない。
腰にひねりの入る動作も認識が難しい。
「腕を組む」みたいな動作も認識してくれる事は稀。 - 腰・腹・胸・肩の関節なし? or 認識させ難い? or ライブアニメーションの設定が不十分? この辺はこれから勉強していく。
- 6畳一間だと、両手両足を大きく広げる動作は画面からはみ出てしまい、正しく認識しない。オプションの広角レンズを購入する必要があるかも。
Kinect: Amazonリンク
▲Kinect本体。これは良いものだ。
ZOOM for Xbox 360 (英語版/日本語説明書同梱)
▲部屋が狭い(6畳以下)でも大きな動きをキャプチャーしたい、って場合、レンズを40%広角にできるレンズアダプタ。
これから購入予定。「精度が悪くなる」って噂もあり、少々不安が残るけれど、今の部屋じゃあ「バンザイ」ポーズする時、全身が画面に入らない。 →買ってみた。モーションキャプチャ用途には向かない。。。
導入の手順
ざっくり書いておく。
※64bit版Windows7 SP1向けに書いた手順です。
※2011年10月2日時点での情報です。各バージョンは日付時点の最新版です。
- 前準備
まだKinectは接続しません。
- Microsoft Visual c++ 2010 Express のインストール
Kinectの各種ツールを作動させるために必要。 - 最新のDirectX SDKと最新のDirectX
ライブアニメーションに必要。(DirectX SDKは不要かも?) - Microsoft XNA Framework Redistributable 4.0とMicrosoft .NET Framework 4のインストール
ライブアニメーションに必要 - Windows7 64bitマシンの場合は、PC環境をテストモードにする
管理者権限でコマンドプロンプトを実行し
bcdedit /set TESTSIGNING ON
を実行。(これしないと一部のドライバが正しくインストール出来ない) - データ入力機器系のUSB機器は全部外す。
当方でエラーが出たUSB機器
・ワコムのペンタブレット
▲こんなメッセージが出る。ペンタブレットとKinectの併用は無理。
・地デジチューナー MontsrX HDUS
(9/30~10/1にKinectセットアップしたので、BS/CS番組改編にぶち当たっただけかも?) - 以前インストールしたKinectドライバがあるならば、全て削除しておく
- 諦めない心
- アチコチのサイトを読んで回ると、「何故か解らないが2度目のインストールで作動するようになった」系の記述が非常に多い。
- 正しいドライバをインストールしても、上手く認識しない・作動しない事が多々ある感じ。
- ドライバの削除とインストールをくり返してみるのが非常に大事。
- 私の場合も他聞に漏れず、正しいドライバを選択した後も作動する気配無し。2度目のインストールで何故かアッサリ認識・起動した。
- Microsoft Visual c++ 2010 Express のインストール
- OpenNIのインストール
Kinectドライバやセンサーツールを作動させるためのラッパー。様々な人体センサーで利用されている。
初めてトライする時は、32bit Stable版を選ぼう。
- OpenNI >OpenNI Modules >OpenNI Binaries と進んで
Stable版の 32bit Windows用 OpenNI Stable Build for Windows x86 (32-bit)v1.3.2.1 Development Editionをインストール。
(Redist Edition や64bit版は上手く作動しなかった)
(インストール先はC:\Program Files (x86)で大丈夫だった。)
- OpenNI >OpenNI Modules >OpenNI Binaries と進んで
- Kinectドライバ(avin2 /SensorKinect)のインストール
初めてトライする時は、32bit Stable版を選ぼう。
- github.comで配布されている avin2 / SensorKinect をインストールする。
上記リンクの「Download」からZipファイルをダウンロード。 - Binフォルダ内のSensorKinect-Win-OpenSource32-5.0.3.3.msiをインストール。
- 上記リンク内のUnstable版は作動しなかった。
- 注意! Windows版の stableバージョンは32bit用のみ。
また、openni.orgで配布しているSensorKinectは(64bit/32bit共に)上手く作動しない。
- github.comで配布されている avin2 / SensorKinect をインストールする。
- KinectをPCに接続
- 初めてKinectを接続した場合、ドライバを認識し、作動が落ち着くまでに5分くらいかかる感じ。念のため1回PCを再起動させよう。
- 深度センターは赤外線を使っている。直射日光に弱いので、日光の当たらない部屋で利用しよう。
- 作動確認
C:\Program Files (x86)\OpenNI\Samples\Bin\Release\ 内の
NiSimpleViewer.exe を起動し、白黒の深度映像モニタが表示されたら、ドライバの導入は成功(人体認識はまだ)
- 何も表示されない、エラーが出る場合は、ドライバとOpenNIを削除し、PCを再起動し、再チャレンジ。2回目で成功する事も良くある。
2度目も失敗した場合はUSBポートを変更したり、不要なUSB機器を外したりしてみる。
- 何も表示されない、エラーが出る場合は、ドライバとOpenNIを削除し、PCを再起動し、再チャレンジ。2回目で成功する事も良くある。
- PrimeSense NITE のインストール
骨格認識させるためのセンサーツール?(姿勢認識ライブラリ)
初めてトライする時は、32bit Stable版を選ぼう。
- OpenNI >OpenNI Modules >OpenNI Compliant Middleware Binaries と進んで、Stable版の 32bit Windows用
PrimeSense NITE Stable Build for Windows x86 (32-bit) v1.4.0.5 Development Edition を ダウンロード・インストール
- ページ内にライセンスキーの表記がある。各種資料には「インストール時にキー入力を求められる」と書いてあるが、キー入力必要は無かった
- Redist Edition や64bit版は上手く作動しなかった
- インストール先はC:\Program Files (x86)で大丈夫だった。(2010年12月~2011年3月頃の解説サイトには「64bit Windowsの場合はインストール先をC:\Program Filesに変更」と書いてある所が多いが、全く上手く行かなかった。)
- 作動確認1
C:\Program Files (x86)\PrimeSense\NITE\Samples\Bin\Release 内の
Sample-Players.exe を起動してみる。白黒画面が表示されたら、今度は人間を映してみて、人体認識されるか、「荒ぶるkinectのポーズ」が認識されるか確認してみる。 - 作動確認2
kinect-ultra (ウルトラセブンになりきれるヤツ)
などをインストールしてみて、正しく作動するか確かめてみる。
- サンプルや、ユーザーが公開しているツールが作動しない場合は、別バージョンのPrimeSense NITEを試してみる。
「3.~4.」あたりが上手く作動していれば、ここで躓く事は少ない
- サンプルや、ユーザーが公開しているツールが作動しない場合は、別バージョンのPrimeSense NITEを試してみる。
- OpenNI >OpenNI Modules >OpenNI Compliant Middleware Binaries と進んで、Stable版の 32bit Windows用
- ライブアニメーション本体
- PoserにBVHを読み込ませたいなら、β4.01(LiveAnimation_46.zip)以前の古いバージョンを利用する。最新のバージョンはbvh出力に変なオプションが付いていて、Poserに正しくインポートできない。
- ライブアニメーションのキネクトプラグン
- kinectのドライバインストール終了、正しく認識できた後に利用する事。
- kinect導入前にこのプラグインを使うと、HDD内にゴミが残り初期化失敗するようになる。
- kinectのドライバインストール終了、正しく認識できた後に利用する事。
- ライブアニメーションでキネクトの初期化が失敗する時
- ライブアニメーションのキネクトプラグンページ内の「問題が出た時」欄のデバッグ用dllファイルを利用すると、ゴミが消えるっぽい。
- その後に通常のキネクトプラグインに戻すと、上手く作動するようになる。
- あとはモーションキャプチャするだけ・・・!
- ライブアニメーションの「編集」>「Kinect」を選択すれば、モーションキャプチャが開始される。
- どうやら60fps固定っぽい(kinectは30fps)。ちょっと遊んだだけで2000~3000フレーム突破するので気をつけよう。
最初は500フレーム以下のBVHファイルを出力するのが無難。
(ライブアニメーションにトリム機能があるので利用する)
- コツ:Kinectは、腰の高さに設置する
カメラに俯瞰や仰角のアオリが付くと、人体モデルが不自然に傾く。Kinectは水平に設置。人体の中心と同じ高さに設置。 - 黒い服・ダボダボの服は誤認識の原因になる。
パンツ一丁、ほぼ全裸だとかなりの精度で認識してくれる(^_^; - PoserにBVHをインポートする際、3000フレームを読込むには5分前後必要。読み込み後も、すごく重い。
- ライブアニメーションβ4.01使用時ならば、BVHエキスポート/Poserでのインポート、どちらもデフォルト設定でOK(Poserインポート時、体の向きは180度反転する。)
- その他、細かい使い方はこれから覚えるところ。
- コツ:Kinectは、腰の高さに設置する
導入に2週間かかった理由・つまづいた箇所など
私の場合、導入に2週間もの時間が掛かった理由は以下。
結構沢山つまづいた。
- 64bit版OpenNIを使おうとあくせくしてしまった。
- 現段階では、64bit版はまだ不安定。特に、avin2 / SensorKinect の64bit版がまだまだな感じ。
- あと、Redist版では上手く作動しなかった。最初はDevelopment版を使ってみる。
- 32bit版を利用する際も、「インストール先をC:\Program Filesに変更しないと作動しない」系の情報に踊らされた感じ。
- 現行のOpenNIもしくはWindows7 SP1以降は、C:\Program Files (x86)にインストールすればきちんと正常作動する。
- openni.orgで配布しているSensorKinectを利用していた。
- 現状、github.comで配布されている avin2 / SensorKinect の32bit Stable版じゃないとダメな感じ。
- PCに大量のUSB機器を接続した状態でKinectドライバをインストールしていた。
入力デバイス系のUSB機器とコンクリフトが起きてるかも。- Kinectが正常作動するようになった直後にタブレットがおかしくなり気が付いた。
- 全く上手く行かなくて、一時的にKinect for Windows SDK from Microsoftに逃げていた。
- BVH出力ができ、かつ使いやすいツールが発見できずに諦めた。
- Kinectの導入に成功する前にライブアニメーションのKinectプラグインを導入してしまっていた。
- PC内に変なゴミが残り、Kinect導入成功後もライブアニメーションと連携できずに困った
前述のデバッグ用dllファイルを利用したら、あっさり初期化&起動するようになった。
- PC内に変なゴミが残り、Kinect導入成功後もライブアニメーションと連携できずに困った
ちなみに、ライブアニメーションの自体は今年の7月頃からチェックしており、その頃にBVHファイルが使える事を確認していたのはラッキーだった。(現行最新Verのライブアニメーションは、Poserで正しく読めないBVHを吐き出すので、最新Verしか知らない場合はこれまた投げ出す所だった。)
元気を貰った書籍
とりあえず、Kinectを上手く作動できなかった2週間の間は、こいつを読む事でモチベーションの低下を防ぐ事が出来た。
▲Kinectと同時に購入した書籍。
2011年8月末発行で、情報もかなり新しいものまで含まれている。プログラミングしない人にとっては、7割以上が必要ない情報になっちゃうけど、OpenNIとKinect for Windows SDK の違いや、ネットで集められなかった細かいエピソードなどがまとめてあり、非常に良いものだった。