如何使用Google ARCore在AndroidStudio中通过摄像头的位置和姿势将屏幕显示为数学平面?

时间:2019-07-18 08:25:17

标签: android-camera quaternions arcore plane

对于我的项目,将当前屏幕的位置和旋转设置为数学平面或某种平面将非常有用,因为我的模型需要垂直于该平面而不是相机本身定向。

我将当前的CameraWorldPosition作为Vector3,将CameraWorldRotation作为四元数。由于我对Quternios的经验不多,因此我有以下问题:

  1. 四元数的x,y和z定义矢量吗? w是否定义3d模型围绕此矢量的旋转?
  2. 1。中提到的矢量是否垂直于手机屏幕?这将使查找数学平面非常容易。
  3. 如果2不正确,那么在给定条件下计算屏幕平面的最佳方法是什么?我考虑过将CameraWorldPosition用作支持向量。然后,我仍然需要计算跨度向量。

如果您有任何想法或可以帮助我的事情,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 四元数的x,y和z分量确实定义了矢量。该矢量是旋转轴。但是,它通常不是单位向量。它的长度等于sin(theta / 2),其中θ是旋转角度。因此w不是旋转角度,而是cos(theta / 2)。

  2. 不是,因为相机可以绕任何轴旋转。

  3. 对于定义平面,只要有两件事就足够了:法线向量和平面中的一个点。平面上的点是最简单的点,您已经知道了。这是CameraWorldPosition。对于平面的法线向量,您需要在没有旋转的情况下(即当旋转是恒等四元数时)知道相机的法向向量。举例来说,假设相机最初始终具有与Z向量重合的法线向量。然后,平面的法线就是由四元数CameraWorldRotation旋转的Z向量。因此,如果您知道相机的初始条件(即初始法线向量),则可以随时定义具有相机位置和相机旋转的平面。