v1.6で新たに取得できるようになった、3軸加速度センサーの値を見てみましょう。
加速度センサーは特に設定など必要なく、値が欲しいときにKinectSensor.AccelerometerGetCurrentReading()を呼び出すとVector4として加速度の値が返ってきます。それぞれ軸の方向は次のようになっています。
単純に値を表示するだけであれば、次のようにします。全体のコードはこちらにあります
Vector4 accelerometer = kinect.AccelerometerGetCurrentReading();textAccelerometerX.Text = accelerometer.X.ToString();
textAccelerometerY.Text = accelerometer.Y.ToString();
textAccelerometerZ.Text = accelerometer.Z.ToString();
この加速度センサーの値から現在のKinectの角度を取得してみましょう。加速度センサーの扱いは、Windows Phoneと同じようにできるので、こちらのサイトを参考に角度を求めてみました。座標系が異なるため軸と値を少しいじっています。
int GetAccelerometerAngle(){
// http://thinkit.co.jp/story/2011/11/11/2329?page=0,2
Vector4 accelerometer = kinect.AccelerometerGetCurrentReading();
return -(int)Math.Round( Math.Asin( accelerometer.Z ) * 180 / Math.PI );
}
これをやっていて初めて気づいたのですが、KinectSensor.ElevationAngleで取得される角度は、上記GetAccelerometerAngle()で取得される値と同じなのですね。ずっとチルトの角度だと思っていたのですが、水平位置に対する角度だったようです。台座をいろいろな角度で持ってみてKinectSensor.ElevationAngleを0に設定すると、Kinectは水平方向に動きました。