游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7794|回复: 5

求助!关于gluPerspective()视图体方向的改变

[复制链接]

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-5-1 11:59:00 | 显示全部楼层 |阅读模式
在投影模式下,可以用gluPerspective()函数定义一个视图体,其中心轴的缺省方向是Z轴负方向,视点在原点。通常情况下,我们都不改变这个缺省的设定,尽管后来我们有可能在模型试图模式下用gluLookAt()函数把视点与视向的改变了。那么按道理说,这个时候的视图体的轴向和视点已经与改变后的视向和视点不一致了,但它为什么还能正常显示?难道视图体会随着gluLookAt()自动改变视点与轴向?望高手不吝赐教!!

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-5-2 10:11:00 | 显示全部楼层

Re:求助!关于gluPerspective()视图体方向的改变

3d编程大师技巧里,相机变换那节,做法是将世界坐标变换到相机坐标,这样视锥体的方向就和视点方向一致了。

opengl的视点变换就是实现这个的。

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2007-5-5 02:29:00 | 显示全部楼层

Re:求助!关于gluPerspective()视图体方向的改变

这两个函数各自改变各自的矩阵,相互不影响

30

主题

227

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2007-5-5 13:40:00 | 显示全部楼层

Re:求助!关于gluPerspective()视图体方向的改变

你应该把具体代码都贴出来,别人才能更进一步发现问题嘛。
如果两个投影开始都使用了glMatrixMode(GL_PROJECTION);        glLoadIdentity();       
结束使用了glMatrixMode(GL_MODELVIEW);glLoadIdentity();
就等于是使用的最后一个投影方式。

正常显示真是再好不过的了,我学坐标变换和投影的时候黑屏无数。。。。。。

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2007-5-7 12:55:00 | 显示全部楼层

Re:求助!关于gluPerspective()视图体方向的改变

看来楼主对Opengl流水线还不清楚。
1、模视矩阵(ModelView Matrix)的作用是将模型从局部坐标系变换到世界坐标系,并最终变换到视点坐标系中。它由模型变换矩阵和视点变换矩阵组成。
2、gluLookAt影响的是视点矩阵,它显式的标明了视点坐标系与世界坐标系的关系,即视点被安置在世界坐标系的哪个位置,视线的方向朝向何处。
3、gluPerspective用于规定视景体范围,与模视矩阵无关,它影响的是投影矩阵和规一化矩阵。投影矩阵的作用是使模型产生近大远小的效果,规一化矩阵是将模型的z值规一化到0~1之间。
4、在编程的时候,需要glMatrixMode来指定矩阵堆栈的类型,然后对该矩阵进行修改。
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   的作用是初始化模视矩阵,将坐标原点重新设置在世界坐标系的原点。之后的glTranslate、glScale、glRotate都会改变模视矩阵中的模型变换矩阵。而glLookAt则设置视点变换矩阵。它们共同作用,使得模型能在世界坐标系中正确安放,并能从合适的角度去观察。

1

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-5-7 20:30:00 | 显示全部楼层

Re:求助!关于gluPerspective()视图体方向的改变

虽然楼上的高见各异,但是都牵扯到了全局坐标,局部坐标等不同的坐标系。
几经思考,我认为,在OpenGL中确实存在而且可见的坐标系只有一个,那就是视点坐标系(或者把它称为全局坐标系),而且真正的视点和视向在任何时候都是由投影矩阵(或函数)决定的;模型试图变换所做的工作就是把模型在这个唯一的坐标系中作平移和旋转操作,最终使模型落在投影模式下产生的试图体中。这里特别值得提一下的是gluLookAt()函数,因为它看起来好像能够重置视点和方向,但是别忘了,它是由一系列的模型试图变换来实现的,也就是说,不是视点和视向变了而是模型在坐标系中的位置和方向变了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 13:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表