Unity - 将四元数转换为 Vector3
Unity - converting a Quaternion to a Vector3
这样的问题我见多了,问题是——这个问题毫无意义。它们不是一回事,有点像“我如何把苹果变成砖头”?
但通常潜在的问题确实有道理,令人怀疑的是措辞。
我想做的是:
- 我在世界上有一个对象 space 参考系,其旋转由四元数 R 表示。
- 如果该对象相对于其局部参照系向前移动,即沿其局部 Z 轴直线移动标称量...
- ... Vector3 是什么,其(归一化)分量表示世界参考系中的运动?
现在,我认为答案是
Vector3 ans = R * Vector3.forward;
这对吗?如果对,为什么? (如果不对,那答案是什么?)
是的,没错。
Quaternion * Vector3
获取给定的向量并根据给定的旋转旋转它。
所以如果你的 R
基本上是对象的 world-space transform.rotation
那么结果将是对象本地转发(正Z) 向量作为世界 space 坐标中的向量。
也可以直接使用对象的transform.forward
向量,基本等于transform.rotation * Vector3.forward
这样的问题我见多了,问题是——这个问题毫无意义。它们不是一回事,有点像“我如何把苹果变成砖头”?
但通常潜在的问题确实有道理,令人怀疑的是措辞。
我想做的是:
- 我在世界上有一个对象 space 参考系,其旋转由四元数 R 表示。
- 如果该对象相对于其局部参照系向前移动,即沿其局部 Z 轴直线移动标称量...
- ... Vector3 是什么,其(归一化)分量表示世界参考系中的运动?
现在,我认为答案是
Vector3 ans = R * Vector3.forward;
这对吗?如果对,为什么? (如果不对,那答案是什么?)
是的,没错。
Quaternion * Vector3
获取给定的向量并根据给定的旋转旋转它。
所以如果你的 R
基本上是对象的 world-space transform.rotation
那么结果将是对象本地转发(正Z) 向量作为世界 space 坐标中的向量。
也可以直接使用对象的transform.forward
向量,基本等于transform.rotation * Vector3.forward