四元数* Vector3 *距离

时间:2017-02-15 16:47:47

标签: unity3d

有人可以帮我理解以下乘法的结果吗?

在Unity VR示例项目中,使用以下两行:

Quaternion headRotation = InputTracking.GetLocalRotation(VRNode.Head);

TargetMarker.position = Camera.position + (headRotation * Vector3.forward) * DistanceFromCamera;

我可以理解第一行 - 如何计算用户的头部轮换并将其存储在headRotation Quaternion中。

我还可以理解,TargetMarker的位置应该通过将Camera的位置添加到某个位置来计算。这是什么东西?

最重要的是,(headRotation * Vector3.forward) * DistanceFromCamera的结果如何是position

1 个答案:

答案 0 :(得分:3)

headRotation * Vector3.forward向你的Quaternion Vector3前方方向返回headRotation。 (所以你要面对的方向)

由于Vector3.forward是向量归一化(0, 0, 1),当您将其乘以Quaternion时,您的向量的长度 1 与你的头部方向相同。

然后,当您将它乘以标记与相机之间的距离时,您现在可以在相机和标记之间使用相同长度和方向的矢量。

将其添加到当前相机位置,您现在可以获得标记的位置。