如何使用 Google ARCore 在 AndroidStudio 中从相机位置和姿势获取屏幕作为数学平面?
How to get the screen as a mathematical plane from camera position and pose in AndroidStudio with Google ARCore?
对于我的项目,将当前屏幕位置和旋转作为数学平面或某种平面非常有用,因为我的模型需要垂直于该平面而不是相机本身。
我将当前 CameraWorldPosition 作为 Vector3,将 CameraWorldRotation 作为四元数。由于我对四元数没有太多经验,所以我有以下问题:
- 四元数的x,y,z是否定义了一个向量? w 是否定义了 3d 模型围绕该向量的旋转?
- 1.中提到的矢量是否垂直于我的手机屏幕?这将使找到一个数学平面变得非常容易。
- 如果 2 不正确,用给定的东西计算我的屏幕平面的最佳方法是什么?我考虑过使用我的 CameraWorldPosition 作为支持向量。然后我仍然需要计算跨度向量。
如果您有任何想法或可以帮助我的东西,请告诉我。
提前致谢。
四元数的 x、y 和 z 分量确实定义了一个向量。该矢量是旋转轴。然而,它通常不是单位向量。它的长度等于 sin(theta/2) 其中 theta 是旋转角度。所以w不是旋转的角度,是cos(theta/2).
不是,因为相机可以绕任意轴旋转。
为了定义平面,有两个东西就足够了:法向量和平面中的一个点。平面上的点是最简单的,你已经有了。它是 CameraWorldPosition。对于平面的法向量,您需要知道在没有旋转的情况下相机的法向量,即当旋转是恒等四元数时。比方说,相机最初总是有一个与 Z 向量重合的法向量。那么平面的法线就是通过四元数 CameraWorldRotation 旋转的 Z 向量。所以如果你知道相机的初始条件(即初始法向量),那么你可以定义任何时刻具有相机位置和相机旋转的平面。
对于我的项目,将当前屏幕位置和旋转作为数学平面或某种平面非常有用,因为我的模型需要垂直于该平面而不是相机本身。
我将当前 CameraWorldPosition 作为 Vector3,将 CameraWorldRotation 作为四元数。由于我对四元数没有太多经验,所以我有以下问题:
- 四元数的x,y,z是否定义了一个向量? w 是否定义了 3d 模型围绕该向量的旋转?
- 1.中提到的矢量是否垂直于我的手机屏幕?这将使找到一个数学平面变得非常容易。
- 如果 2 不正确,用给定的东西计算我的屏幕平面的最佳方法是什么?我考虑过使用我的 CameraWorldPosition 作为支持向量。然后我仍然需要计算跨度向量。
如果您有任何想法或可以帮助我的东西,请告诉我。
提前致谢。
四元数的 x、y 和 z 分量确实定义了一个向量。该矢量是旋转轴。然而,它通常不是单位向量。它的长度等于 sin(theta/2) 其中 theta 是旋转角度。所以w不是旋转的角度,是cos(theta/2).
不是,因为相机可以绕任意轴旋转。
为了定义平面,有两个东西就足够了:法向量和平面中的一个点。平面上的点是最简单的,你已经有了。它是 CameraWorldPosition。对于平面的法向量,您需要知道在没有旋转的情况下相机的法向量,即当旋转是恒等四元数时。比方说,相机最初总是有一个与 Z 向量重合的法向量。那么平面的法线就是通过四元数 CameraWorldRotation 旋转的 Z 向量。所以如果你知道相机的初始条件(即初始法向量),那么你可以定义任何时刻具有相机位置和相机旋转的平面。