/// <summary> /// 显示Vector的方向和大小 /// </summary> /// <param name="pos">Position.</param> /// <param name="dir">Dir.</param> void ShowTheDatasPosAndDir(Vector pos, Vector dir) { UnityEngine.Vector3 unityDir = VectorTrans.ToUnityVector3(dir); UnityEngine.Vector3 unityPos = VectorTrans.ToUnityVector3(pos); Debug.DrawRay(unityPos, unityDir * 10, Color.blue); print(unityPos + "," + unityDir); }
//___________________Test_______________ /// <summary> /// test Hand.Direction, /// 该方法只有在手掌平摊伸直时有意义。 /// </summary> void HandDirection() { Frame frame = m_LeapCtrl.Frame(); Hand hand = frame.Hands [0]; Vector3 v1 = VectorTrans.ToUnityVector3(hand.PalmPosition); Vector3 v2 = VectorTrans.ToUnityVector3(hand.Direction); Debug.DrawRay(v1, v2 * 100, Color.red); print(v1 + "," + v2); }
//显示单个手指的数据 //1.掌心到手指的连线-红色 //2.手指的方向-蓝色 void ShowFingerData(int handIndex, PointData palmData, FingerData fingerData) { Vector3 handPos = VectorTrans.ToUnityVector3(palmData.m_Position); Vector3 handDir = VectorTrans.ToUnityVector3(palmData.m_Direction); Vector3 fingerPos = VectorTrans.ToUnityVector3(fingerData.m_Position); Vector3 fingerDistalPos = VectorTrans.ToUnityVector3(fingerData.m_Point.m_Position); Vector3 fingerDir = VectorTrans.ToUnityVector3(fingerData.m_Point.m_Direction); Debug.DrawLine(handPos, fingerPos, Color.red); Debug.DrawLine(fingerPos, fingerDistalPos, Color.red); //手心到指尖的连线 Debug.DrawLine(handPos, fingerDistalPos, Color.yellow); float vecLength = (fingerPos - fingerDistalPos).magnitude; Debug.DrawRay(fingerDistalPos, fingerDir * vecLength * 0.1f, Color.blue); Debug.DrawRay(handPos, handDir * vecLength * 0.1f, Color.blue); }
//显示食指的骨根位置,近端位置,和指尖的位置及其连线 void ShowIndexFinger() { Vector3 pos0 = Vector3.zero; Vector3 pos1 = Vector3.zero; Vector3 pos2 = Vector3.zero; HandList hs = m_LeapCtrl.Frame().Hands; foreach (var f in hs.Leftmost.Fingers) { if (f.Type() == Finger.FingerType.TYPE_INDEX) { pos0 = VectorTrans.ToUnityVector3(f.Bone(Bone.BoneType.TYPE_METACARPAL).Center); pos1 = VectorTrans.ToUnityVector3(f.Bone(Bone.BoneType.TYPE_PROXIMAL).Center); pos2 = VectorTrans.ToUnityVector3(f.Bone(Bone.BoneType.TYPE_DISTAL).Center); } } Debug.DrawLine(pos0, pos1, Color.red); Debug.DrawLine(pos0, pos2, Color.yellow); Debug.DrawLine(pos1, pos2, Color.green); }