キネクトを使ってSIGVerseの人間エージェントの体の動きを操作する方法を紹介します。
※すでにOpenNIがクライアントpcにインストールされていて、サンプルコードNiUserTrackerが動作可能であることを前提条件とします。
キネクトにより骨格を抽出するサンプルプログラムを利用し、関節の回転データ(クオータニオン)を計算し、SIGVerseサーバにデータを送信します。
まず、以下のバイナリファイルをダウロードします。
※ソースコードの場合はこちら
ダウンロードしたバイナリファイルをOpenNIサンプルの実行ファイルがあるフォルダに移動します。デフォルトでは以下のフォルダです。
C:\Program Files (x86)\OpenNI\Samples\Bin\Debug
この状態でクライアントpcにキネクトを接続しておけば準備完了です。
サーバ側で関節データを受信し、コントローラで関節を回転させます。
まずコントローラを作成します。
$ cd ~/sigverse-<version>/bin/NewWorld $ emacs kinectAgent.cpp
kinectController.cpp
次にMakefileを修正してコンパイルします。 (※動作手順省略)
次に世界ファイルを作成します。
$ cd .. $ emacs xml/kinectWorld.xml
kinectWorld.xml
人間のみが登場するシンプルな世界ファイルです。キネクトで操作できるエージェントは人間エージェントのみです。
それでは実行してみましょう。
まずシグバースサーバを起動します。
$ ./sigserver.sh -p 9001 -w xml/kinectWorld.xml
次にSIGViewerで起動したサーバに接続します。接続すると人間が立っているのが見えます。"Send"ボタンを押しシミュレーションを開始します。
次にダウンロードしてOpneNIサンプルの実行ファイルフォルダの中に入れたSIGNiUserTrackerをダブルクリックして実行します。 すると以下のようなコンソール画面が立ち上がります。
接続するSIGVerseサーバのホスト名、ポート番号、操作するエージェント名の順に入力していきます。
深度画像が表示されたらキネクトの前で以下のようなポーズをとると骨格が検出され、人間エージェントを操作することができるようになります。