Unity - 将四元数转换为三维向量

4

我看到了很多类似的问题,但问题是 - 这个问题本身并没有意义。它们不是同一件事情,有点像是在问“如何将苹果转化成砖块”?

但通常情况下,潜在的问题是有意义的,只是措辞有问题。

我的目标是:

  • 我在世界空间参考系中拥有一个对象,其旋转由四元数R表示。
  • 如果该对象相对于其局部参考系向前移动,即沿着其局部Z轴直线移动一个名义上的距离...
  • ...那么在世界参考系中,代表该运动的(归一化的)分量是什么?

现在,我认为答案是:

    Vector3 ans = R * Vector3.forward;

这是否正确,如果正确,为什么?(如果不正确,则答案是什么?)


没错 - 你是在问Unity如何计算结果吗?那似乎更像是一个数学问题。 - Ruzihm
不,其实不是。我只是试图从定性上理解为什么那个计算会产生那个结果。 - nmw01223
1
你想问什么?当你将四元数与向量相乘时,你会在四元数中包含的旋转上旋转向量。或者你需要其他信息吗? - OnionFan
1个回答

7

是的,那是正确的。

Quaternion * Vector3 接受一个向量并根据给定的旋转进行旋转。

因此,如果您的 R 基本上是对象的世界坐标系下的 transform.rotation ,则结果将是对象在世界坐标系下的局部前方 (正Z) 向量作为向量。


您也可以直接使用对象的 transform.forward 向量,它基本上等于 transform.rotation * Vector3.forward


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接