/// <summary>
        /// 指定された回転(X, Y, Z)を回転行列に変換します
        /// </summary>
        /// <param name="RotationVector">Rotation_Value</param>
        /// <param name="rotationMatrixAxis">Rotation Axis</param>
        /// <param name="MV3D">ModelVisual3D</param>
        /// <returns>Matrix3D</returns>
        public Matrix3D EulrRotation(Vector3D RotationVector, RotationMatrixAxis rotationMatrixAxis = RotationMatrixAxis.XYZ, ModelVisual3D MV3D = null)
        {
            Vector3D?Position3D = null;

            if (MV3D != null)
            {
                Position3D = new Vector3D(Math.Round(MV3D.Transform.Value.OffsetX, 3), Math.Round(MV3D.Transform.Value.OffsetY, 3), Math.Round(MV3D.Transform.Value.OffsetZ, 3));
            }
            if (MV3D == null)
            {
                Position3D = new Vector3D(0, 0, 0);
            }

            Matrix3D RotationEulrX = new Matrix3D
            {
                M11 = 1,
                M12 = 0,
                M13 = 0,
                M14 = 0,

                M21 = 0,
                M22 = Math.Cos(RotationVector.X),
                M23 = -Math.Sin(RotationVector.X),
                M24 = 0,

                M31 = 0,
                M32 = Math.Sin(RotationVector.X),
                M33 = Math.Cos(RotationVector.X),
                M34 = 0,

                OffsetX = 0,
                OffsetY = 0,
                OffsetZ = 0,
                M44     = 1
            };

            Matrix3D RotationEulrY = new Matrix3D
            {
                M11 = Math.Cos(RotationVector.Y),
                M12 = 0,
                M13 = -Math.Sin(RotationVector.Y),
                M14 = 0,

                M21 = 0,
                M22 = 1,
                M23 = 0,
                M24 = 0,

                M31 = -Math.Sin(RotationVector.Y),
                M32 = 0,
                M33 = Math.Cos(RotationVector.Y),
                M34 = 0,

                OffsetX = 0,
                OffsetY = 0,
                OffsetZ = 0,
                M44     = 1
            };

            Matrix3D RotationEulrZ = new Matrix3D
            {
                M11 = Math.Cos(RotationVector.Z),
                M12 = -Math.Sin(RotationVector.Z),
                M13 = 0,
                M14 = 0,

                M21 = Math.Sin(RotationVector.Z),
                M22 = -Math.Cos(RotationVector.Z),
                M23 = 0,
                M24 = 0,

                M31 = 0,
                M32 = 0,
                M33 = 1,
                M34 = 0,

                OffsetX = 0,
                OffsetY = 0,
                OffsetZ = 0,
                M44     = 1
            };

            Matrix3D m2 = new Matrix3D();

            if (rotationMatrixAxis == RotationMatrixAxis.XYZ)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrX, RotationEulrY), RotationEulrZ);

                m2.OffsetX = Position3D.Value.X;
                m2.OffsetY = Position3D.Value.Y;
                m2.OffsetZ = Position3D.Value.Z;
            }
            if (rotationMatrixAxis == RotationMatrixAxis.XZY)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrX, RotationEulrZ), RotationEulrY);

                m2.OffsetX = Position3D.Value.X;
                m2.OffsetY = Position3D.Value.Z;
                m2.OffsetZ = Position3D.Value.Y;
            }
            if (rotationMatrixAxis == RotationMatrixAxis.YXZ)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrY, RotationEulrX), RotationEulrZ);

                m2.OffsetX = Position3D.Value.Y;
                m2.OffsetY = Position3D.Value.X;
                m2.OffsetZ = Position3D.Value.Z;
            }
            if (rotationMatrixAxis == RotationMatrixAxis.YZX)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrY, RotationEulrZ), RotationEulrX);

                m2.OffsetX = Position3D.Value.Y;
                m2.OffsetY = Position3D.Value.Z;
                m2.OffsetZ = Position3D.Value.X;
            }
            if (rotationMatrixAxis == RotationMatrixAxis.ZXY)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrZ, RotationEulrX), RotationEulrY);

                m2.OffsetX = Position3D.Value.Z;
                m2.OffsetY = Position3D.Value.X;
                m2.OffsetZ = Position3D.Value.Y;
            }
            if (rotationMatrixAxis == RotationMatrixAxis.ZYX)
            {
                m2 = Matrix3D.Multiply(Matrix3D.Multiply(RotationEulrZ, RotationEulrY), RotationEulrX);

                m2.OffsetX = Position3D.Value.Z;
                m2.OffsetY = Position3D.Value.Y;
                m2.OffsetZ = Position3D.Value.X;
            }

            return(m2);
        }
        public PosNormalTangent GetPosNrmTan3D(Vector3D Rot, RotationMatrixAxis rotationMatrixAxis = RotationMatrixAxis.XYZ, ModelVisual3D MV3D = null, Model3D M3D = null)
        {
            #region Default
            //M11, M12, M13, M14
            //M21, M22, M23, M24
            //M31, M32, M33, M34
            //M41, M42, M43, M44
            #endregion

            #region Blender
            //M11, M21, M31, M41
            //M12, M22, M32, M42
            //M13, M23, M33, M43
            //M14, M24, M34, M44
            #endregion

            Matrix3D m = new Matrix3D();
            if (MV3D != null || M3D != null)
            {
                if (MV3D != null)
                {
                    m = EulrRotation(Rot, rotationMatrixAxis, MV3D);
                }
                if (M3D != null)
                {
                    m = EulrRotation(Rot, rotationMatrixAxis, M3D);
                }
            }
            else
            {
                //Default
                m = EulrRotation(Rot, rotationMatrixAxis, new ModelVisual3D());
            }

            PosNormalTangent PosNrmTan3D = null;
            if (rotationMatrixAxis == RotationMatrixAxis.XYZ)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M21, 3), Math.Round(m.M22, 3), Math.Round(m.M23, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M31, 3), Math.Round(m.M32, 3), Math.Round(m.M33, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetX, 3), Math.Round(m.OffsetY, 3), Math.Round(m.OffsetZ, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }
            if (rotationMatrixAxis == RotationMatrixAxis.XZY)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M21, 3), Math.Round(m.M23, 3), Math.Round(m.M22, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M31, 3), Math.Round(m.M33, 3), Math.Round(m.M32, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetX, 3), Math.Round(m.OffsetZ, 3), Math.Round(m.OffsetY, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }
            if (rotationMatrixAxis == RotationMatrixAxis.YXZ)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M22, 3), Math.Round(m.M21, 3), Math.Round(m.M23, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M32, 3), Math.Round(m.M31, 3), Math.Round(m.M33, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetY, 3), Math.Round(m.OffsetX, 3), Math.Round(m.OffsetZ, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }
            if (rotationMatrixAxis == RotationMatrixAxis.YZX)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M22, 3), Math.Round(m.M23, 3), Math.Round(m.M21, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M32, 3), Math.Round(m.M33, 3), Math.Round(m.M31, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetY, 3), Math.Round(m.OffsetZ, 3), Math.Round(m.OffsetX, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }
            if (rotationMatrixAxis == RotationMatrixAxis.ZXY)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M23, 3), Math.Round(m.M21, 3), Math.Round(m.M22, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M33, 3), Math.Round(m.M31, 3), Math.Round(m.M32, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetZ, 3), Math.Round(m.OffsetX, 3), Math.Round(m.OffsetY, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }
            if (rotationMatrixAxis == RotationMatrixAxis.ZYX)
            {
                Vector3D Tangent3D  = new Vector3D(Math.Round(m.M23, 3), Math.Round(m.M22, 3), Math.Round(m.M21, 3));
                Vector3D Normal3D   = new Vector3D(Math.Round(m.M33, 3), Math.Round(m.M32, 3), Math.Round(m.M31, 3));
                Vector3D Position3D = new Vector3D(Math.Round(m.OffsetZ, 3), Math.Round(m.OffsetY, 3), Math.Round(m.OffsetX, 3));

                PosNrmTan3D = new PosNormalTangent
                {
                    Tangent3D  = Tangent3D,
                    Normal3D   = Normal3D,
                    Position3D = Position3D
                };
            }

            return(PosNrmTan3D);
        }