3d 我怎样才能得到相机的焦点?

3d 我怎样才能得到相机的焦点?,3d,camera,geometry,3d,Camera,Geometry,我正试图计算摄像机所看到的点。 相机绕X轴和Y轴旋转。 我想计算一个点,它距离我的相机1厘米,在同一条线上 我知道如何在2D中计算类似的东西,但当我进入3D时,我会遇到麻烦 这适用于二维(仅x轴和z轴): 但是有了3D,我需要帮助 我希望这里有人知道awnser。一种方法是取相机视图矩阵的倒数,然后用这个矩阵变换相机前面1厘米的点 如果您的相机首先围绕X轴旋转X度,然后围绕Y轴旋转Y度,则在伪代码中,它可能如下所示: Matrix4D camMM = Matrix4D.Identity(); /

我正试图计算摄像机所看到的点。 相机绕X轴和Y轴旋转。 我想计算一个点,它距离我的相机1厘米,在同一条线上

我知道如何在2D中计算类似的东西,但当我进入3D时,我会遇到麻烦

这适用于二维(仅x轴和z轴):

但是有了3D,我需要帮助


我希望这里有人知道awnser。

一种方法是取相机视图矩阵的倒数,然后用这个矩阵变换相机前面1厘米的点

如果您的相机首先围绕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);

谢谢你的回复,但有没有机会做得更容易些?因为我对OpenGl和矩阵没有太多的了解。我可以像我第一篇文章中的代码那样做吗?我相信有一种方法可以用很多三角学来代替矩阵数学(我脑子里还没有答案),但是如果你打算在3D中工作,我强烈建议你开始熟悉3D矩阵数学。这是你可以用OpenGL做的所有事情的基础。一开始看起来很奇怪也很难,但如果你要学习计算机图形学,矩阵数学和线性代数可能是你能学到的最重要的东西之一@user1432679@user1432679:计算机图形学中的变换矩阵实际上只是相对于另一个坐标系的另一个坐标系。使用矩阵进行此操作是最简单的方法。如果你不了解它们,那么就学习它们。这不是一个OpenGL问题(OpenGL只处理绘图内容),而是一个3D几何问题。
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);