매트릭스 Inverse 직접 구현

 

회전행렬의 역행렬 * 이동행렬의 역행렬

    public Matrix4x4 Inverse(Matrix4x4 matrix)
    {
        // Rotate Scale Inverse
        Matrix4x4 invRot = Matrix4x4.identity;
        for(int i=0; i < 3; ++i)
        {
            Vector4 v = matrix.GetColumn(i);
            invRot.SetRow(i, v.normalized / v.magnitude);
        }

        // Translate Inverse
        Matrix4x4 invTrans = Matrix4x4.identity;
        invTrans.m03 = -matrix.m03;
        invTrans.m13 = -matrix.m13;
        invTrans.m23 = -matrix.m23;

        // Combine
        return invRot * invTrans;
    }

+ Recent posts