如何从相机位置获取屏幕作为数学平面,并使用Google ARCore在AndroidStudio中摆姿势?



对于我的项目来说,将当前的屏幕位置和旋转作为数学平面或某种平面非常有用,因为我的模型需要垂直于这个平面而不是相机它的方向。

我将当前的 CameraWorldPosition 作为 Vector3,将 CameraWorldRotate 作为四元数。由于我对四元组没有太多经验,我有以下问题:

  1. 四元数的 x,y 和 z 是否定义了向量?w 是否定义了 3D 模型围绕此向量的旋转?
  2. 1. 中提到的向量是否垂直于我的手机屏幕?这将使找到一个数学平面变得非常容易。
  3. 如果 2 不正确,那么用给定的东西计算我的屏幕平面的最佳方法是什么?我想过使用我的CameraWorldPosition作为支持向量。然后我仍然需要计算跨度向量。

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

提前谢谢。

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

  2. 事实并非如此,因为相机可以绕任何轴旋转。

  3. 为了定义平面,只要有两件事就足够了:法向量和平面中的一个点。平面中的点是最简单的点,你已经有了它。它是CameraWorldPosition。对于平面的法线向量,您需要知道相机在旋转非意义上的法线向量,即当旋转是恒等四元数时。例如,假设相机最初总是具有与 Z 矢量重合的法线矢量。那么平面的法线只是由四元数相机世界旋转旋转的 Z 矢量。因此,如果你能知道相机的初始条件(即初始法向量),那么你就可以定义具有相机位置和相机旋转的随时的平面。

最新更新