我使用了gluPerspective和gluLookAt的透视图,并且我有一个对象的x,y世界坐标。我如何确定对象是否在可视区域之外?请注意,相机总是在四处移动。摄像机外部的对象OpenGL
3
A
回答
5
第一件事:第一件事:OpenGL没有相机。它只是转换顶点。而gluLookAt只是对与思考相机运动相反的对象应用变换。
该溶液已经在由Robert Massaioli第一评论给出:在OpenGL中的透视变换在截头锥体的形式描述(gluPerpective只是计算平截头体的参数,并传递给这些glFrustum)。因此,通过确定对象的平截头体剔除,即如果他们被剔除,您可以确定它们是否仍然可见。
0
当你说他们离开相机时,你的意思是他们偏离了双方,因为你正在寻找一个固定的距离? ..或者你的意思是他们只是消失。
如果是第一种情况(偏离镜头两侧),您应该能够计算出根据当前视角设置移动相机所需的距离x,y平面有多远。
如果是后一种情况,您可能只需增加最大Z深度即可阻止它们被剔除。
[编辑1]在gluPerspective调用您设置视角和纵横比。你应该知道与飞机的距离以及从中心点到汽车的距离,以便获得所需的全部信息。剩下的只是一个小三角来确定什么是可见的,哪些不是。
[编辑2]我发现another very useful tutorial描述各种方式做域剔除你想做的事情。
+0
这是第一例。相机是一个固定的距离,但随着汽车旋转,这是我的主要问题。 – 2011-05-16 12:54:15
相关问题
- 1. 移动的摄像机在OpenGL
- 2. 让对象看着摄像机
- 3. openGL灯不会随摄像机移动
- 4. Android和openGL es如何判断对象是否在摄像机视图中
- 5. 摄像机自动对焦
- 6. 使用外部摄像头的摄像头显示预览
- 7. Android打开外部UVC摄像头代替硬件摄像头
- 8. iOS SDK:启动摄像机(摄像机),而不是静止摄像机
- 9. OpenCV从外部摄像头捕获
- 10. 来自现场摄像机的openGL纹理的API开发
- 11. 问题与摄像机视图和照明(openGL的&GLUT)
- 12. Opengl ES 2.0移动时的摄像机混球播放器
- 13. OpenCV摄像头下面的对象
- 14. 摄像头下面的对象
- 15. OpenCV和IP摄像机连接 - 我的摄像机型号
- 16. 我的3D对象(opengl es)正在消失在iPhone摄像头视图后面
- 17. 使对象正好出现在摄像机前OCULUS
- 18. ARKit:在摄像机视图上翻译3D对象
- 19. 在OpenCV摄像机上渲染3D对象
- 20. CWAC摄像机 - 连续自动对焦
- 21. 继摄像机Unity
- 22. 摄像机校准
- 23. 摄像机标定
- 24. 访问摄像机
- 25. OpenGL的键盘摄像头控制
- 26. 在opengl不工作的摄像头
- 27. 图层OpenGL内容通过AVCaptureSession CVImageBufferRef来自摄像机
- 28. OpenGL透视投影和摄像机位置
- 29. 如何用OpenGL解释U-V-N摄像机坐标系?
- 30. 从移动摄像机看到一个固定点opengl
Frustum Culling是去除不在屏幕上的所有内容的过程,因此我建议可以使用相同的算法找到相反的结果:http://www.flipcode.com/archives/Frustum_Culling.shtml – 2011-05-16 12:30:03
但是我想知道是否有东西被删除。我有两辆车,相机被设置在它们的中间位置。如果他们离得太远(如果他们都“离开”相机),我必须把他们放回中间,有什么想法? – 2011-05-16 12:33:24