PyopenGL - 如何移动相机截头尺以改变标准化设备坐标中的视角?

时间:2018-04-07 09:55:19

标签: python opengl pyopengl

我想用Pyopengl从鸟的角度渲染一些东西。

"鸟"相机应该能够在X中移动,Y在Z矢量周围旋转。

它有效,但我想放置"鸟"屏幕的底部,因为屏幕的顶部应该是运动方向。

然而,这个选择并不令人愉快。我真正喜欢的是,仍然向下看(Z方向),但有某种偏移。

换句话说,它应该看起来像我裁剪屏幕的下半部分而只使用上半部分。

问题如下图所示:

enter image description here

(原始图来自http://www.songho.ca/opengl/gl_projectionmatrix.html

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。神奇的技巧是以下命令:

glViewport (offset_X, offset_Y, screen_X, screen_Y)

其中:

  • offset_X - 相机在X轴上的偏移
  • offset_Y - 相机在Y轴上的偏移
  • screen_X - 您在X轴中使用的屏幕分辨率
  • screen_Y - 您在Y轴中使用的屏幕分辨率

对于相关描述的情况(如果相机应放置在距离屏幕底部25%的屏幕高度):

gluPerspective(45, (screen_X / screen_Y), 0.1, 2000.0)
glViewport (0, -int(screen_Y*0.75), screen_X, int(screen_Y*1.75) )