相机外部的对象 OpenGL
Object outside camera OpenGL
我正在使用带有gluPerspective和gluLookAt的透视视图,并且我有一个对象的x,y世界坐标。如何确定对象是否在可视区域之外?请注意,相机始终在移动。
首先:OpenGL没有摄像头。它只是变换顶点。gluLookAt只是在物体上应用了一个与思想相机的运动相反的变换。
Robert Massaioli在第一条评论中已经给出了解决方案:在OpenGL中,透视变换是用视锥体来描述的(gluPerpective只是计算视锥参数并将其传递给glFrustum)。因此,通过确定对象的视锥剔除,即如果它们被剔除,您可以确定它们是否仍然可见。
当你说他们离开相机时,你的意思是他们离开两侧是因为你看的是固定的距离吗?或者你的意思是他们就消失了。
如果是第一种情况(在镜头两侧),您应该能够根据当前的透视设置计算出您需要从 x,y 平面向上移动摄像机的距离。
如果是后一种情况,您可能只需要增加最大 Z 深度即可阻止它们被剔除。
[编辑 1] 在 gluPerspective 调用中,您可以设置视角和纵横比。您应该知道到飞机的距离以及从中心点到汽车的距离,以便获得所需的所有信息。剩下的就是一点三角函数,以确定什么是可见的,什么是不可见的。
[编辑 2] 我找到了另一个非常有用的教程,它描述了进行您想要做的视锥剔除的各种方法。
相关文章:
- 无法使用VAO和EBO(openGL)绘制多个对象
- 如何在OpenGL中正确旋转和缩放对象?
- 创建 OpenGL 对象期间出错
- 在类中渲染OpenGL对象
- OpenGL 对象在移动一段距离后振动
- 我的3D OpenGL对象围绕世界来源,而不是本地空间来源.我在做什么错或误会
- 使用纹理,法线和索引列表从VBO绘制OpenGL对象的问题
- 为什么我的 OpenGL 对象相对于最后一个绘制的对象绘制
- OpenGl 对象不显示,着色器相关
- OpenGL对象在PC上以正常速度旋转,但在笔记本电脑上非常快
- OpenGL-对象转换和VBO
- OpenGL对象包装器中的自动绑定
- Opengl对象拉伸
- 用于OpenGL对象的RAII包装器
- 在架构x86_64中找不到openGL对象
- Opengl对象加载器与纹理
- OpenGL对象自动在圆中移动
- OpenGL对象创建
- openGl对象在特定位置消失
- OpenGl -对象在旋转180度后反转