有人可以帮我理解以下乘法的结果吗?
在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
?
答案 0 :(得分:3)
headRotation * Vector3.forward
向你的Quaternion Vector3
前方方向返回headRotation
。 (所以你要面对的方向)
由于Vector3.forward
是向量归一化(0, 0, 1)
,当您将其乘以Quaternion
时,您的向量的长度 1 与你的头部方向相同。
然后,当您将它乘以标记与相机之间的距离时,您现在可以在相机和标记之间使用相同长度和方向的矢量。
将其添加到当前相机位置,您现在可以获得标记的位置。