OpenNIの.NET用ラッパーライブラリ「XELF.OpenNI」更新 & サンプル公開

 「XELF.OpenNI」のサンプル(プログラムとソースコード)として、「XELF.OpenNI.Sample」を公開します。以前に経過を書いた「OpenNIDotNetSample」(仮称)を整理し、スケルトントラッキングの状態を赤い点で表示する段階+αに相当しています。

 また、「XELF.OpenNI」は対応APIを一部追加しました。

XELF.OpenNIの概要

 Kinectセンサーを活用するAPI/ライブラリとして、「OpenNI」( http://www.openni.org/ )があります。「XELF.OpenNI」は、OpenNIをWindowsの.NET言語環境(C#XNAなど)から利用しやすいように、OpenNIのC言語APIを.NET用に部分的にラップしたクラスライブラリです。
 .NETアプリケーションからは、アセンブリDLLとして「XELF.OpenNI.dll」を参照して利用することができます。「XELF.OpenNI.dll」の利用には、OpenNIの環境を構築する必要があります。

XELF.OpenNI.Sample

 XELF.OpenNIのサンプル(プログラムとソースコード)です。

概要

 RGB画像と深度画像を表示します。Ψポーズでキャリブレーションに成功すると、赤い点でスケルトントラッキングの状態が表示されます。

サンプルの実行環境
  • 以下のフレームワークとデバイスが動作するWindows用です。
  • このサンプルのビルドや実行には、XNA Game Studio 4.0のインストールが必要です。
  • OpenNIの環境を構築する必要があります。
サンプルの操作方法
キーボード 機能
[P] ケルトントラッキング表示/非表示
[D] 深度マップ表示/非表示
[I] RGBマップ表示/非表示
[S] ステータス文字情報表示/非表示
ソースコード

 現状では、ソースコードのコメントは整備されていませんが、XELF.OpenNIの呼び出し方の参考にどうぞ。XELF.OpenNIを改変してサンプルをビルドする場合には、改変したXELF.OpenNI(アセンブリまたはプロジェクト)に参照しなおしてください。

C#ソースファイル 機能
OpenNIDevice.cs XELF.OpenNIの基本的な管理をまとめたもの。この部分は、C#など、.NET Frameworkで汎用的に使えます。XNAに依存していません
OpenNIGame.cs サンプル本体部分。XNAのGameクラス
XnaHelper.cs XNAとの連携を補助する機能。画像マップや深度マップのテクスチャ化、型変換など
JointNode.cs 関節の姿勢をフィルタしたり、ローカル座標に変換したりする。このサンプルでは可視化されていませんが、3Dキャラクターに関節情報を適用する情報を構築するための参考実装です
PoseFilter.cs 姿勢の入力情報をフィルタ処理する場所。このサンプルではほとんど何もしていません
XELF.OpenNI.Sampleのライセンス

 サンプル「XELF.OpenNI.Sample」については、Ms-PLとLGPLのデュアルライセンスとしておきます。

XELF.OpenNIの主な機能(2011-01-16版)

概要
Context XML設定ファイルからのコンテキスト作成
Node 機能の確認(※)
Generator 視点の設定(※)
UserGenerator 全身のスケルトントラッキングキャリブレーションやトラッキングの開始。「重心」や関節の「位置」「回転」の取得
SceneAnalyzer 床面情報の取得
ImageGenerator RGBマップの取得
DepthGenerator 深度マップの取得

(※) 追加更新部分

さらなるXELF.OpenNIの基本情報などは、過去の記事を見てください http://d.hatena.ne.jp/XELF/20110107/1294400103