スケルトントラッキングをスキンモデルのボーンに適用してみる

 「OpenNIDotNetSample」(仮称)の続きです。何はともあれ、スケルトントラッキングの関節情報を、スキンモデルの3Dキャラクターに適用してみることにしました。


3Dキャラクター

 スキンモデルは、これまでに自作のものを使います。XNA Game Studio 3.1用の「Dragoon」のキャラクター「Lulie」モデルと、そのライブラリ「XModel」ほかをもってきて、XNA Game Studio 4.0で動くように修正を加えました。

  • XNA Game Studio 4.0のアルファテストの仕様変更に対して、簡単に対応するためアルファテストの適用を省いています。これにより、描画は少し劣化しています。
  • 影の描画は省略しています。

状況

 今回もまた、前回と似たようなポーズでスクリーンショットを撮りました。前回よりも、USBキーボードを持っていそうな感じがわかるでしょうか。
 画面は解像度を上げ、「RGBマップ」「深度マップ」「関節の赤い点」は左上寄りのままにしています。これらと3Dモデルを表示の位置合わせは未解決です。

  • モデルの描画は、ポーズの確認が直観的になるよう、カメラをTPS視点のように、キャラクターの背後にしています。
  • 手(Hand)と足(Foot)から得られるデータは、位置のみで、回転は0行列になっています。これらは親の関節を同じ向きとなるようにしました。
  • 頭(Head)は回転のデータも得られますが、傾げてもあまりそうはならない様子です。
  • 変換を調整してみていますが、まだ十分ではなさそうです。特に足の動きが違うようです。赤い点の片足立ちのポーズに比べると、モデルのポーズは安定した姿勢には見えません。少しボーンの回転が変です。
  • 位置は処理していません。関節の回転のみを、対応するボーンに適用しています。

 OpenNIの座標系を把握していないこともあり、座標計算周りの解決の見通しは不透明です。