Kinect SDK (1.8 > 2.0) Managed ver. の主な変更点

マイクロソフトの許可を得て使用しています。Microsoft.com をご覧ください。

Managed(C#) 版の Microsoft Kinect SDK 1.8 から 2.0 への主な変更点についてまとめておきます。 気になった段階で随時更新します。 検索などで見つかる Kinect の開発情報が v1(SDK1.8) 世代のものであるのか、 v2(SDK2.0) 世代のものであるのかを判断するための参考になると考え、公開することにしました。

骨格情報関連

Skeleton が Body に変更されました。
名称以外の基本的な機能は同じようです。
Body.TrackingID が int から ulong に変更されました。
int で収まらないことはなかったと思うんですけども。
Bone 構造体がなくなりました。
Joint 構造体に JointOrientation が含まれていますからこれを利用しろということですかね。
Joint 構造体の JointType が set できるようになりました。
ずっとできないのは不便だと思っていましたが、解禁されました。
JointTrackingState が TrackingState に変更されました。
Bone が廃止された影響かと思います。
過去には msdn のリファレンスに set できると表記されることもありました。
JointCollection クラスがなくなりました。
IReadOnlyDictionary の形式になりました。
JointCollectin があっても良かった気がします。パフォーマンスを気にするのであれば UnManaged を使うのですし。

座標関連

ColorImagePoint が ColorSpacePoint に変更されました。
DepthImagePoint が DepthSpacePoint に変更されました。
SkeletonPoint が CameraSpacePoint に変更されました。
名称以外の基本的な機能は同じようです。

画像データ関連

DepthImagePixel がなくなりました。
BodyIndexFrame と DepthFrame に分散されるようになった形です。
v1 初期の頃の unshort で一斉に送ってくれる実装形態の方が楽でしかも処理が早かったのですが…。

音声データ関連

Audio の取得が、Audio フレームに変更になりました。
AudioSourceAngle がなくなりました。
AudioSourceAngle と BeamAngle とがありましたが、BeamAngle に統一されました。
音声ストリームの取得方法が変更されました。
AudioBeam を取得し、そこから OpenInputStream() メソッドを呼ぶ方法に変更されています。
音声ストリームの仕様変更されました。
Length プロパティが NotSupportedException を返すようになっています。(確かに変更されたことを確認できませんが v2 では Exception です。)

その他

KinectSensor.Stop() と KinectSensor.Dispose() がなくなりました。
SDK1.8 まではいくつもあって分かり難かったのですが、停止命令は KinectSensor.Close() だけになったようです。