如何获得相机的焦点?

时间:2012-06-02 17:33:12

标签: 3d camera geometry

我正在尝试计算相机正在查看的点。 相机具有围绕X轴和Y轴的旋转。 我想计算一点,距离我的相机在1厘米远的同一条线上。

我知道如何在2D中计算这样的东西但是当我进入3D时,我遇到了麻烦。

这适用于2D(仅x和z轴):

float c = 1f;
float a = c * Math.cos(Math.toRadians(rotationY));
float b = (Math.sin(Math.toRadians(rotationY)) * c);
newPosition.z -= a;
newPosition.x += b;

但是使用3D我需要帮助。

我希望有人知道这个人。

1 个答案:

答案 0 :(得分:0)

一种方法是拍摄相机视图矩阵的反转,然后通过此矩阵变换相机前方1cm处的点。

如果您的相机首先围绕X轴旋转X度,围绕y轴旋转Y度,那么在伪代码中它可能如下所示:

Matrix4D camMM = Matrix4D.Identity(); //camera model matrix
camMM.Rotate(X, 1, 0, 0);
camMM.Rotate(Y, 0, 1, 0);
Vector4D focusPoint = camMM * vector4D(-1cm, 0, 0, 1);