在unity中设置这个矩阵为一个平移、旋转和缩放矩阵使用如下的实现
public static Matrix4x4 TRS(Vector3 pos, Quaternion q, Vector3 s)
{
return Matrix4x4.INTERNAL_CALL_TRS(ref pos, ref q, ref s);
}
具体的计算由C++实现
//Matrix4x4.cpp
void Matrix4x4f::SetTR (const Vector3f& pos, const Quaternionf& q)
{
QuaternionToMatrix (q, *this);
m_Data[12] = pos[0];
m_Data[13] = pos[1];
m_Data[14] = pos[2];
}
void Matrix4x4f::SetTRS (const Vector3f& pos, const Quaternionf& q, const Vector3f& s)
{
QuaternionToMatrix (q, *this);
m_Data[0] *= s[0];
m_Data[1] *= s[0];
m_Data[2] *= s[0];
m_Data[4] *= s[1];
m_Data[5] *= s[1];
m_Data[6] *= s[1];
m_Data[8] *= s[2];
m_Data[9] *= s[2];
m_Data[10] *= s[2];
m_Data[12] = pos[0];
m_Data[13] = pos[1];
m_Data[14] = pos[2];
}
//Quaternion.cpp
void QuaternionToMatrix (c