图形图像是传递信息的主要途径人们使用图形来表达与交

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图形图像是传递信息的主要途径人们使用图形来表达与交第1章绪论
图形图像是传递信息的主要途径。

人们使用图形来表达与交流思想有着悠久的历史,尤其在当今的工程领域和各个学科及其分支都离不开图形和图像。

人的眼睛从一张图纸中吸收的信息比从一张数据表格吸收的信息要快得多,而且,如果图形和数字能够互为补充,则可使人们更深刻地认识事物的本质及其内在联系。

为了能够更好地模拟出虚拟的“真实”世界,人们使用了当今最为先进的各种技术手段,研制出了许多优秀的图形软硬件系统。

对于软件系统而言,OpenGL和C++(包括C)程序设计语言是推动图形学发展的重要动力。

因此,为了更好地理解和学习基于OpenGL、由C++写成的Open Inventor三维图形API(Application Programming Interface,应用程序编程接口),本章先从计算机图形学(Computer Graphics)的发展开始,一步步加深对Open Inventor这一强大的图形编程工具的理解。

1.1 计算机图形学的简单回顾
计算机图形学是研究如何用数字计算机生成、处理和显示图形的一门学科。

图形学的应用从某种意义上标志着计算机软、硬件的发展水平。

人们要利用计算机进行工作,必须有人与计算机之间进行传递信息的手段——人机界面。

人机界面从早期的读卡机及控制板上的开关和指示灯发展到键盘和字符中断,再发展到基于键盘、鼠标、光笔等输入设备和光栅显示器的图形用户界面,而最终必然过渡到带给用户身临其境感觉的三维用户界面——虚拟环境(虚拟现实)。

计算机图形学来源于生活、科学、工程技术、艺术、音乐、舞蹈、电影制作等各行各业,反过来它又大大促进了这些领域的发展。

1.1.1 计算机图形学的发展简史
本书侧重于介绍那些源于过去、至今仍在使用而且将来大概还会继续使用的基本原理和技术,这些内容通常会贯穿于整本书中。

本节简要地回顾计算机图形学的发展历史,说明当今系统的由来。

关于该领域更为详尽的发展演化过程,可以参考附录中相关参考文献。

编写硬件的发展历史显然要比软件的更为容易一些,因为硬件的发展状况对本领域的影响较大。

因此,先从硬件谈起。

1(硬件的发展
计算机图形学的研究起源于麻省理工学院。

1950年,第一台图形显示器作为美国麻省理工学院(MIT)旋风I号(Whirlwind I)计算机的附件诞生了。

该显示器用一个类似于示波器的阴极射线管(Cathode Ray Tube,CRT)来显示一些简单的图形。

1962年,
Open Inventor程序设计从入门到精通
第一台光笔交互式图形显示器在麻省理工学院林肯实验室研制成功,它使用光笔在图形显示器上实现选择、定位等交互功能,这是Lvan Sutherland以博士论文形式完成的研究课题,其SKETCHPAD系统被公认为是对交互式图形生成技术的发展奠定基础的系统。

20世纪70年代是计算机图形学发展过程中一个重要的历史时期。

由于光栅显示器的产生,使得在20世纪60年代就已处于萌芽状态的光栅图形学算法迅速发展起来,一些基本图形概念及其相应算法,如区域填充、裁剪、消隐等纷纷诞生,图形学进入了第一个兴盛发展时期,并开始出现实用的CAD图形系统。

在这一时期,计算机图形学还有另外两个重要进展,分别是真实感图形学和实体造型技术的产生。

进入20世纪80年代以后,工作站的出现极大地促进了计算机图形学的发展。

工作站比起小型计算机来说,在图形生成上具有明显的优势,而且目前正朝着高速、高容量、标准化交互界面等方向发展。

而且,从20世纪80年代后期至今,微
机的性能也迅速提高,无论是整数运算速度还是浮点数运算能力、不论是内存容量还是磁盘空间,逐步可以和工作站相媲美,而且大多数微机都配置了高分辨率的显示器和窗口管理系统,加之价格远低于工作站,因此,微机已成为图形生成的重要环境。

2(软件的发展
随着计算机硬件的发展,需要给图形显示软件提出统一的标准,这就是图形学在软件系统方面的发展,但它要比硬件的发展进程复杂得多。

从总体上讲,计算机图形学的发展经历了被动式图形学、交互式图形学和沉浸式图形学三个发展过程。

下一节将讨论交互式图形学,在“虚拟现实技术”中将论述沉浸式图形学的相关知识。

早期图形的显示采用物体轮廓来表示物体形状,这就是物体的线框图模型。

但仅能确定如图1.1所示的立方体是代表第二个还是第三个立方体。

可见,在显示三维物体时,不仅要决定物体上每条棱边在屏幕上的显示位置,而且还要决定哪些棱边是可见的,必须显示,哪些棱边被遮挡了,不可见,必须抹掉或用虚线表示。

找出并消除物体中不可见的部分,称为消隐。

经过消隐得到的图形成为消隐图。

图1.1后面的两个图形均为消隐图。

另一方面,将消隐技术和光照模型结合起来,则可以得到物体逼真的显示效果。

1980年,Whitted提出了一个光透视模型——Whitted模型,并第一次给出光线跟踪算法的范例,实现了Whitted模型。

1984年,美国Cornell大学和日本广岛大学的学者分别将热辐射工程中的辐射度方法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫反射表面间的多重漫反射效果。

光线跟踪算法和辐射度算法的提出,标志着真实感图形的显示算法已逐渐成熟。

图1.1 一个立方体的线框图和消隐图
第 1
章绪论
1.1.2 计算机图形学的广泛应用
计算机图形学的应用可分为以下四个主要方面:
信息显示
设计
模拟
用户界面
1(信息显示
图形总是和信息显示联系在一起。

4000年以前在巴比伦发现了在石桌上用八面图形投影法来表现建筑平面设计图的例子。

在文艺复兴时期,发展了创作透视绘画的机械学方法。

无数工程学生对画在对数纸上的数据熟悉起来。

最近,允许包括色彩、多数据集和选择算法等的交互式图表设计软件已经规范。

在建筑和机械设计领域,手工绘图正被采用绘图仪和工作站的基于计算机的绘图系统所替代。

同样,也能用计算机图形学解决医学上的大量难题。

最近,科学视觉化问题引起了很大关注。

尽管研究人员现在正采用超级计算机去解决以前在流体和单分子生物学等领域中难以处理的问题,但它们需要新的显示技术来表现生成的大量多维数据的分析结果。

2(设计
工程和建筑专业人员关心设计,尽管他们的应用不同,但大多数设计者面临相似的困难,采用了类似的方法。

大多数设计问题的基本特点之一是没有唯一的解决方案,因此,设计者可能需要多次检查原来的设计,修改它,以获得一个更好的解决方案。

在这个重复的过程中,计算机图形学已变成一个不可缺少的部分。

看一下如何用计算机图形学进行电子电路设计的例子。

设计者坐在带有图形输入设备的图形工作站前,如用鼠标确定显示的位置。

初始显示屏上包括可用在电路中的各种元件和一个用于“构造”电路的空白区,设计者可以用输入装置选择需要的元件并将其移到设计中,然后进行元件间的连接。

为形成这种初始设计,系统综合地应用了计算机图形学。

电路元件可在屏幕上画出并移动,图形输入装置用来表示选择和位置。

许多辅助手段可以用来帮助设计者进行元件的精确定位,自动完成如连接导线这样的任务。

设计出的电路由分析程序进行测试,并可在工作站上显示其测试结果(如电压,时间图)。

若设计者需要修改设计,或尝试另一种设计,则只需重新调整元件或电路,然后再利用分析程序进行测试并选择最优设计即可。

在该过程中,设计者不必重写图形程序,甚至无须了解许多计算机图形学知识。

倘若没有计算机图形学,这种设计过程几乎就不可能实现。

3(模拟
Open Inventor程序设计从入门到精通
人们所熟知的计算机图形学应用可归为模拟类。

视频游戏展示了计算机图形学的视觉魅力和实时生成复杂图像的能力。

走廊游戏的内容揭示了当前软件和硬件的技术发展水平。

飞行模拟器的核心是计算机生成的图像,这种模拟训练大大节省了人力物力,已经成为训练飞行员的标准方法。

我们在电视和电影中看到的计算机生成的图像已经达到了和真实图像几乎无法区分的地步。

4(用户界面
计算机图形学的应用已经从根本上改变了人和计算机之间的交互界面。

设想一下电子办公室,本书的图是由这样的界面产生的,秘书坐在工作站前,而不是备有打字机的办公桌前,用户有一个指示设备(如鼠标)实现其和工作站之间的交互。

显示由许多图符组成,代表秘书可进行的各种操作,例如,有一个邮箱图符,如果指
向并单击它,屏幕上将会显示电子邮件信息,废纸框图符允许用户对不需要的邮件进行处理,同时,一个文件柜图符用来存放信件或其他文件,如图1.2所示。

计算机图形学在不同领域中的应用图1.2
类似的图形界面是电路设计系统的一部分。

本书把这些界面看作计算机图形学的明显应用,但从使用办公自动化系统的秘书或电路设计者的角度来看,图形学是完成任务所采用的工具。

尽管他们从不编写图形程序,但大量计算机用户使用图形软件。

1.1.3 交互式图形学
由于人类具有高度发达的二维和三维模式识别能力,借助显示在计算机屏幕上的图形,可以给人类与计算机的交流提供一种最为自然的方式。

在当今的许多设计、实现和构筑过程中,图像信息实际上是不可缺少的。

科学计算可视化在20世纪80年代后期成为一个重要的领域,科学家和工程师们知道,如果不对数据进行归纳并用各种图形来表现,他们就无法理解由超级计算机运算产生的大量数据。

因此,利用这些数据,不仅可以制作有形的“真实世界”中的物体图像,还可以制作抽象合成物体的图像。

例如,用图形表示调查结果数据,并根据数据的动态变化修改所计算出的动态结果图像。

所以,许多交互式的图形技术都包含了用户控制的运动动力学(Motion Dynamics)和更新动力学(Update Dynamics)的硬件和软件。

第 1
章绪论
运动动力学的运动原理是让物体相对于静止的观察人员发生移动或旋转,或保持物体不动,而使观察者围绕物体移动、摇动镜头以选择视口,或拉近或推远景物以选择不同的细节程度。

这就像快速移动摄像机时,通过瞄准镜观察物体一样,或者像游乐场中提供的在陆地或宇宙景观中运动的“飞行模拟器”,而视频娱乐厅则提供了基于图形的敏捷性游戏和赛车驾驶模拟器,如图1.3所示。

而更新动力学则是指对观察物体的形状、颜色或其他性质变化的模拟。

例如,更新动力学系统可以模拟飞机的某个零件在飞机飞行过程中的变形,或者是在执行某个操作时该零件的变形状况。

但上述具有交互式的计算机图形系统一般需要系统具有海量数据的运算能力和高带宽的显示能力。

TM图1.3 罗技公司的赛车类游戏交互设备
1(交互式图形学的结构
图1.4给出了交互式图形学的系统原型。

从中可以看出,在硬件层次上,计算机从交互设备接收输入,向显示设备输出图像;在软件层次上,可分为三部分:第一部分是应用程序,用来创建图元,并在应用模型中存入或读出该图元;第二部分则是应用模型,代表了将在屏幕上显示的数据和物体,或对用户的输入进行处理,并向图形系统发送一系列图像输出命令来产生视图。

这些命令中既包括观察对象的详细几何描述,还包括这些对象的显示属性;第三部分为图形系统,负责从对象的细节描述中产生实际的图像,并将用户的输入传递给应用程序,等待处理。

图1.4 交互式图形学的系统原型
2(交互处理
应用程序交互处理的典型方法为事件驱动循环。

可以将其简单地看作是一台有限的状态机,具有一个中央等待状态,用户输入的事件会修改它所处的状态。

处理一条命令可能需要一连串具有相同格式的嵌套事件循环,它们拥有各自的状态和输入状态。

应用程序也可能通过随时查询它们的数值对输入设备(如定位器)进行采样,然后,程序将返回值作为处理过程的输入。

同时,处理过程也会修改应用程序、图像或数据库的状态。

事件驱动循环可以用下面的程序伪代码表示: Open Inventor程序设计从入门到精通
由应用模型适当地导出数据,产生初始显示
do {
启用选择命令
// 程序停顿于“等待状态”,直至用户干预
等待用户选择
switch(选择) {
执行选择,或执行已完成的命令
按要求更新模型和屏幕
}
} while(!退出) // 用户没有选择“退出”操作
尽管对现在的计算机图形应用来说通常都使用事件循环模型,但它仍有一定的局限性。

其人机对话是一种顺序乒乓模型,用户动作与计算机反应轮流进行。

将来会出现更多的并行交流模型,从而可以利用多种通信通道,如图形和语音等形式同时进行输入和输出,而无需考虑所采用的编程语言的数据结构。

对于这种形式自由的交流模型在此不作深入讨论。

1.2 虚拟现实技术
虚拟现实(Virtual Reality,VR)属于图形学发展的第三个阶段——沉浸式图形学阶段。

自从计算机诞生以来,传统的信息处理环境一直是以计算机为中心,是“人适应计算机”,从而极大程度上推动了人机交互技术的发展。

而如果要实现以人为本,即让“计算机适应人”,则必须解决一系列技术问题,形成和谐的人机环境。

虚拟现实技术就是解决这类问题的方法之一。

虚拟现实技术又称灵境技术,是一种基于可计算信息的沉浸式交互环境。

具体地说,就是采用以计算机技术为核心的现代高科技生成逼真的视、听、触觉一体化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象进行交互作用、相互影响,从而产生“沉浸”于等同真实环境的感受和体验。

VR带来了人机交互的新概念、新内容、新方式和新方法,使得人机交互的内容更加丰富、形象,方式更加自然、和谐。

1.2.1 虚拟现实技术的主要特征
从概念上讲,任何一个虚拟现实系统都可以用三个“I”来描述其特性,这就是“沉浸”(Immersio n)、“交互”(Interaction)和“想象”(Imagination)。

这三个“I”反映了虚拟现实系统的关键特性,就是达到系统与人的充分交互,强调人在虚拟现实环境中所起的主导作用,形成一个开放、互动的环境。

1(沉浸性
又称临场感,是指用户感到作为主角存在于模拟环境中的真实程度。

理想的模拟环
第 1
章绪论境应该达到使用户难以分辨真假的程度(例如可视场景应随着视点的变化而变化),甚至比真的还“真”。

这种沉浸感的意义在于可使用户集中注意力。

为达到这个目标,就必须具有更多感知的能力,理想的虚拟现实系统应具备人类所具有的一切感知能力,包括视觉、听觉、触觉,甚至味觉和嗅觉。

2(交互性
交互性是指用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性),系统要能提供方便的、丰富的、主要基于自然技能的人机交互手段。

这些手段使参与者能够对虚拟环境进行实时操纵,能从虚拟环境中得到反馈信息,也能使系统了解参与者关键部位的位置、状态、变形等各种系统需要知道的数据。

实时性是非常重要的,如果在交互操作时存在较大的延迟,与人的心理经验不一致,就谈不上自然技能的交互,也很难获得沉浸感。

为实现这个目标,高速计算和处理能力必不可少。

参与者在虚拟环境中的活动或经历有两种形式,一种是主观参与(First-Person Activities),另一种是客观参与(Second-Person Activities)。

主观参与时,参与者是整个经历的中心,一切围绕参与者进行;客观参与时,参与者则可以在虚拟环境中看到自己与其他物体的交互。

3(想象性
虚拟现实不仅仅是一个演示媒体,而且还是一个设计工具。

它以视觉形式反映了设计者的思想,比如盖一座现代化的大厦之前,首先需要对这座大厦的结构、外形做细致的构思。

为使之定量化,还需绘制许多图纸,当然这些图纸只有内行人才能读懂。

虚拟现实可以把这种构思变成看得见的虚拟物体和环境,使以往只能借助传统沙盘的设计模式提升到数字化的所见即所得的完美境界,大大提高了设计和规划的质量与效率。

这就是VR所具有的第三个特征,想象性。

1.2.2 虚拟现实系统的体系结构
按照虚拟现实系统所采用的体系结构可分为两种:分布式虚拟现实系统和非分布式虚拟现实系统。

1(非分布式虚拟现实系统
真实用户环境(Veridical User Environment,VUE)是一个事件驱动按照一组规则来处理并发事件的虚拟现实系统。

该结构将单个的虚拟世界分解成多个客户/
服务器进程,这些进程可以在不同的处理器上执行,并通过消息传递相互通信。

系统包含3个VR 部件:
设备服务器,Device Server,,
应用进程,Application Process,~也作为一种服务器进程来管理,
会话管理,Dialogue Manager~DM,。

设备服务器管理系统的输入输出设备。

会话管理则是设备服务器的客户程序,同时
Open Inventor程序设计从入门到精通
又是应用进程的服务器,它定义了虚拟世界的交互规则,并协调和传递输入设备服务器产生的事件到应用进程,然后将响应事件传递到输出设备服务器。

会话管理通过异步消息传递与其他服务器通信,并按照规则传递事件。

2(分布式虚拟现实系统
分布式虚拟现实(Distributed Virtual Reality,DVR)系统是一个支持多人实时通过网络进行交互的虚拟现实系统,每个用户在一个VR环境(真实感3D立体图形、立体声)中通过相互联网的计算机与其他用户进行交互。

DVR的研究开发工作早在20世纪80年代初就开始了,近年来网络技术的飞速发展更进一步推进了DVR 的研究和开发。

(1)分布式虚拟现实系统的特征
DVR系统应具有以下特征:
? 共享的虚拟工作空间;
? 伪实体的行为真实感;
? 支持实时交互,共享时钟;
? 多个用户以多种方式相互通信;
? 资源信息共享及允许用户自然操作环境中的对象。

(2)分布式虚拟现实系统的需求
DVR系统有4个基本组成部件:图形显示器、通信和控制设备、处理系统和数据网络。

DVR系统是分布式系统和VR系统的有机结合,其需求可从VR本身的需求和分布式系统的需求两个方面来阐述。

图1.5中给出了部分常用的VR硬件设备。

(a)立体眼镜 (b)数据手套 (c)位置跟踪器
图1.5 部分常用的设备VR
1.2.3 蓬勃发展的虚拟现实技术
随着计算机软硬件技术的飞速发展,VR技术在近年来得到了极为广泛的应用。

Helsel与Doherty在1993年对全世界范围内进行的805项VR研究项目作了统计,结果表明,目前在娱乐、教育及艺术方面的应用占据主流,达21.4%,其次是军事与航空达12.7%,医学方面占6.13%,机器人方面占6.21%,商业方面占
4.96%。

另外,在科学计算可视化、制造业等方面也占有相当的比重。

下面简要介绍其部分应用。

(1)医学
第 1
章绪论
VR在医学方面的应用具有十分重要的现实意义。

在虚拟环境中,可以建立虚拟的人体模型,借助于跟踪球、头盔显示器(Head Mounted Display,HMD)和数据手套,学生可以很容易了解人体内部各器官的结构,这比现有的采用教科书的方式要有效得多。

Pieper及Satara等研究者在20世纪90年代初基于两个SGI工作站建
立了一个虚拟外科手术训练器,用于腿部及腹部外科手术模拟。

这个虚拟的环境包括虚拟的手术台与手术灯,虚拟的外科工具(如手术刀、注射器、手术钳等),虚拟的人体模型与器官等。

借助于HMD及数据手套,使用者可以对虚拟的人体模型进行手术。

但该系统有待进一步改进,如需提高环境的真实感,增加网络功能,使其能同时培训多个使用者,或可在外地专家的指导下进行工作等。

(2)娱乐、艺术与教育
丰富的感觉能力与三维显示环境使得VR成为理想的视频游戏工具。

由于在娱乐方面对VR的真实感要求不是太高,近年来VR在这方面发展最为迅猛。

如芝加哥开放了世界上第一台大型可供多人使用的VR娱乐系统,其主题是关于3025年的一场未来战争;英国开发的称为“Virtuality”的VR游戏系统,配有HMD,大大增强了真实感。

另外在家庭娱乐方面,VR也显示出了很好的前景。

作为传输显示信息的媒体,VR在未来艺术领域方面所具有的潜在应用能力也不可低估。

VR所具有的临场参与感与交互能力可将静态的艺术(如油画、雕刻等)转化为动态的,可使观赏者更好地欣赏作者的思想艺术。

另外,VR提高了艺术表现能力,如一个虚拟的音乐家可以演奏各种各样的乐器,手足不便的人或远在外地的人可以在他生活的居室中去虚拟的音乐厅欣赏音乐会等等。

对艺术的潜在应用价值同样适用于教育,如在解释一些复杂的系统抽象的概念如量子物理等方面,VR是非常有力的工具。

(3)军事与航天工业
模拟训练一直是军事与航天工业中的一个重要课题,这为VR提供了广阔的应用前景。

美国国防部高级研究计划局(Defense Advanced Research Projects Agency,DARPA)自20世纪80年代起一直致力于研究称为SIMNET的虚拟战场系统,以提供坦克协同训练,该系统可联结200多台模拟器。

另外利用VR技术,可模拟零重力环境,以代替现在非标准的水下训练宇航员的方法。

以上仅列出虚拟现实的部分应用前景,可以预见,在不久的将来,虚拟现实技术将会影响甚至改变我们的观念与习惯,并将深入人们的日常工作与生活。

1.3 C++面向对象基础
如本章开始所述,Open Inventor采用的开发语言是C++。

C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但比C语言更容易学习和掌握。

C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。

面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。

因此,在学习Open Inventor之前,有必要对C++的基础、面向对象的基本概念以及C++程序的基本结构做一简单介绍,以便更好地理解Open Inventor中的一些子类化方法。

Open Inventor程序设计从入门到精通
1.3.1 C++概述
客观世界中任何一个事物都可以看作对象(Object)。

例如学校是一个对象,班级也是一个对象。

同样,军队中的一个师、一个团、一个连和一个班都是对象。

在实际生活中,人们往往在一个对象中进行活动,或者说对象是进行活动的基本单位。

从计算机的角度来看,一个对象应该包括两个要素:一是数据,相当于班级中的学生;二是需要进行的操作,相当于学生进行的活动。

对象就是一个包含数据以及与这些数据有关的操作的集合。

图1.6表示一个对象是由数据和操作代码组成的。

面向对象的程序设计(Object Oriented Programming,OOP),采用新的思路。

它面对的是一个个对象,所有数据分别属于不同的对象,且每一组。

相关文档
最新文档