OpenGL学习笔记(四)

本文介绍了三维计算机图形学中的关键变换过程,包括模型变换、视点变换、投影变换和视口变换。通过类比摄影过程,解释了如何使用矩阵运算实现这些变换。此外,还详细说明了通用变换函数的应用及视点变化和模型变换的具体操作。
摘要由CSDN通过智能技术生成
1、计算机图形学旨在生成三位物体的二维图象,因为在屏幕上只能绘制二维图象,有三种操作将物体的三维坐标转换为屏幕上的像素位置
变换:用矩阵乘法表示 ,包括模型变换、视点变换和投影变换。这些操作中包括旋转、平移、缩放、反射、正交投影和透视投影。通常,可以使用多种变换的组合来绘制场景。
裁减:场景被渲染到矩形窗口中,因此必须裁减掉位于窗口外的物体(或其某部分)。在三位计算机图形学中,裁减指的是剔除位于裁减面另一边的物体。
视口变换:最后,必须在变换后的坐标和屏幕像素之间建立的对应关系。

2、 生成场景的变换过程类似于用相机拍照
   (1) 将相机固定在三脚架上,并使之对准场景(视点变换)
   (2) 让要拍摄的场景位于取景框中合适的位置(模型变换)
   (3) 选择相机镜头或调整放大倍数(投影变换)
   (4) 决定照片的大小,如放大(视口变换)
   完成上述步骤后,便可以拍摄照片(绘制场景)。
   为指定视点变换、模型变换和投影变换,需要建立一个4×4的矩阵(M),然后将其与场景中的每个顶点(v)的坐标相乘,来完成变换:v1 = Mv。视点变换和模型变换将被合并,形成模型视点矩阵,并将其应用于物体坐标,就得到视点坐标(eye coordinate)。然后OpenGL应用投影矩阵,以获得剪裁坐标,这种变换定义了一个视景体,视景体以外的物体将被剪裁掉,这样在最后的场景中将不绘制它们。执行完剪裁操作后,将执行投影除法(perspective division)——将坐标值除以w,生成归一化的设备坐标。最后,应用视口变换,将经过变换后的坐标转换为窗口坐标,可以操纵视口的大小,以放大、缩小或拉伸图象。

3、通用的变换函数
   注意在调用变换函数之前,必须指出需要修改的是模型视点矩阵还是投影矩阵,为此可以使用函数glMatrixMode()来选择要修改模型视点矩阵、投影矩阵还是纹理矩阵,接下来的变换函数将影响所指定的矩阵。通用的变换函数还有 glLoadIdentity() 将当前可被修改的矩阵设置为一个4×4的单位矩阵。
glLoadMatrix*() glLoadTransposeMatrix*() 将当前矩阵设置为该函数参数指定的值;
glMultMatrix*() glMultTransposeMatrix*() 将当前矩阵与参数指定的矩阵相乘, 注意如果当前矩阵为C,函数参数指定的矩阵为M,相乘得到的矩阵为CM,作为当前矩阵。且还要注意glMultMatrix*()参数指定的矩阵M是按列排序的,glMultTransposeMatrix*()参数指定的矩阵M是按行排序的(和C语言相同)

4、视点变化和模型变换
   OpenGL中,视点变化和模型变化是相互关联的,因此它们被合并为模型视点矩阵。执行模型变换或者视点变换之前,必须使用参数GL_MODELVIEW 调用函数glMatrixModel()。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值