OpenGL 的ModelView矩阵

1)OpenGL的ModelView矩阵是对三维模型的操作【模型变换】,包括平移、旋转、放缩,但我们 也可以理解为对相机的一种操作【视图变换】,或者理解为对视点的一种操作。由于视图变换和模型变换存在着对偶特性,本质上是一致的。一种比较有效的思考方法是,视点始终在(0,0,0)处,【glLoadIndentity()默认会使得相机在(0,0,0)坐标位置处】,而在透视投影中,观察者是从原点向Z轴的负方向看过去(垂直“穿入”监视器屏幕),要保证模型可见,所以要进行模型视图变换

2)三维变换本质上有四种变换:视图变换,模型变换,投影变换,视口变换;但是在OpenGL中,只有三种变换:模型视图变换、投影变换、视口变换。其将视图变换和模型变换进行了合并,在设置不同的变换矩阵的时候,要记得glMatrixMode调用。另外值得注意的是ModelView的12,13,14元素反映的是视图变换的平移量,如果要理解为模型变换,则需要加上负号考虑,默认配置为模型变换(也就是说,用gltranslate**的时候,opengl会默认将矩阵加上负号处理,但如果我们直接操作矩阵的时候,要注意正量为视图变换,加负号为模型变换)。

3)OpenGL的projection矩阵设置投影关系

4)要正确的设置鼠标的操作需要定义好一个旋转球

5) 有关OpenGL的光照设置,可以参看这个链接http://blog.sina.com.cn/s/blog_40b056950100govp.html

6)之所以光照一开始设置不对,有几个方面的原因,一是没有使用glEnable(GL_NORMALIZE)命令,二是对于坐标的运算有误

7)光照的位置与modelview有关,因此,设置光照位置的时候,不要忘记设置modelview,或者说,只有在正确设置好modelview之后,才可以设置光照的位置,即调用glLightfv函数

9)ModelViewMatirx是 列主序的矩阵

10)OpenGL的glMultMatrixd矩阵相乘是 右乘关系,如glMultMatrixd(A);glMultMatrixd(B) ===> 通过glGetDoublev(GL_MODELVIEW_MATRIX, C)得到的矩阵是C=A*B

11)要正确的找到鼠标的旋转中心需要进行如下的操作: 设置模型对应的相机参数, 找到模型的中心点,根据模型的中心点求取旋转中心。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值