【问题标题】:Quaternion * Vector3 * Distance四元数 * Vector3 * 距离
【发布时间】:2017-02-16 00:56:29
【问题描述】:

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

在 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

【问题讨论】:

标签: unity3d


【解决方案1】:

headRotation * Vector3.forward 在四元数 headRotation 的前方返回一个 Vector3。 (所以你面对的方向)

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

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

将其添加到您当前的相机位置,您现在就拥有了标记的位置。

【讨论】:

  • @Joshua 谢谢你^^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多