Esempio n. 1
0
        /// <summary>
        /// Convert gltf quaternion to a unity quaternion
        /// </summary>
        /// <param name="gltfQuat">gltf quaternion</param>
        /// <returns>unity quaternion</returns>
        public static Quaternion ToUnityQuaternionConvert(this GLTF.Math.Quaternion gltfQuat)
        {
            Vector3 fromAxisOfRotation = new Vector3(gltfQuat.X, gltfQuat.Y, gltfQuat.Z);
            float   axisFlipScale      = CoordinateSpaceConversionRequiresHandednessFlip ? -1.0f : 1.0f;
            Vector3 toAxisOfRotation   = axisFlipScale * Vector3.Scale(fromAxisOfRotation, CoordinateSpaceConversionScale.ToUnityVector3Raw());

            return(new Quaternion(toAxisOfRotation.x, toAxisOfRotation.y, toAxisOfRotation.z, gltfQuat.W));
        }
        /// <summary>
        /// Convert gltf quaternion to a unity quaternion
        /// </summary>
        /// <param name="gltfQuat">gltf quaternion</param>
        /// <returns>unity quaternion</returns>
        public static Quaternion ToUnityQuaternionConvert(this GLTF.Math.Quaternion gltfQuat)
        {
            // get raw matrix conversion (gltf matrix stored in a unity matrix for easier math)
            Vector3 origAxis      = new Vector3(gltfQuat.X, gltfQuat.Y, gltfQuat.Z);
            float   axisFlipScale = CoordinateSpaceConversionRequiresHandednessFlip ? -1.0f : 1.0f;
            Vector3 newAxis       = axisFlipScale * Vector3.Scale(origAxis, CoordinateSpaceConversionScale.ToUnityVector3Raw());

            // then put the quaternion back together and return it
            return(new Quaternion(newAxis.x, newAxis.y, newAxis.z, gltfQuat.W));
        }
Esempio n. 3
0
 public static Quaternion ToUnityQuaternion(this GLTF.Math.Quaternion quaternion)
 {
     return(new Quaternion(quaternion.X, quaternion.Y, quaternion.Z, quaternion.W));
 }