分享

OpenGL

 张庆楠的图书馆 2012-10-08

1.gluLookAt()——视图变换函数

把自己的眼睛当成是照相机,前三个参数表示眼睛的坐标,中间三个参数表示要拍照的物体的中心位置,可以理解成焦点吧,

后三个参数表示头顶的朝向,比如说头可以歪着(哈哈)。但是我测试过,如果歪的不对,原来的正前方现在已经不是正前方

了,那么就看不见物体了。举个例子:

gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//这个就表示头顶是朝着y方向

gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0);//这个表示头歪了45度,头顶朝着(1.0,1.0,0.0)这个方向

2.glScalef() ——模型变换函数 缩放

void glScalef(GLfloat  x,  GLfloat  y,  GLfloat  z);

模型变换的目的是设置模型的位置和方向,例如可以对模型进行旋转、移动和缩放,或者联合这几种操作。

这个函数表示模型在各轴上是如果进行缩放的。举个例子:

glScalef (1.0, 2.0, 1.0);//表示y坐标值扩大两倍,这样原本方的物体就变成长的了。

3.glTranslatef() ——模型变换函数 移动

void glTranslatef(GLfloat  x,  GLfloat  y,  GLfloat  z);

这个函数表示模型是怎样移动的。举个例子:

glTranslatef(-1.0,0.0,-2.0);//表示物体沿x负方向移动1.0,沿z轴负方向移动2.0。所以就好像能看见侧面一样

4.glRotatef()——模型变换函数  旋转

void glRotatef(GLfloat  angle,  GLfloat  x,  GLfloat  y,  GLfloat  z);

angle表示旋转的角度(注意单位不是弧度),(x,y,z)表示转轴。举个例子:

glRotatef(45.0, 0.0, 0.0, 1.0);//表示模型沿着(0,0,1)这个轴旋转45°。

5.glFrustum() ——投影变换函数 透视投影

前四个参数表示裁剪范围,后两个参数(要求为正数)表示近的面和远的面离眼睛的距离。有点儿像调焦。裁剪完后拉伸铺满整个屏幕。

6.glPerspective() ——投影变换函数 透视投影

void gluPerspective(GLdouble  fovy,  GLdouble  aspect,  GLdouble  zNear,  GLdouble  zFar);

第一个参数表示在y方向上的视角度数。个人理解:比如45,表示眼睛和模型中心这个条线与y轴的夹角。

第二个参数表示纵横比。x/y。比如2表示x、y本来都是1个长度,现在x可以当两个长度用,这样,模型就好像被x方向压缩了一样。

后两个参数glFrustum()中后两个相近。要求都是正数。

基本函数的用法:
视点变换可以通过gluLookAt()函数完成,那三组参数分别指定了相机的位置、瞄准方向的参考点和相机向上方向。
通常视点变换操作在模型变换操作之前发出,以便模型变换先对物体发生作用。这样,场景中物体的顶点经过模型转换后一定到所希望的位置,然后再对场景进行视点定位等操作。模型变换和视点变换共同构成模型视景矩阵。
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
1、改变前三个参数的值可以模拟人在实际环境中的移动;
2、改变中间三个参数的值,可以模拟人眼的转动,即所观察场景的变化。
3、后三个参数的值比较特殊,它所制定的不是一个点,而是一个方向,即决定将哪一个坐标轴作为向上的方向,如果向上方向与观察点到中心点的方向一致,结果将是不确定的。
gluLookAt(
摄像机x,摄像机y,摄像机z,
目标点x,目标点y,目标点z,
摄像机顶朝向x,摄像机顶朝向y,摄像机顶朝向z
)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多