如何在 Google Cardboard Unity3D 中找到头部的旋转?
How can I find the rotation of the head in Google Cardboard Unity3D?
嘿伙计们,我如何在 Unity3D 中使用 Google Cardboard SDK 找到 phone 的旋转,比如人头朝向的方向?我需要确定它是更朝向东方、西方还是北方。我是找到头部的旋转,还是父主相机?
采取 Head.transform.rotation
- 这是用户头部的方向。
我不太清楚你所说的北方或西方是什么意思。如果移动设备有磁力计,那么也许你可以读取它的数据来确定北方在哪里,但我从来没有这样做过
Cardboard class 包含一个名为 HeadRotation 的 属性,它是一个四元数。
Quaternion crtRot = youCardboardController.HeadRotation;
要像在 Unity 中一样使用方向向量的旋转,您只需将它乘以 Vector3.forward。
Vector3 lookDir = crtRot * Vector3.forward;
在编辑器中可视化矢量可能有助于缩小问题范围
void Update () {
// ..
Debug.DrawRay( pos, lookDir * 100, Color.blue );
// ..
}
从这里你只需要知道北方在哪里,即面向矢量的意思。做一个 Vector3.Angle() 并且你有你的头像和 North 的矢量之间的角度。您可能希望在将 y 轴设置为 0 的情况下评估这两个向量。
您还可以使用 Vector3.Dot()(点积)来确定两个向量朝向同一方向的程度。
我遇到了 HeadPosition 的问题,它没有正确更新。因此,如果您从 HeadPosition 进行操作,请记住它可能会坚持 0,0,0 。
这将是 Head 对象的旋转,尽管 Main Camera 通常具有相同的旋转。
但是如果你想要相对于现实世界的方向,SDK 中没有该信息。因为有磁铁,指南针无法使用,所以无法获得真正的方向。
只取场景中主相机的旋转角度。它将为您提供头部相对于 x、y 和 z 轴的旋转角度。
在基于 GVR 的 VR 场景中,系统会根据我们的头部运动在内部旋转相机。所以使用主相机旋转角度很容易得到头部旋转。
为此,
//local rotation of the Transform of the camera
Camera.main.transform.localEulerAngles.y
//The world Y rotation
Camera.main.transform.rotation.y
嘿伙计们,我如何在 Unity3D 中使用 Google Cardboard SDK 找到 phone 的旋转,比如人头朝向的方向?我需要确定它是更朝向东方、西方还是北方。我是找到头部的旋转,还是父主相机?
采取 Head.transform.rotation
- 这是用户头部的方向。
我不太清楚你所说的北方或西方是什么意思。如果移动设备有磁力计,那么也许你可以读取它的数据来确定北方在哪里,但我从来没有这样做过
Cardboard class 包含一个名为 HeadRotation 的 属性,它是一个四元数。
Quaternion crtRot = youCardboardController.HeadRotation;
要像在 Unity 中一样使用方向向量的旋转,您只需将它乘以 Vector3.forward。
Vector3 lookDir = crtRot * Vector3.forward;
在编辑器中可视化矢量可能有助于缩小问题范围
void Update () {
// ..
Debug.DrawRay( pos, lookDir * 100, Color.blue );
// ..
}
从这里你只需要知道北方在哪里,即面向矢量的意思。做一个 Vector3.Angle() 并且你有你的头像和 North 的矢量之间的角度。您可能希望在将 y 轴设置为 0 的情况下评估这两个向量。
您还可以使用 Vector3.Dot()(点积)来确定两个向量朝向同一方向的程度。
我遇到了 HeadPosition 的问题,它没有正确更新。因此,如果您从 HeadPosition 进行操作,请记住它可能会坚持 0,0,0 。
这将是 Head 对象的旋转,尽管 Main Camera 通常具有相同的旋转。
但是如果你想要相对于现实世界的方向,SDK 中没有该信息。因为有磁铁,指南针无法使用,所以无法获得真正的方向。
只取场景中主相机的旋转角度。它将为您提供头部相对于 x、y 和 z 轴的旋转角度。
在基于 GVR 的 VR 场景中,系统会根据我们的头部运动在内部旋转相机。所以使用主相机旋转角度很容易得到头部旋转。
为此,
//local rotation of the Transform of the camera
Camera.main.transform.localEulerAngles.y
//The world Y rotation
Camera.main.transform.rotation.y