Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

KINET SDKを使う その2・スクリプト解析編

KINECT SDKを使う その1・環境設定編 - Unityな日々(Unity Geek)の続き

KinectInterop.cs
Kinectとのインターフェースを司どる最下層のスクリプト

public interfrace KinectInterface :Kinectとのインターフェース定義。実装はKinectSensor.csで定義される

KinectSensor.cs
Marshalクラスを用いてデータを取得している。たとえば、

ColorBuffer cb = (ColorBuffer)Marshal.PtrToStructure(buf.m_pBuffer,typeof(ColorBuffer));

は、MarshalクラスのPtrToStructureメソッドを用いて、ポインタ(buf.m_pBuffer)の示すバッファデータを、ColorBufferにマーシャリング(型変換)する。ColorBuffer構造体は、KinectInterop.csに定義されている。

C#はマネージ環境、一方Kinect DLL APIはアンマネージ環境で実装されているため、マーシャリングが必要となるらしい。マーシャリングについてはこのあたりを参考に。

Unity/KINECT SDKスクリプトの中で中心的役割を果たすSkeletonWrapperは、Kinect Prefabにアタッチされている。