Unity AssetのKinect v2 Examples with MS-SDKを使用してKinect本体の矢状面と冠状面の角度を取得する方法を説明していきます。
1. 冠状面角度変数の追加
2016.5.31現在のAssetバージョンだと冠状面の角度の変数がなかったたAsset内のKinectManager.csにコードを追加していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public class KinectManager : MonoBehaviour { ...省略... [Tooltip("Kinect elevation angle (in degrees). May be positive or negative.")] public float sensorAngle = 0f; public float sensorAngleZ = 0f; ...省略... // Processes body frame data private void ProcessBodyFrameData() { ...省略... if((autoHeightAngle == AutoHeightAngle.AutoUpdate || autoHeightAngle == AutoHeightAngle.AutoUpdateAndShowInfo) && (sensorData.sensorHgtDetected != 0f || sensorData.sensorRotDetected.eulerAngles.x != 0f)) { float angle = sensorData.sensorRotDetected.eulerAngles.x; angle = angle > 180f ? (angle - 360f) : angle; sensorAngle = -angle; float angleZ = sensorData.sensorRotDetected.eulerAngles.z; angleZ = angleZ > 180f ? (angleZ - 360f) : angleZ; sensorAngleZ = -angleZ; float height = sensorData.sensorHgtDetected > 0f ? sensorData.sensorHgtDetected : sensorHeight; sensorHeight = height; // update the kinect to world matrix Quaternion quatTiltAngle = Quaternion.Euler(-sensorAngle, 0.0f, 0.0f); kinectToWorld.SetTRS(new Vector3(0.0f, sensorHeight, 0.0f), quatTiltAngle, Vector3.one); } } ...省略... } |
sensorAngle は元々機能としてあった矢状面の角度です。冠状面角度は sensorAngleZ で7行目、23〜25行目が追加したコードです。
2. Inspectorの設定
Inspectorの Auto Height Angle を Auto Update And Show Info に設定します。ちなみにこの設定をすると Sensor Height でKinectの高さも取得できるようになります。
3. 呼び出し側のコードの用意
呼び出し側は以下のようにTestManager.csを作るなどして取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class TestManager : MonoBehaviour { public KinectManager kinectManager; // Use this for initialization void Start() { } // Update is called once per frame void Update() { // 矢状面 float kinectAngle = kinectManager.sensorAngle; Debug.Log(kinectAngle); // 冠状面 float kinectAngleZ = kinectManager.sensorAngleZ; Debug.Log(kinectAngleZ); } } |
Editorで実行すると次のようにInspectorに角度が表示されることがわかります。
コメントを残す