虚拟设计毕业设计(论文)说明书_第1页
虚拟设计毕业设计(论文)说明书_第2页
虚拟设计毕业设计(论文)说明书_第3页
虚拟设计毕业设计(论文)说明书_第4页
虚拟设计毕业设计(论文)说明书_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 绪 论1.1虚拟现实(vr)的基本概念虚拟现实(virtual reality)是由计算机生成的多感官刺激的虚拟世界(环境),是一种高级的人机交互系统。一般具有以下两个特点:(1)计算机生成的虚拟世界(环境)必须是一个能给人提供视觉、听觉、触觉、嗅觉,以及味觉等多种感官刺激的世界。(2)虚拟现实系统实质上是一种人机交互系统,而且是一种高级的人机交互系统。因为这里的交互操作是对多通道信息进行的,并且对沉浸式系统要求采用自然方式交互,对非沉浸式系统也可使用常规交互设备进行交互操作。虚拟现实系统由两部分组成:一部分为创建的虚拟世界(环境),另一部分为介入者(人)。虚拟现实的核心是强调两者之间

2、的交互操作,即反映出人在虚拟世界(环境)中的体验。图1-1 即为虚拟现实的概念模型目前,虚拟现实技术已广泛应用于航空航天、医学实习、建筑设计、军事训练、体育训练、娱乐游戏等许多领域。利用三维图形生成技术、多传感交互技术以及高分辨显示技术,生成逼真的三维虚拟环境,使用者戴上特殊的头盔、数据手套等传感设备,或利用键盘、鼠标等输入设备,便可以进入虚拟空间,成为虚拟环境的一员,进行实时交互,感知和操作虚拟世界中的各种对象,从而获得身临其境的感受和体会。1.2虚拟现实(vr)建模技术概述虚拟环境的建模是整个vr系统建立的基础,主要包括三维视觉建模和三维听觉建模。其中,视觉建模主要包括几何建模(geome

3、tric modeling)、运动建模(kinematic modeling)、物理建模(physical modeling)、对象特性(object behavior)建模以及模型分割(model segmentation)等。听觉建模通常只是把交互的声音响应增加到用户和对象的活动中。vr环境建模与传统的cad建模和动画建模有着本质的不同。其主要差别有:(1)vr建模中说明的内容比cad系统建模要多,除说明造型外还要说明许多相关的系统链接。(2)由于要实时运行三维模型,其建模方法与以造型为主的建模有很大的不同,大多用其他技术(如纹理)而不是增加几何造型复杂度来提高逼真度。1.2.1几何建模几

4、何建模主要包括对象形状和对象外表的建模。对象形状的创建一般都要利用一定的建模工具,最简便的就是使用传统的cad软件,如3dsmax、maya、autocad交互地建立对象模型。当然,也可以使用专门的vr建模工具,如multigen creator等。对象外表的建模实质上就是用纹理来代替物体多边形细节,在满足虚拟现实系统真实感的要求的同时,不会影响计算机图形处理的速度。1.2.2运动建模在虚拟环境中,物体的特性涉及到位置改变、碰撞、捕获、缩放、表面变形等等。因此,仅建立静态的三维几何体对vr来说还是不够的,还必须对其进行运动建模。在vr中,不仅要考虑三维对象的绝对坐标,还需要考虑到它们的相对坐标

5、,每个对象都有自己的坐标系统,称之为对象坐标系统,这个坐标系统的位置随对象的移动而改变。此外,为了在虚拟环境中表现出真实的碰撞效果,碰撞检测也是运动建模中需要解决的一个重要问题,如果对碰撞对象上的每一个点都作碰撞检测,时间开销就会很大,因而在vr系统的实时计算中,通常采用一些优化的碰撞检测算法以节省时间。1.2.3物理建模虚拟对象的物理建模包括定义对象的质量、重量、惯性、表面纹理、光洁度或粗糙度、硬度、弹性和塑性等等,这些特性与几何建模和行为规则结合起来,就可以形成更真实的虚拟物理模型。它需要将物理学与计算机图形学相结合,涉及到力的反馈问题。虚拟对象物理建模的重点是重量建模、表面变形以及弹性和

6、塑性的建模。1.2.4对象特征建模为了增强虚拟环境的沉浸感,除了依据对象的运动和物理特性建立数学模型之外,有些情况下还可以建立与用户无关的对象特征模型,使虚拟物体在一定程度上具有与用户行为无关的“智能”。例如,在一个虚拟办公室的墙上有挂钟,窗口上有温度计,桌上有日历本。当用户处于虚拟的办公室中时,时钟、日历、温度计的数据都将根据当时的实际情况发生变化。对象的特征模型体现了虚拟现实中动态实体的自主性,它们的活动在一定程度上不受用户输入的控制。1.2.5模型分割虚拟环境的几何和物理建模所得到的是一个非常复杂的场景模型,大量的多边形会使图形绘制速度大大减慢。如果现有的ram不能满足图形绘制的内存需求

7、,还会导致大量的内存交换,从而降低系统的交互速度。在建立的场景模型中,可以采用模型分割技术,对场景模型进行有效的组织和管理,来满足系统运行的实时性要求。将虚拟环境分割成较小的单元被称为模型分割。当模型被分割后,只有当前模型中的物体被绘制,因此,可以极大地减少被处理模型的复杂度。1.3课题研究的意义、内容及现状1.3.1课题研究的意义汽车驾驶模拟器是一种集合了传感器技术、计算机技术、三维实时动画技术、计算机接口技术、人工智能技术、数据通信技术、网络技术、多媒体技术等先进技术的仿真系统。借助于驾驶模拟器,能对汽车驾驶员道路(环境)相互作用关系进行研究,也能对驾驶人员进行训练。随着我国汽车行业近年来

8、的迅猛发展,我国的汽车保有量以每年15%的速度递增,公路交通呈现出车辆高速化、车流密集化和驾驶员非职业化的特点。这就要求人们利用先进的手段对驾驶员进行培训,因此,汽车驾驶模拟器的研究具有理论和实用的意义,其研究开发具有广阔的市场。鉴于目前国内已经研制出来汽车驾驶模拟器没有摆脱赛车游戏模式的束缚,沉浸感和交互性不强,从国外成套引进成本又太高。因此,自主开发高质量的汽车驾驶模拟器将会有一定的市场需求。而且随着计算机软、硬件技术的飞速发展,计算机硬件的价格不断下降,性能不断增强,现在pc机的性能早已超过了几年前的工作站水平,基于分布式虚拟现实技术的汽车驾驶模拟器的研究、开发和应用就有了技术和经济的基

9、础。我们正是在这样的情况下提出了“虚拟现实建模技术研究及其在汽车驾驶模拟器中的应用”这一课题,作为汽车驾驶模拟器开发中的一个重要组成部分,用于解决基于物理特性的动力学建模、场景中的真实感图形生成技术、场景模型的实时管理和调度等问题。1.3.2主要的研究内容本课题研究的内容主要体现在以下几个方面:(1)虚拟场景中基于物理特性建模的关键技术,如动力学系统中的弹性、碰撞检测、摩擦力等的体现。(2)大规模场景中多层次细节模型(lod)、纹理技术的最佳匹配比,综合考虑运行速度和视觉效果。(3)虚拟场景中的视觉特效建模技术,逼真地模拟出虚拟场景中的环境视觉特效,如水流、粒子系统、雾效、雨雪、光影等。(4)

10、场景模型的有效管理和调度,尽可能地简化场景的复杂性,提高视景系统中程序运行的效率。1.3.3国内外研究现状(1)国外方面世嘉公司曾于2001年7月18日宣布,该公司将开发面向汽车驾驶学校的驾驶模拟器。该产品将借用该公司开发的专业赛车游戏技术,使该模拟器具备多种功能,按照教练课程改造框架及开发仿真程序。该产品将通过沿用面向游戏机开发的技术,逼真地重现诸如引擎声音和环境声音,并且它还可以再现从前轮传递到方向盘上的反馈力以及反锁死刹车系统(abs)发生作用时所产生的振动等。驾驶模拟最早出现在航空驾驶训练中,随着仿真技术的发展,特别是计算机成像技术的成熟,驾驶模拟才逐渐应用在汽车训练中。20世纪80年

11、代以前,国外开发的汽车驾驶模拟器主要为静态训练型,可分为主动式和被动式。比较早的如捷克的点光源平板投影式汽车驾驶模拟器,应用比较广泛的是日本新泻通讯机株式会社开发的nt-491系列和多轮公司的l-300型汽车驾驶模拟器。20世纪80年代以后,利用开发型模拟器进行人车环境系统的主动安全性分析,改善汽车运动性能,已成为提高驾驶安全性的主要研究方向之一。德国、日本、美国的各大汽车厂家都分别投巨资研制出开发型汽车动态模拟装置。1985年,奔驰公司首先研制出世界上规模最大的六自由度汽车动态模拟器,并成功地用于系列化高速轿车的产品开发中。1989年,大众公司投资改进了其原有的模拟器,更新了计算机运算能力和

12、视景生成系统,并用于新产品研制中。1991年,马自达公司投资研制了跑车型模拟器。1993年初,福特公司投资研制开发模拟器。1995年,日本汽车研究所建成了带有体感模拟系统的模拟器。通用公司的最初研制计划始于1989年,至今已开发出第二代产品,其性能指标居世界领先水平。美国iowa大学1993年就启用1300万美元来开发汽车驾驶模拟器,1996年又进一步增加投资3000万美元由trw公司进行改进,其产品被称为“国家高级汽车驾驶模拟器”。今天,德国、瑞典、日本、美国的各大汽车厂家和研究室都相应更新了自己的开发型驾驶模拟器,不断完善车辆的动力学模型,运动系统都可模拟六个自由度的运动情况,视景系统采用

13、计算机成像系统(cig),可以提供逼真的车辆环境。(2)国内方面汽车驾驶模拟器在我国发展较晚,最早是引进捷克的点光源平板投影式模拟器,景物盘上的道路是用笔描绘而成的平面景象,无坡道;接着引进美国的放电影被动式驾驶模拟器,一个控制台控制20个驾驶舱。到20世纪70年代,我国才有了自己研制的点光源、转盘机电式汽车驾驶模拟器1。20世纪80年代以后,汽车驾驶模拟器在我国发展较快,清华大学、吉林工业大学、空军第二航校、装甲兵工程学院、南京瑞林模拟器实业公司等单位都积极地开展研究工作,并开发出一些初级产品。20世纪90年代以来,我国已经开始自己研制和生产开发型汽车驾驶模拟器。1996年吉林工业大学建立了

14、汽车动态模拟国家重点实验室,研制出了汽车动态模拟器,由模拟舱与运动模拟、计算机实时模拟与控制、视景模拟、数据采集与触感模拟、声响模拟和中央控制台等6大子系统组成2。现阶段,随着汽车保有量的急剧增加,我国自行研制的训练型主动式汽车驾驶模拟器技术已日趋成熟并进入商品化阶段;开发型汽车驾驶模拟器也有了长足发展,但与国际先进水平相比,仍有一定差距。总的来说,还存在技术含量低,汽车视景与操纵动作脱节、滞后,“沉浸感”、“交互性”与“实时性”不强,价格偏高的不足。到目前为止,还没有一种真正意义上的大众化的、容易普及的汽车驾驶模拟器产品。北京中教科源科教仪器设备有限公司研制了kym-4型微机控制汽车模拟驾驶

15、器,它能模拟汽车驾驶的运行环境和操作效果,培训汽车驾驶人员。系统的视景部分是由计算机实时绘制成的,学员在视频上看到的道路,行驶地车辆、各驾驶车辆、行人、建筑物、交通标志等均是随着学员驾驶的过程不断实时变化的。该产品重点解决了学员驾车的人造环境问题,让学习者在视觉感受、操纵感受和运动感受三方面都能找到驾驶近似真车的感觉。目前,北京航空航天大学、国防科技大学、中国航空精密机械研究所、东南大学、吉林大学、吉林工业大学、装甲兵工程学院、昆明理工大学等单位在此研究领域正在进行积极的开展研究工作,并开发出了一些初期的产品,但性能和功能还未能满足市场需求。总的说来,我国现有的训练型驾驶模拟器存在下列问题:a

16、)开发技术含量相对国外较低,汽车视景对操纵动作的响应脱节、滞后,即沉浸感,交互性和实时性不强。b)相对落后的开发技术导致了系统开发周期过长,难适应快速变化的市场需求。1.4论文组织结构本文共分为5章,具体安排如下:第1章:绪论。对虚拟现实的概念及其建模技术做了简要的描述,分析了课题研究的内容和意义,同时结合汽车驾驶模拟器目前在国内外的研究状况,明确了研究工作中重点和方向;第2章:虚拟场景建模中的关键技术。对multigen creator的场景模型的建立做了简要的介绍,分析了场景模型的组织原则,指出了在使用过程中应该注意的问题;第3章:软件开发环境。介绍了视景系统开发工具的选择过程,并根据所选

17、择的开发工具,提出了视景系统的整体开发方案;第4章:场景模型的驱动。介绍了opengvs应用程序的资源组成和运行机制,并对使用opengvs进行三维实时仿真应用程序中的关键技术进行了探讨,给出了系统开发过程中场景模型导入、摄像机跟随以及碰撞检测的实现方法;第5章:全文总结及展望。总结了全文的研究工作,并指出了系统中需要进一步完善的内容。本文的研究内容(深色方框所示)在汽车驾驶模拟器项目开发中所处的地位如图1-2所示:cg语言视景特效gis/gps仿真城市、乡村等道路环境的视景建模;汽车动力学模型的建立;场景模型的驱动评价系统视景仿真平台(服务器端)基于多边形网格实时重建技术的景物简化仪表显示等

18、车内视景仿真分布式通讯模块传感控制模块驾驶舱(游戏控制器)视景仿真平台(客户端)分布式通讯模块视景仿真平台(客户端)分布式通讯模块传感控制模块驾驶舱(游戏控制器)软件系统硬件系统图1-2 汽车驾驶模拟器系统开发框图第2章 虚拟场景建模中的关键技术2.1真实感图形生成技术所谓真实感图形,主要是指图像的效果在屏幕上显示时能迷惑观察者,使他认为这是极其逼真的真实图景。生成高度真实感图形通常有以下几个步骤:消除隐藏面,明暗处理,光线跟踪,生成纹理效应等。下面分别介绍这几种技术。2.1.1 消隐在真实感图形生成中,一个重要的问题是:给定视点和视线方向,决定场景中哪些物体的表面是可见的,那些是被遮挡而看不

19、见的。这一问题被称为场景的消隐。所有的隐藏面消除算法都涉及到各景物表面离视点远近的排序。一个物体离视点越远,它越有可能被另一个距视点较近的物体遮挡。因此,消隐可看成是一个排序问题,消隐算法的效率很大程度上取决于排序的效率。消隐算法按其实现方式分可以分为景物空间消隐算法和图像空间消隐算法。景物空间消隐算法直接在景物空间(摄像机坐标系)中确定视点不可见的表面区域,并将它们表达成同原表面一致的数据结构。在景物空间实现的消隐算法有表优先级算法、bsp算法、weileratherton算法等。图像空间(屏幕坐标系)消隐算法则以屏幕像素为采样单位,确定投影于每一像素的可见景物表面区域,并将其颜色作为该像素

20、的显示光亮度。在图像空间中实现的算法有z缓冲器算法、扫描线算法、光线跟踪算法等。32.1.2 明暗模型三维景物图形的真实感很大程度上取决于能否成功地模拟出物体的明暗效应。明暗处理有两种经典的算法。分别是gouraud方法和phong方法。gouraud方法:h.gouraud在1971年提出曲面的连续性生成明暗的方法。将曲面用多个多边形来逼近,并保存多边形的各顶点处的真正表面的法向量。当多边形被渐次地转换为像素时,在每个顶点处取的正确的颜色被计算,这些值沿多边形进行线性插值。gouraud方法有较好的明暗效果,但是对多边形的逼近情况会强烈地影响由镜面反射而形成的高光反射形状。phong方法:b

21、uit.phong和f.c.crow在1975年提出的曲面多边形的改进绘制算法。将沿扫描线光强作线性插值的grouraud方法改进为,沿扫描线对法向量作线性插值,然后按光照模型计算各点的光强。phong的明暗处理方法的计算量大,但可以解决gouraud方法遇到的许多问题。对透明体的明暗处理还需要采用专门的方法,因为经典的光照模型和明暗处理方法都要假定到考虑的物体表面是不透明的,入射光线在透明体上发生反射和透射。由newell和sancha提出的透明算法不考虑折射的影响,是一个最简单的透明算法:对透明的多边形或表面注以标记,若可见面是透明的,则取它与同它距离最近的另一表面光强的线性组合,并将所得

22、的光强值写入帧缓冲器,并递归地进行此算法直至遇到一个不透明的面或背景。42.1.3 光线跟踪光线跟踪是由whitted在1980年为明暗显示提出的改进照明模型中引进的。光线跟踪算法的基本思想是:观察者能够看见景物是由于光源发出的光照射到物体上的结果,其中一部分到达人的眼睛引起视觉。到达观察者眼中的光可由物体表面反射而来,也可通过表面折射或透射而来,若从光源出发跟踪光线,因只有少量的光能到达观察者的眼睛,处理的效率太低,因此按反途径进行光线跟踪,即按从观察者到景物的方向,在简单的光线情形下,假定画面中的景物均已变换到图像空间,光线从观察者出发,通过光栅中像素的中心进入画面,然后沿光线路径进行跟踪

23、以决定它与画面中的哪一物体相交,每一光线均需与画面中的每一物体进行比较,如果相交,则需求出该光线与物体的所有可能的交点。具有离观察点最近的交叉对应的面为此像素的可见面,再由光照模型可确定该像素处的显示值。完整的光线跟踪算法中用到的光照模型。除了要考虑直接来自光源的光线外,还要考虑由于其它物体的反射或折射传来的光线。42.1.4 纹理映射纹理映射(texture mapping)是一种将二维图像映射到一个几何形状上来产生特殊效果或真实感的一种技术,并不是实际的几何模型。之所以应用纹理映射技术,一方面是因为汽车模拟驾驶器视景系统中有大量不规则的物体需要模拟。在计算机图形学中,不定行物体的模拟是一个

24、十分活跃、难度很大的研究领域,常用的方法是通过分形、粒子、布尔等算法构造大量的三维物体组合而成,而这种建模方法在逼真度提高的同时是以大量系统资源的耗费为条件的。在虚拟场景的模拟中采用纹理映射技术可以较好地模拟这类物体,同时实现逼真度和运行速度的平衡。另一方面,对于复杂实体模型,采用纹理映射可以模拟出丰富的细节,简化模型的构造过程,降低实体模型的复杂度,同时还可以赋予模型鲜明的色彩、贴图特征等。纹理的意义可以简单概括为:用图像来代替模型中可模拟或不可模拟的细节,提高模拟逼真度和显示速度。纹理映射中还涉及到透明纹理映射、纹理拼接、复杂模型表面的纹理影射等关键技术。2.2实时性技术所有计算机图形制作

25、系统的制图能力都是有限的,这种限制表现在一定的帧频下,每帧所能绘制的原始几何模型(三角形面)数是有限的。如果通过减少模型的数量或详细程度来节约运算时间,会带来降低视景逼真程度的后果。在三维几何对象建模中,为提高视景生成的效率,达到视景充分实时变化的目的,通常采用lod和mipmapping技术。2.2.1lod技术lod(level of detail ),即多种细节层次。lod技术的主导思想是:在距离视点较近时,对物体用较多的多边形来描述;较远时,用较少的多边形来描述,这样可以大大平衡图形负载,使仿真的实时交互成为可能。lod的实现分为两步:首先,为物体建造一组详细程度不同的模型。通过利用一

26、定的简化方法对相应的目标进行简化分级,形成一组详细程度有别的lod数据模型。有关分级数的大小和每一级数据模型的细节详细程度,可根据需要来确定。图3为在3dsmax中绘制的一组lod模型的视觉效果。图2-1 一组详细程度不同的环岛lod模型然后,建立模型与视距间的关系,通过计算视点与目标中心点间的距离得到目标的视距。为每一个目标建立一个有关视距的阈值,用阈值把视距划分为不同的视距段。在选择lod模型参与视景生成计算时,首先判断目标的当前视距处于哪个视距段,然后调用此视距段所对应的该目标lod数据模型进行视景生成。图4表示了lod模型与视距间的对应关系。 图22 构造模型与视距的对应关系2.2.2

27、mipmapping技术在direct3d中,一个mipmap是一系列的纹理,以逐渐变低的分辨率表示同一个图像。这个集合中的每个图像是前一图像的1/4,这使得整个mip-map占据原始图像的4/3内存。mipmapping技术提供了一种提高被渲染纹理质量的非常有效的方式。mipmapping技术的思想是:为欲贴纹理的几何面准备好一组大小不同的纹理图像,根据几何面离视点的距离来调用相应的纹理图像参与纹理的映射。mipmapping技术的实现实际上同lod技术的实现是一样的。首先,需要准备好一组大小与详细程度不同的纹理图片(mipmaps),如图5所示。然后,建立不同的纹理图片与视距间的对应关系。

28、调用时,根据物体的大小变化来选用相应大小与详细程度的图片来做纹理贴面。当需要贴纹理的几何面离视点较远时,用较小的纹理图片来做纹理映射,使点与点之间的纹理映射量大大减少,从而提高了映射效率,达到增强虚拟视景实时性的目的。5图23 用于mipmapping技术的一组房屋纹理图片第3章 软件开发环境3. 1引言随着计算机技术和计算机图形学的迅速发展,以研究交互式实时三维图形在计算机环境模拟方面的应用为主要内容的虚拟现实6 (virtual reality)技术得到了较快的发展,目前已广泛应用于遥操作、教育、医疗、娱乐、训练等多个领域,尤其是在可视化仿真和视景系统方面的应用更是快速。开发这些应用项目需

29、要使用各种各样的开发工具,这样,在计算机仿真领域就出现了与之相适应的图形开发环境。有了这些图形开发环境,我们就可以用独立的外部建模工具(比如autocad, 3ds max, multigen等)建立系统模型,同时,从图形开发工具中还可以得到包括工作站、操作系统、图形库以及提供各种接口的程序设计语言(比如opengl, opengvs, directx等)等工具。这些程序设计语言还为程序提供逻辑结构、图形软件和硬件的接口。这样,对于象可视化仿真的视景系统等复杂图形的应用程序,程序员就不用花费大量的时间逐字逐句去完成建模工作,大大地缩短了开发周期并减少了开发费用。在本论文所完成的汽车驾驶训练模拟

30、器视景系统软件的开发过程中,在国内首次将建模工具multigen creator v2.4用于建立汽车驾驶训练模拟器视景系统的场景模型,同时还用到了独立于操作系统的三维图形库,并具有良好跨平台移植能力的程序设计语言opengl7,以及首次在国内用opengvs软件来开发汽车驾驶训练模拟器,此外,还用到了windows 2000的操作系统和microsoft visual c+6.003. 2硬件环境本系统用pc机作为运行平台,其中cpu为pentiumiii800,内存128mb,硬盘20g,三星syncmaster 750s显示器,32mb elsa影雷者gladiac mx显卡,以及声卡、

31、网卡等。3. 3软件环境3 .3 .1 multigen creator v2.4multigen creator v2.4是由software systems公司(现为multigen-paradigm公司)开发的一个用于对可视化系统数据库进行创建和编辑的交互工具,它有不同的版本以适应一系列平台和应用。multigen creator v2.4是multigen-paradigm公司最新推出的一套高逼真度、最佳优化的实时三维建模工具,它能够满足视景仿真、交互游戏的开发、城市仿真以及其它的应用领域。从用户观点来看,multigen creator v2.4是一个功能强大的3d建模工具,它的每一

32、种实现都包含了一个共同的用户接口和一个适应特定平台的特殊软件子系统,这种设计使得用户可以利用特定的扩展工具将一个基本的3d建模程序包改造成适合于某个要求的特殊应用。creator是唯一将多边形建模、矢量建模和地形生成集成在一个软件包中的手动建模工具。它不仅能够完美地生成飞机、地面交通工具、建筑物等单一模型,而且还能生成一些视景仿真人员所感兴趣的特征区域,如:飞机场、港口、城市、工厂等等。creator包括以下三个软件包:(一)多边形和纹理建模 利用creator交互式、直观的用户界面进行多边形建模和纹理贴图,可以很快生成一个高逼真度的模型,并且它所创建的3d模型能够在实时过程中随意进行优化。c

33、reator提供的转换工具,能够将多种cad或动画软件建模转换成creator所支持的openflight格式。该软件包具有以下功能:.多边形的生成与编辑;.纹理的编辑与应用:.层次结构的生成与编辑;.光点的生成;.仪表的生成;.数据库的自动组织工具;.支持外部的参考、例子、调色板的继承;.openflight数据库的查寻、选择和修改。(二)矢量编辑和建模在creator中能够输入类似地图矢量数据高效生成和编辑的模拟区域,并且地形表面的纹理、色彩模型都能够自动放置。真正的wysiwyg交互式模型编辑环境可以帮助了解3d模型是如何生成的。通过矢量数据生成区域,再经过creator的多重渲染,还可

34、以生成与现实很相似的场景,从而大大减少开发人员的工作量。同时,使用creator的矢量工具还可以将一个单独的openflight文件放置在任何场景中。该软件包具有以下功能:.不必多边形建模即可交互的生成文化特征物体;.支持的标准数据格式有vpf, dfad, usgs;.可以通过标准的creator编辑系统对数据源进行编辑修改;.矢量数据库的查询、选择和修改功能;.可以在限定范围内随机放置某些物体,通过自动的光点生成模拟;.城市、乡村、街道的灯光;.快速准确地放置3d物体在地形表面。(三)地形表面生成所有的模型都需要防止在一个特定的地形表面来表现。因此creator提供了一套完整的工具,能够依

35、据一些标准的数据源快速、准确地生成地形。它所支持的标准数据格式包括:usgs, nima和图像转换生成的数据。creator生成的地形已经包含了lod分层及截取(culling)组的层次结构,如此便可以在不同的硬件平台下建立不同的地形分辨率。该软件包具有以下功能:.采用标准的dted, usgs, dem数据;.lods的自动生成;.交互式delauney算法三角化;.多边形网格和delauney算法;.纹理和色彩的自动生成;.支持自定义截取和lod块的大小;.准确地探测山脊、谷地和海岸线;.支持自定义地形表面的误差和多边形数目;.支持平面投影和椭圆体地球表面算法。3.3 .2 openglo

36、pengl是由美国sgi公司开发的一个三维图形渲染的软件接口,并且得到了硬件加速的支持,也就是说opengl实际上就是一个三维图形渲染库和三维模型库。由于它在渲染三维图形真实感方面显示出优秀的性能,得到各大公司和各个相关行业的认可,所以成为了新一代的三维图形工业标准。从编程的角度讲,opengl三维图形开发标准包括100多个图形函数,开发人员可以利用这些函数来实现三维图形一定的处理与交互。opengl提供了功能强大的图形处理函数,包括坐标变换、光线及色彩处理以及更高级的功能如纹理映射(texture mapping)、运动物体模糊(motion blured )、雾化(fog)和融合(blen

37、ding)以及深度域效果(depth of effect)处理等。用户可以根据需要输入一定的参数与模型来满足显示要求。它的主要特点为:opengl支持网络,并具有透明性。即可以在网络上工作(客户机/服务器型),显示图形的计算机(客户机)可以不是运行图形程序的计算机(服务器),客户机与服务器可以是不同类型的计算机,只要两者服从相同的协议即可,这样就可以借助网络实现复杂物体图形的并行处理;opengl是与硬件无关的软件接口,可以在多种硬件平台上运行,使得opengl的应用程序具有较好的移植性。虽然用autocad或3dsmax等软件包可以方便地建立三维几何模型,但难以对其进行移植和控制。如果将这些

38、模型转化为opengl程序,就可以随心所欲地控制这些模型。在软件开发过程中使用microsoft visual c+6.0集成软件开发环境,利用opengl在pc机上实现高品质、交互式的三维图像。opengl的运行平台和结构:运行opengl三维图形库进行开发时,它需要一定的平台支持和一定的结构规范,其运行平台和结构如图3-1所示。图3-1 opengl运行平台和结构运用opengl进行图形开发的主要步骤为:根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述;.把景物模型放在三维空间中的适当位置,同时设置视点(viewpoint)以观察所感兴趣的景物;.计算模型中所有物体的颜色,同时

39、确定光照模型和纹理粘贴方式;.把景物模型的数学描述及颜色信息转换为计算机屏幕上的象素,这个过程称之为光栅化(rasterization)。此外,在这些过程中还可能伴随有自动消隐、帧缓存等处理。opengl开发的基本操作过程和操作顺序分别如图3-2和3-3所示。图3-2 opengl图形库开发步骤图3-3 opengl的操作顺序3 .3 .3 opengvsopengvs sdk4.3(软件开发工具包)是由gemini技术公司(现己并入quantum 3d,inc)在1988年开发的gvs (4.0版本后该名为opengvs)基础之上升级的,它是一个基于opengl便于实时显示的3d视景管理软件

40、。opengvs sdk将己经形成的分散的3d对象集成起来形成一个交互式可视化环境,其目标是用最少的代码来生成一个实时可视化仿真环境,保证只需最少的软件支持就能够形成一个联机可视化数据库,它强调的是利用高层工具来提供一个连接在某个分布式计算机环境上的可视化系统。opengvs sdk包括一个功能强大的应用程序界面,该程序界面极易进行3d图形应用程序的开发。由于opengvs具有良好的3d跨平台性能,便于移植,因此用户可以方便的在从pc机到unix工作站的不同运行环境下运行用opengvs开发的程序。opengvs具有以下特点:独立的开发平台(microsoft windows95, windo

41、ws98, windows nt, linux, sgi irix, sun solaris等操作系统);基于面向对象的可视化3d开发环境;支持openflight, 3ds, terrapage等文件格式;为intel pentium iii作性能优化处理;支持opengl, microsoftdirect3d, 3dfx, glide等绘图apis;包括real world基准;支持用多线程对大型数据库进行异步数据库内存分页。opengvs的应用结构和软件结构层分别如图3-4和3-5所示:图3-4 opengvs的应用结构图3-5 opengvs的软件结构层opengvs的下层是一个核心模

42、型,它负责虚拟环境创建的大部分工作,并被分成许多安置在主平台之上的工具(facility),其核心管理器结构如图3-6所示。图3-6 opengvs核心管理器一个工具基本上就是一个管理某个opengvs资源的软件,它具有以下元素:.数据库.初始化例程.操纵例程.处理例程.关闭例程工具可以描述如下:.opengvs:核心工具提供了对于一个opengvs应用的高层执行控制,通常用户不改变核心的这个部分,然而,如果一些特殊应用要求复杂的操作,同样可以很方便的将之融入主例程中。.用户(user)工具:程序员通过用户工具来访问opengvs,允许插入特定的初始化代码,并伴随着创建资源的代码。.对象(ob

43、ject)工具:对象工具关心的是自动场景(scene)管理对象的动态性和连接的运动,每一个对象可以具有一个或多个定义的细节层次以及同样重要的自动对象裁剪(culling)机制。这个工具的一个重要特征是给每一个对象指定运动方程(equation of motion)的能力,因而可以给对象或对象的某些部分提供运动行为。.材质(material)工具:从multigen调入到opengvs的对象会保持其物质特性,可以给由opengvs构造的语句加入物质定义功能,并提供了以下特性:背景(ambient)色、漫射(diffuse)色、放射(emissive)色、镜面(specular)色、反射系数和透明

44、效果。.纹理(texture)工具:除了被调入的对象保持其纹理元素以及opengvs的语句可以加入纹理功能外,这个工具和物质工具是一样的。.调入(import)工具:从用户观点来看,调入工具可能是opengvs核心最重要的元素之一,因为它将详细化的模型/对象和地形对象调入opengvs环境。.场景(scene)工具:场景工具用来创建由用户控制的场景,每一个场景是按照用户设定方式形成的一组对象集合,而一个虚拟环境显示是由许多场景组成的。场景工具负责许多低层任务如视景裁剪域(field of view culling)和限制对于视景显示域的描述操作。.光源(light source)工具:为了使对

45、象可见,光源必须与由opengvs创建的场景结合使用,用户能够控制光源的颜色、强度、类型(本地的还是无限远的)、光源位置/方位和一种背景色,只需创建光源和定义其位置(如果它不是本地光源)或方向(如果它是无限远光源),就可以很容易地设置光照条件,然后在将其加入场景之前定义光源的颜色和背景色。.视点(camera)工具:opengvs中的视点工具是一种控制显示的方式,它控制观察者的位置、方向和视角。opengvs可以支持任意数量的视点,同时,一个视点也能够跟踪一个或多个对象的运动,甚至能够将之固定在运动对象上。.通道(channel)工具:允许指派一个特定的视点给某个通道,并且对图象应用显示扭曲角

46、或离轴投影连接,通过这种方法就可以支持不同程度的双目视景重叠和离轴投影系统。对于立体视应用,用户只需指定两个视点,每个视点对应一只眼。即使两个通道是被不同的图象平台所驱动,只要它们运行opengvs,通道工具就允许在左右眼之间方便匹配。3. 4本章小结本章主要介绍了汽车驾驶训练模拟器视景系统所用到的图形开发环境的软件功能。1.重点介绍了整个视景系统模型开发的建模工具multigen creator v2.4的功能。2.对专业的图形标准opengl的功能、结构、操作顺序和执行步骤等作了详细介绍。3.本论文视景系统使用的程序设计软件opengvs sdk4.3作了软件资源、核心管理器模型等的介绍。

47、第4章 场景模型的驱动opengvs是专门用于视景仿真软件开发的视景管理软件,负责视景各种要素的组织以及模型的实时调度,支持各类显示外设和各种交互设备,它易用性和重用性好,有良好的移植性、模块性和编程灵活性。opengvs提供了视景仿真应用中的各种函数资源,它们直接架构于世界领先的三维图形标准上,而底层的绘图功能交给opengl、microsoft direct3d或3dfx glide3来完成。借助opengvs sdk,视景仿真应用中的一些关键技术,如动态视景的控制、碰撞检测等,都可以得到很好的解决。这里笔者采用opengvs来实现汽车驾驶模拟器场景模型的驱动,并探讨了opengvs在实时

48、三维仿真应用程序开发过程中的关键技术,这些技术在所开发的视景系统中得到了很好的运用,取得了较好的仿真效果。图4-1为汽车驾驶模拟器视景系统中的一张截图。图4-1汽车驾驶模拟器插图4.1 opengvs应用程序的资源组成opengvs应用程序的资源组成如图4-2所示。图4-2 opengvs应用程序资源组成图(1)场景(scene):主要的软件资源,用于存储绘图数据库,并对其中的模型进行管理。(2)对象(objects):场景的重要组成部分,场景中的对象(objects)一般都以树状层次结构存储,便于仿真程序的访问和控制。(3)雾(fog model):可以根据需要连接到场景中,用来模拟自然界中

49、烟或雾的特殊效果。(4)光源(light sources):可在场景中添加一个或多个光源,以增强场景的动态仿真效果。(5)通道(channel):通道是一个计算机图形生成(computer image generation,cig)术语,对于观察者来说通道代表一个“3d 绘图表面”。通道与帧缓存(frame buffer)相连,把视频信号传输给显示设备。(6)帧缓存(frame buffer):用来建立图形硬件帧缓存和 opengvs 联系的软件资源。在有些系统中,可以支持多个帧缓存(图形卡);(7)摄像机(camera):opengvs 中基本的视点控制机制。场景中可以有多个摄像机,但每一时

50、刻只能有一个摄像机是活动的。用户可以在不同的摄像机间切换,实现从不同角度观察场景,因此使用哪个摄像机决定了场景应该怎样绘制。各种资源之间的连接遵循一定的规则,即对象、光源、雾模型要连接到场景中;摄像机、场景要与通道连接;而通道又与帧缓存连接。这样就完成了整个软件资源之间的连接。4.2 opengvs仿真程序的运行机制在运行opengvs仿真应用程序时,系统将自动载入当前目录下的gvsinit.gvc文件,其中的模型导入命令在系统初始化时被执行。opengvs采用回调函数机制对整个视景仿真系统的资源进行管理和调度。用户编制的应用程序通过回调函数与opengvs sdk编程框架接口,系统事先已为用

51、户定义了六个标准的回调函数:gv_user_events;gv_user_init ;gv_user_pre_import;gv_user_proc;gv_user_proc_post;gv_user_shutdown。这六个回调函数的具体实现内容由用户根据需要进行编写。其中gv_user_events用来定义事件响应,可以通过这个函数来实现键盘、鼠标、游戏控制器等外部设备对场景模型的驱动和控制。gv_user_pre_import函数主要负责场景模型数据库导入前的预处理工作,如细节纹理的设置等。gv_user_proc_post函数每帧执行一次,它在仿真程序执行完对摄像机、通道以及物体对象等

52、的处理之后调用,通常用于联机情况下的数据传输工作,也可以在这里统计仿真程序的运行帧数和时间。在仿真结束之后,由gv_user_shutdown函数完成系统资源的释放以及仿真结果的处理等工作。而gv_user_init和gv_user_proc是仿真应用程序中两个最重要的回调函数,场景模型以及系统资源的实时管理和调度,都由它们来完成。gv_user_init函数只在系统初始化时执行一次,主要用于创建仿真程序运行所必须的图形资源,如通道、摄像机、场景、光照、雾等,用户也可以在这里调用gv_obi_set_sim_callback 函数,设置汽车等运动物体的回调函数。gv_user_proc函数则每

53、帧调用一次,它在仿真程序对摄像机、通道以及物体对象等进行处理之前执行,可以在这里计算它们的运动方程。图4-3对opengvs应用程序框架做了简要描述。图4-3 opengvs应用程序框4.3 碰撞检测机制碰撞检测是视景仿真中非常重要的一个问题。在汽车驾驶模拟器中,主要考虑汽车与其他物体的碰撞。如果这个问题解决不好,就不能真实地模拟汽车的实际驾驶情况,达不到很好的仿真效果。这里利用opengvs提供的功能函数,对汽车驾驶模拟器开发中碰撞检测的问题作一些探讨。4.3.1汽车与地面的碰撞检测汽车与地面的碰撞检测问题又称为地形匹配问题,如果处理不好,就会出现汽车钻入地下或腾空飞行的现象。opengvs

54、提供了一组函数来从场景数据库中获取相关地几何信息以及其他属性信息,可以用来完成汽车与地面的碰撞检测工作。首先,通过gv_geo_inq_scene_face_below函数获取汽车下方的地形表面。然后,再由gv_geo_inq_face_elevation和gv_geo_inq_face_orientation函数获取该地形表面的位置与姿态角。最后,根据该地形表面的位置与姿态角,通过gv_obi_set_position和gv_obi_set_rotation函数来调整汽车的位置与角度,即可以实现汽车与地形的匹配。具体可用如下代码实现:/定义所需的变量gv_obi_inq_position(

55、car, & car_position );/获取汽车位置car_positiongv_obi_inq_rotation( car, & car_rotation );/获取汽车角度car_rotationgv_geo_inq_scene_face_below( car_data-car_scene,car_position, & scene_face );/获取汽车下方地面scene_facegv_geo_inq_face_elevation(scene_face, car_position.x,car_position.z, & face_height );/获取汽车下方地面高度face_

56、heightgv_geo_inq_face_orientation(scene_face,car_rotation.y, & face_pitch, & face_roll );/获取汽车下方地面的方位角/重新计算汽车的位置和角度car_position.y = face_height+car_height; car_rotation.x = face_pitch; car_rotation.z = face_ roll;/重新设定汽车的位置和角度gv_obi_set_position( car, & car_position );gv_obi_set_rotation( car, & car_rotation );4.3.2汽车与运动物体的碰撞检测汽车与汽车、行人等运动物体间的碰撞检测,由于涉及到碰撞效果的处理,而且对碰撞精度也有一定的要求,可以通过实体包围盒碰撞检测的方法来实现。使用opengvs中的gv_geo_inq_obi_collision函数,可以方便地实现实体与实体间的碰撞检测。但是,由于实体包围盒碰撞检测的运算量较大,因而不适合汽车与场景中数量众多的地景地物(如栏杆、树木、房屋等)作碰撞检测。下面给出主动车辆与目标车辆之间碰撞检测的主要实现代码:/定义所需的变量while (!collisio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论