/// <summary> /// Updates a Finger in a hand model /// </summary> /// <param name="t">Root of the transform to be updated</param> /// <param name="finger">Finger number to be updated</param> /// <param name="quat">Manus Quaternion to be used</param> /// <param name="hand">Hand to be updates</param> private void GameObjectToSkeletal(ref Transform t, int finger, GLOVE_QUATERNION q, GLOVE_HAND hand) { if (null == t) { return; } t.localRotation = new Quaternion(-q.y, -q.z, q.x, q.w); for (int j = 0; j < 4; j++) { FindDeepChild(t, "Finger_" + finger.ToString() + j.ToString()).localRotation = FindDeepChild(gameObject.transform, "Finger_" + finger.ToString() + j.ToString()).localRotation; //Debug.Log(FindDeepChild(t, "Finger_" + finger.ToString() + j.ToString()).localRotation); //Debug.Log(FindDeepChild(gameObject.transform, "Finger_" + finger.ToString() + j.ToString()).localRotation); } }
/// <summary> /// Converts a Quaternion from Manus to Unity format /// </summary> /// <param name="q">Quaternion in Manus format</param> /// <returns>Quaternion in Unity format</returns> private Quaternion ManusToUnity(GLOVE_QUATERNION q) { return center * new Quaternion(q.x, q.z, q.y, -q.w); }
/// <summary> /// Converts a Quaternion from Manus to Unity format /// </summary> /// <param name="q">Quaternion in Manus format</param> /// <returns>Quaternion in Unity format</returns> private static Quaternion ManusToUnity(GLOVE_QUATERNION q) { return(new Quaternion(-q.y, -q.z, q.x, q.w)); }
public static extern int ManusGetGravity(out GLOVE_VECTOR gravity, ref GLOVE_QUATERNION quaternion);
public static extern int ManusGetEuler(out GLOVE_VECTOR euler, ref GLOVE_QUATERNION quaternion);