OpenGL可进行高性能的图形渲染。OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。 1.2.1 OpenGL工作方式
OpenGL指令模式是CS(C1ientServer,客户服务器)模型,通常用户程序(客户)发出命令提交给内核程序(服务器),内核程序再对各种指令进行解释,并初步处理,之后交给操作系统服务而转交给硬件。
上述过程可以在同一台计算机上完成,也可以在网络环境中,由不同的计算机合作完成,OpenGL通过上述合作实现网络透明。
图1.1 OpenGL工作流程
OpenGL指令集封装在库或共享程序集中,应用程序发出OpenGL命令后,OpenGL调用被这些库处理。然后传递服务内核处理后进一步交由操作系统,操作系统根据具体的硬件,例如不同的显示卡进行具体处理。如调用厂家的服务驱动程序或调用公共驱动程序,最后传递给视频显示驱动,而驱动程序驱动显示卡向显示屏幕提供显示。
整个处理过程都在计算机后台完成,基本不需要程序员参与。程序员只需要开发应用程序部分,管理硬件的工作交由计算机完成。 1.2.2 OpenGL渲染管线
OpenGL具有超强的图形绘制能力,包括绘制物体、启动光照、管理位图、纹理映射、动画、图像增强以及交互技术等功能。作为图形硬件的软件接口,OpenGL主要是将三维的物体投影到一个二维平面上,之后处理得到像素,进行显示。
OpenGL首先将物体转化为可以描述物体集合性质的顶点(Vertex)与描述图像的像素(Pixel),在执行一系列操作后,最终将这些数据转化成像素数据。也就是说, OpenGL是基于点的。在OpenGL中,无论何种情况,指令总是被顺序处理。由一组顶点定义的图元(Primitive)执行完绘制操作后,后继图元才能起作用。
绝大部分OpenGL实现都有相似的操作顺序,即称为OpenGL渲染管线的一系列相关的处理阶段。 1.2.3 OpenGL数据类型
OpenGL定义了自身的数据类型,主要有GLbyte,GLshort,GLint,GLfloat,
GLdouble,GLubyte,GLushort和GLuint。
不同的OpenGL实现在选择哪些C语言数据类型来表示OpenGL数据类型方面存在一些差异。使用OpenGL定义的数据类型,就可以在OpenGL代码跨平台移植时避免类型不匹配的问题。
1.3 本文框架结构
本文通过对三维图像的生成及显示理论进行系统认真的学习和研究,查阅了大量的国内外相关的文献和资料,主要完成了三维图像的图像建模、色彩渲染、动画应用等。本文的主要结构如下所示:
第一章,绪论。本章首先介绍了三维图形学研究的背景和意义,然后简述了OpenGL的理论框架,最后陈述了本文的内容安排。
第二章,国内外研究现状。本章介绍了三维图形学的历史、发展及将来的研究方向。然后介绍了其在太空通信方面的应用。
第三章,OpenGL实现三维图像显示的基本理论。本章详细阐述了OpenGL的基本原理,首先讲述了OpenGL场景坐标的建立,然后介绍了OpenGL投影的变换,窗口视口的计算以及基本图元的绘制。
第四章,三维图像的实现及结果分析。本章介绍了OpenGL的初始化和三维图像的建模、色彩渲染、动画应用,以及卫星在深空场景仿真的实现。
第五章,总结和展望。本章总结了本设计所完成的工作,并对其中的缺陷做出了说明,指出了所实现的三维图像在通信方面的不足,对下一步的工作做了展望。
第二章 三维图形学的国内外研究现状及发展
2.1国内外研究现状
当前,研究卫星及深空场景仿真的工作还不太多。MRC和波音宇航公司等最早开发出天体背景描述器(CBSD)。可得到指定时刻的任意方向和任意大小视场的星空场景;Hallet 建立了在轨飞行器可视化计算机图形系统;Hagedorn利用虚拟现实技术,采用交互图形工作站对飞行器试验任务提供支持;Standridge采用2 维和3 维空间建模的方法。通过可视化仿真技术演示和观察地心轨道上卫星运行状态。Stytz开发了一组十分简洁的卫星姿态显示模型及仿真软件, 其能较逼真地动态显示在轨
卫星姿态变换动画。Kenneth对通讯卫星在太空运行的场景及不同姿态对通讯的影响进行了仿真;Andrew 提出了一个太空飞船飞行模拟的框架。
国内这方面的研究起步较晚,2001年提出了可将虚拟现实技术与卫星仿真技术相结合,辅助卫星的设计、制造和发射实现了一个面向卫星系统仿真的可视化环境,可显示卫星系统运行过程的动态三维场景,并对小卫星轨道姿态控制系统仿真进行了研究;从可视交互仿真模型设计的角度提出了人造地球卫星的一组几何定轨方法,对惯性卫星组合导航开发平台的可视化仿真和实现进行了研究;利用三维可视化技术实现了挠性卫星飞行姿态的计算机三维动画仿真;在上述工作的基础上,本文提出了一个卫星与深空场景实时生成的方法,基于真实的卫星轨道及天文学星表数据,综合了计算机图形学及天文学知识,模拟出卫星的运动过程及其与星空的合成场景;同时采用一系列加速绘制技术,实时生成了卫星与深空动态场景并能进行多视点交互虚拟漫游。
2.2 三维图形学发展
三维图形学的发展主要包括硬件、软件和算法三方面的发展。 2.2.1三维图形学硬件的发展
(1) 被动式三维图形学
1950年,美国麻省理工学院 MIT的旋风1号计算机,是世界上第一台图形显示器。用一个类似于示波器的CRT来显示一些简单的图形。
1958年,美国 Calcomp公司由联机数字记录仪发展成滚筒式绘图仪。 1958年,GerBer公司把数控机床发展成为平板式绘图仪。
50年代末,MIT的林肯实验室在旋风计算机上开发的SAGE空中防御系统,第一次使用了具有交互功能的CRT显示器。
(2) 交互式三维图形学
60年代中期使用随机扫描显示器,60年代后期使用存储管式显示器,70年代中期出现了基于电视技术的光栅图形显示器。
80年代出现了光栅图形显示器的PC和图形工作站。
图形输入设备如光笔、鼠标、操纵杆、键盘t跟踪球拇指轮等也同时在不断更新和发展。
(3) 沉浸式三维图形学
虚拟现实系统 Virtual Reality System;
增强现实系统 Augmented Reality System 将真实世界信息和虚拟世界信息无缝集成;
相应图形硬件如数据衣、数据手套、数据鞋以及头盔、立体眼镜、运动捕获设备等得以迅速的发展。 2.2.2三维图形学软件的发展
1974年,美国国家标准化局ANSI提出了制定图形软件功能标准化的基本规则。此后,美国计算机协会ACM成立了图形标准化委员会。
1977年提出了“核心图形系统\的规范;
ISO发布了计算机图形接口CGI,计算机图形元文件标准CGM,计算机图形核心系统GKS,程序员层次交互式系统PHIGS,基本图形转换规范IGES,产品数据转换规范STEP等计算机三维图形标准;
在各种三维图形标准之上,开发了各种应用图形软件 3D MAX,MAYA,CorelDraw,LightScape 等,广泛应用于制造、军事、地质、农业、科研、商务、教育、影视媒体等各个领域。 2.2.3三维图形学算法的研究范畴
基于三维图形设备的基本图形元素的生成算法;
基本三维图形元素的几何变换、投影变换和窗口剪裁等;
自由曲线曲面的插值、拟合、拼接、分解、过渡、光顺、整体修改、局部修改等; 三维图形元素(点、线、面、体)的求交、分类及集合运算; 隐藏线、隐藏面的消除以及具有光照效果的真实感图形显示; 不同字体的点阵表示,矢量中、西文字符的生成与变换; 三维形体的实时显示和图形的并行处理; 三维图形用户界面及交互技术; 虚拟现实环境的生成及其控制算法等。
2.3 计算机三维图形学的应用
科学数据可视化(Scientific Visualization),人机交互技术,影视制作(Films),游
戏(Games),医学手术导航、医学图像处理(Medical Imaging),CADCAM,军事,图形用户界面(User Interface)。
第三章 OpenGL实现三维图像显示的基本理论
人们能够观察到图像,实际上是图像在人眼的视网膜上成像的结果,而要完成图像的显示就必须要建立图像坐标,下面我们就从图像的坐标建立开始说起。
3.1 场景坐标系
计算机产生的图形存在于几何学所研究的仿射空间中口1。从基本数学概念上来说,一个坐标系对应了一个仿射空间(Affine Space),当矢量从一个坐标系变换到另一个坐标系时要进行线性变换(Linear Transformation)。对点来说,要进行仿射变换(Affine Transformation)。因此用同源坐标,它能在对矢量进行线性变换的同时对点进行仿射变换。坐标变换的基本操作就是将变换矩阵乘以矢量或点。
仿射空间中不存在原点,也不包括任何定义长度和角度的机制。但是在计算机图形学中,模型(比如卡车或虚拟世界)一般只是考虑相对坐标,因此没有任何点被真正的区分区。
3.1.1坐标系及观察流程
物体模型要显示在屏幕上必须最终确定其显示的位置,即物体在设备坐标系中的位置。但逻辑上物体的位置总是在待渲染的场景中确定的,即建模坐标系中的位置。场景设计者设置物体在建模坐标系中的位置,然后OpenGL将其最终转换成显示设备坐标系中的位置。其中设计人员需要指定建模坐标系并将其传递给OpenGL,以供 OpenGL 转换。
事实上,在从场景物体位置转化成设备坐标系位置,最后物体显示在屏幕上的过
程中存在四种坐标系:建模坐标系(Modeling Coordinate),世界坐标系(World Coordinate),规范化设备坐标系(Normalized Device Coordinate)和设备坐标系(Device Coordinate),它们之间的坐标变换如图3.1所示。
MC WC NVC DC