Unity AssetのKinect v2 Examples with MS-SDKを使用してボーンの位置を取得してuGuiのImageをColor映像で見たのと同じ位置に追随させる方法は以下のようなコードになります。
下の例では左手のボーンを取得してそれに合わせてImageが動くコードになっています。
はじめに GetJointPosColorOverlay でColor映像に合わせた3D座標の位置を取得し、そのあとに WorldToScreenPoint で3D座標を2Dのピクセル値で取得しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestKinect : MonoBehaviour { public KinectManager kinectManager; public GameObject imageObj; void Update() { long userId = kinectManager.GetPrimaryUserID(); // 一旦RGB映像に重ね合わせるための3Dの位置を取得します。 Vector3 handLeftPos = kinectManager.GetJointPosColorOverlay(userId, 7, Camera.main, Camera.main.pixelRect); // WorldToScreenPointを使ってピクセル値で左手の位置を取得します。 Vector2 handLeftVec2 = RectTransformUtility.WorldToScreenPoint(Camera.main, handLeftPos); imageObj.transform.localPosition = handLeftVec2; } } |
コメントを残す