2024年3月17日发(作者:)
OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变
换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。
理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界。
一、OpenGL中的三维物体的显示
(一)坐标系统
在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示
二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标。
为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标
系。这个坐标系的长度单位和坐标轴的方向要适合对被显示物体的描述,这个坐
标系称为世界坐标系。世界坐标系是始终固定不变的。
OpenGL还定义了局部坐标系的概念,所谓局部坐标系,也就是坐标系以物体的
中心为坐标原点,物体的旋转或平移等操作都是围绕局部坐标系进行的,这时,
当物体模型进行旋转或平移等操作时,局部坐标系也执行相应的旋转或平移操
作。需要注意的是,如果对物体模型进行缩放操作,则局部坐标系也要进行相应
的缩放,如果缩放比例在案各坐标轴上不同,那么再经过旋转操作后,局部坐标
轴之间可能不再相互垂直。无论是在世界坐标系中进行转换还是在局部坐标系中
进行转换,程序代码是相同的,只是不同的坐标系考虑的转换方式不同罢了。
计算机对数字化的显示物体作了加工处理后,要在图形显示器上显示,这就要在
图形显示器屏幕上定义一个二维直角坐标系,这个坐标系称为屏幕坐标系。这个
坐标系坐标轴的方向通常取成平行于屏幕的边缘,坐标原点取在左下角,长度单
位常取成一个象素。
(二)三维物体的相机模拟
为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机
(Camera)模拟的方式,假定用相机来拍摄这个世界,那么在相机的取景器中,
就存在人眼和现实世界之间的一个变换过程。
图一、相机模拟OpenGL中的各种坐标变换
从三维物体到二维图象,就如同用相机拍照一样,通常都要经历以下几个步骤:
1、将相机置于三角架上,让它对准三维景物,它相当于OpenGL中调整视点的位
置,即视点变换(Viewing Transformation)。
2、将三维物体放在场景中的适当位置,它相当于OpenGL中的模型变换(Modeling
Transformation),即对模型进行旋转、平移和缩放。
3、选择相机镜头并调焦,使三维物体投影在二维胶片上,它相当于OpenGL中把
三维模型投影到二维屏幕上的过程,即OpenGL的投影变换(Projection
Transformation),OpenGL中投影的方法有两种,即正射投影和透视投影。为
了使显示的物体能以合适的位置、大小和方向显示出来,必须要通过投影。有时
为了突出图形的一部分,只把图形的某一部分显示出来,这时可以定义一个三维
视景体(Viewing Volume)。正射投影时一般是一个长方体的视景体,透视投影
时一般是一个棱台似的视景体。只有视景体内的物体能被投影在显示平面上,其
他部分则不能。


发布评论