C++ 摄影机外部对象OpenGL

C++ 摄影机外部对象OpenGL,c++,opengl,C++,Opengl,我使用透视图和gluPerspective和gluLookAt,我有一个对象的x,y世界坐标。如何确定对象是否在可视区域之外?请注意,相机总是在四处移动。当你说他们离开相机时,你的意思是因为你看的是固定距离,所以他们离开了侧面吗。。还是说他们就这样消失了 如果是第一种情况(远离快照的侧面),则应能够根据当前的透视设置计算移动摄影机所需的距离x、y平面的距离 如果是后一种情况,您可能只需要增加最大Z深度,以防止它们被剔除 [编辑1]在通话中设置视角和纵横比。你应该知道到飞机的距离,以及从你的中心点

我使用透视图和gluPerspective和gluLookAt,我有一个对象的x,y世界坐标。如何确定对象是否在可视区域之外?请注意,相机总是在四处移动。

当你说他们离开相机时,你的意思是因为你看的是固定距离,所以他们离开了侧面吗。。还是说他们就这样消失了

如果是第一种情况(远离快照的侧面),则应能够根据当前的透视设置计算移动摄影机所需的距离x、y平面的距离

如果是后一种情况,您可能只需要增加最大Z深度,以防止它们被剔除

[编辑1]在通话中设置视角和纵横比。你应该知道到飞机的距离,以及从你的中心点到汽车的距离,这样你就得到了你需要的所有信息。剩下的就是一点三角法来计算什么是可视的,什么是不可视的


[Edit 2]我找到了一个描述了各种方法来进行你想要的截锥体剔除的方法。

第一件事:OpenGL没有摄像头。它只是变换周围的顶点。gluLookAt只是在物体上应用了一个变换,这个变换与思维摄像机的运动相反


Robert Massaioli的第一条评论中已经给出了解决方案:在OpenGL中,透视变换是用一个平截头体来描述的(GlupPerpective只计算平截头体参数,并将这些参数传递给glFrustum)。因此,通过确定对象的截头体剔除,即,如果对象被剔除,则确定对象是否仍然可见。

截头体剔除是删除屏幕上不存在的所有内容的过程,因此我建议可以使用相同的算法来找到相反的结果:但我想知道是否删除了某些内容。我有两辆车,相机放在车的中间。如果他们离得太远(如果他们都“离开”相机)我必须把它们放回中间,有什么想法?这是第一种情况。相机是一个固定的距离,但它随车旋转,这是我的主要问题。