protected void ConvertMagicLeapKeyPoint(MLKeyPoint keyPoint, TrackedHandJoint joint)
 {
     if (keyPoint.IsSupported)
     {
         var position = keyPoint.Position;
         UpdateJointPose(joint, position, Quaternion.identity);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Create a GameObject for the desired KeyPoint.
        /// </summary>
        /// <param name="keyPoint"></param>
        /// <returns></returns>
        private GameObject CreateKeyPoint(MLKeyPoint keyPoint, Color color)
        {
            GameObject newObject;

            newObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            newObject.transform.SetParent(transform);
            newObject.transform.localScale = new Vector3(0.01f, 0.01f, 0.01f);
            newObject.name = keyPoint.ToString();
            newObject.GetComponent <Renderer>().material.color = color;

            return(newObject);
        }
Exemplo n.º 3
0
        private Quaternion GetOrientation(MLKeyPoint wristCenter, params MLKeyPoint[] hand)
        {
            if (handShape.Length != hand.Length)
            {
                handShape = new Vector3[hand.Length];
            }

            for (var i = 0; i < hand.Length; ++i)
            {
                handShape[i] = (hand[i].Position - wristCenter.Position).normalized;
            }

            var forward = Vector3.zero;
            var up      = Vector3.zero;

            for (var i = 0; i < handShape.Length - 1; ++i)
            {
                var j = i + 1;
                var a = handShape[i];
                var b = handShape[j];
                forward += Vector3.Cross(a, b);
                up      += a;
            }

            if (IsRightHand)
            {
                forward *= -1;
            }

            forward.Normalize();
            up.Normalize();

            var q     = Quaternion.LookRotation(forward, up);
            var right = Vector3.Cross(forward, up);
            var twist = Quaternion.AngleAxis(twistHand, forward);
            var raise = Quaternion.AngleAxis(raiseHand, right);
            var rot   = Quaternion.AngleAxis(rotateHand, up);

            return(raise * rot * twist * q);
        }