OpenGL(三)——OpenGL基础知识点二

                                              OpenGL知识点二

 

1、投影:我们3D数据来描述物体,并把3D数据“压扁”成2D数据以便于显示在计算机屏幕上,这个把3D数据“压扁”成2D数据的过程校准投影(Projection)。

2、投影只是OpenGL变换的一种,变换还有其他的旋转对象,、移动对象、进行伸展、收缩和扭曲。

3、变换:

4、视觉坐标:

视觉坐标系是以场景观察者的角度。(垂直于显示器的方向,x轴向右,y轴向上,z轴的正方向从原点指向使用者)。当我们使用OpenGL绘制3D物体时,就会使用笛卡尔坐标系,如果不进行任何的变换,使用的坐标系和视觉坐标系相同。

5、视图变换:

它用来确定场景中的有利位置。视图变换允许我们把观察点放在任何所希望的任何位置。

在默认情况下透视投影中的观察点位于原点(0,0,0),沿着z轴的负方向进行观察。观察点相对于视觉坐标系进行移动,来提供特定有利位置。

在正投影中,观察者被认为在z轴的正方向无限远的位置,能够看到视景体中的任何东西(视景体是指成像景物所在空间的集合。它是一个空间集合体。单个的视景体,比如一个球体,若要完全显示,其视景体应该是该球体的最小外接立方体;若要只显示上半部分,则取上半球,其视景体是上半球的最小外接立方体。对于半球而言,上半球是视景体,那么其只有上半球有显示权限,下半球没有,所以就算是将该球体位置拉远,也只能看到上半球。)。

确定视图变换就像在场景中放置照相机并让它指向某个方向。

在应用其他模型变换前,必须先使用视图变换,因为对于坐标系而言,视图变换移动了当前的工作坐标系。

6、模型变换:

在OpenGL中通过定义一组顶点来定义一个模型。顶点属性定义了模型。

如果我们要在一个场景中不同位置显示同一个模型怎么办? 如果我们要以不同的比例、不同角度显示同一个模型又怎么办 ?
如果继续以类似的顶点属性数据定义同一个模型,调整它满足上述需求的话,不仅浪费显卡内存,而且这个调整的工作量也很大,因此效率很低。更好地解决方法是,我们定义的模型根据需要可以执行放大、缩小等操作来不同比例显示,可以通过平移来放在不同位置,可以通过旋转来按不同角度显示。这种方式就是执行模型变换。

模型变换通过对模型执行平移(translation)、缩放(scale)、旋转(rotation)、镜像(reflection)、错切(shear)等操作,来调整模型的过程。通过模型变换,我们可以按照合理方式指定场景中物体的位置等信息。

7、模型视图的二元性

视图和模型变换按照他们内部效果和对场景的最终外观来说是一样的。比如讲对象向后移动和将参考坐标系向前移动,在视觉上没有区别。

因此,视图变换并没有特别之处。从本质上说,它只是在绘制对象之前应用到一个虚拟对象(观察者)智商的一种模型变换。初始变换是所有其他变换参考的基础。

8、投影变换

投影变换是将在模型视图变换之后应用到顶点上。这种投影实际上定义了视景体并创建了裁剪平面。

裁剪平面是3D空间肿的平面方程式,OpenGL用它来确定几何图形对于观察者来说是否可见。更具体地说,投影变换指定一个完成的场景(所有模型变换都已完成)是如何投影到屏幕上的最终图像。

本文原创作者:冯一川([email protected]),未经作者授权同意,请勿转载。如需获取本程序源代码和资源,欢迎发邮件与我联系。

Guess you like

Origin blog.csdn.net/ifeng12358/article/details/105724700