【问题标题】:XNA equivalency of unity function Transform.InverseTransformDirection统一函数 Transform.InverseTransformDirection 的 XNA 等效性
【发布时间】:2013-06-30 10:28:40
【问题描述】:
【问题讨论】:
标签:
c#
xna
rotation
unity3d
quaternions
【解决方案1】:
你可以在 XNA 中得到一个矩阵的逆,然后通过这样做来使用它:
Matrix inverseMatrix = Matrix.Inverse(myMatrix);
Vector3 result = Vector3.Transform(myVector, inverseMatrix);
不过,根据我的理解,您希望在得到逆时忽略翻译。所以你只有一个方向(基本上这说明了旋转、缩放等)。我自己没有对此进行测试,但我认为这应该可以满足您的要求:
Matrix copyOfMyMatrix = myMatrix;
copyOfMyMatrix.Translation = Vector3.Zero; // reset the translation components
Matrix inverseMatrix = Matrix.Inverse(copyOfMyMatrix);
Vector3 result = Vector3.Transform(myVector, inverseMatrix);