Esempio n. 1
0
 public static GLTF.Math.Matrix4x4 ToGltfMatrix4x4Raw(this Matrix4x4 unityMat)
 {
     GLTF.Math.Vector4   c0         = unityMat.GetColumn(0).ToGltfVector4Raw();
     GLTF.Math.Vector4   c1         = unityMat.GetColumn(1).ToGltfVector4Raw();
     GLTF.Math.Vector4   c2         = unityMat.GetColumn(2).ToGltfVector4Raw();
     GLTF.Math.Vector4   c3         = unityMat.GetColumn(3).ToGltfVector4Raw();
     GLTF.Math.Matrix4x4 rawGltfMat = new GLTF.Math.Matrix4x4(c0.X, c0.Y, c0.Z, c0.W, c1.X, c1.Y, c1.Z, c1.W, c2.X, c2.Y, c2.Z, c2.W, c3.X, c3.Y, c3.Z, c3.W);
     return(rawGltfMat);
 }
Esempio n. 2
0
        /// <summary>
        /// Inverts the Z and W values of all Vector4s in an array to convert between glTF and Unity's coordinate systems.
        /// </summary>
        /// <param name="array">The array of Vector4s to be converted.</param>
        /// <returns>The array of converted Vector4s.</returns>
        public static GLTF.Math.Vector4[] FlipVectorArrayHandedness(GLTF.Math.Vector4[] array)
        {
            var returnArray = new GLTF.Math.Vector4[array.Length];

            for (var i = 0; i < array.Length; i++)
            {
                returnArray[i] = FlipVectorHandedness(array[i]);
            }

            return(returnArray);
        }
Esempio n. 3
0
 public static Vector4 ToUnityVector4(this GLTF.Math.Vector4 vec4)
 {
     return(new Vector4(vec4.X, vec4.Y, vec4.Z, vec4.W));
 }
Esempio n. 4
0
 /// <summary>
 /// Inverts the Z and W values of a Vector4 to convert between glTF and Unity's coordinate systems.
 /// </summary>
 /// <param name="vector">The Vector4 to be converted.</param>
 /// <returns>The converted Vector4.</returns>
 public static GLTF.Math.Vector4 FlipVectorHandedness(GLTF.Math.Vector4 vector)
 {
     return(new GLTF.Math.Vector4(vector.X, vector.Y, -vector.Z, -vector.W));
 }
Esempio n. 5
0
        /// <summary>
        /// Converts and copies based on the specified coordinate scale
        /// </summary>
        /// <param name="array">The array to convert and copy</param>
        /// <param name="coordinateSpaceCoordinateScale">The specified coordinate space</param>
        /// <returns>The copied and converted coordinate space</returns>
        public static Vector4[] ConvertVector4CoordinateSpaceAndCopy(Vector4[] array, GLTF.Math.Vector4 coordinateSpaceCoordinateScale)
        {
            var returnArray = new Vector4[array.Length];

            for (var i = 0; i < array.Length; i++)
            {
                returnArray[i].x = array[i].x * coordinateSpaceCoordinateScale.X;
                returnArray[i].y = array[i].y * coordinateSpaceCoordinateScale.Y;
                returnArray[i].z = array[i].z * coordinateSpaceCoordinateScale.Z;
                returnArray[i].w = array[i].w * coordinateSpaceCoordinateScale.W;
            }

            return(returnArray);
        }
Esempio n. 6
0
 /// <summary>
 /// Converts vector4 to specified coordinate space
 /// </summary>
 /// <param name="attributeAccessor">The attribute accessor to modify</param>
 /// <param name="coordinateSpaceCoordinateScale">The coordinate space to move into</param>
 public static void ConvertVector4CoordinateSpace(ref AttributeAccessor attributeAccessor, GLTF.Math.Vector4 coordinateSpaceCoordinateScale)
 {
     for (int i = 0; i < attributeAccessor.AccessorContent.AsVec4s.Length; i++)
     {
         attributeAccessor.AccessorContent.AsVec4s[i].X *= coordinateSpaceCoordinateScale.X;
         attributeAccessor.AccessorContent.AsVec4s[i].Y *= coordinateSpaceCoordinateScale.Y;
         attributeAccessor.AccessorContent.AsVec4s[i].Z *= coordinateSpaceCoordinateScale.Z;
         attributeAccessor.AccessorContent.AsVec4s[i].W *= coordinateSpaceCoordinateScale.W;
     }
 }
Esempio n. 7
0
 public static GLTF.Math.Vector4 ToGltfVector4Raw(this Vector4 unityVec4)
 {
     GLTF.Math.Vector4 gltfVec4 = new GLTF.Math.Vector4(unityVec4.x, unityVec4.y, unityVec4.z, unityVec4.w);
     return(gltfVec4);
 }