用户登录
用户注册

分享至

opengl 摄像

  • 作者: 你在弄啥咧
  • 来源: 51数据库
  • 2020-10-04
摄像机矩阵和模型矩阵用的是同一个矩阵,就是GL_MODELVIEW (model是模型矩阵,view是摄像机矩阵,GL_MODELVIEW里保存的是这两个矩阵的积)。所以选择GL_MODELVIEW之后直接用glTranslate,glRotate之类的就行。

其实摄像机和模型矩阵本质上是一回事(这也是为什么OpenGL把这两个矩阵放在一起保存的原因),因为比如把整个世界向y+方向移动10跟把摄像机向y-方向移动10是等价的。旋转也是一样。

虽然矩阵里可以保存任何变换,但按照OpenGL的概念,model和view矩阵里只能保存平移,旋转和缩放;project矩阵里只能保存投影矩阵,viewport矩阵里只能保存二维平移和缩放。这样来看把model和view放在一起是合理的。他们之间的区别纯粹是人为的。



  你首先要时刻获得球体在空间中的位置,然后计算摄像机的位置和姿态,最后使用glulookat函数放置摄像机,下面有个关于这个函数使用的例子。
例如glulookat(0,0,-20,-5,0,0,0,1,0),将相机放在(0,0,-20)处,镜头对准(-5,0,0),向上向量为(0,1,0),
如果没有调用glulookat(),相机将使用默认位置的方向。默认情况下,相机位于原点,镜头指向z轴负方向,向上向量为(0,1,0)
软件
前端设计
程序设计
Java相关