基于OpenSceneGraphOSG的虚拟小区漫游系统.docx
- 文档编号:12876311
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:47
- 大小:2.77MB
基于OpenSceneGraphOSG的虚拟小区漫游系统.docx
《基于OpenSceneGraphOSG的虚拟小区漫游系统.docx》由会员分享,可在线阅读,更多相关《基于OpenSceneGraphOSG的虚拟小区漫游系统.docx(47页珍藏版)》请在冰豆网上搜索。
基于OpenSceneGraphOSG的虚拟小区漫游系统
基于OpenSceneGraph的网络版虚拟小区漫游系统
摘要
自20世纪末以来,虚拟现实技术一直是信息领域研究、开发和应用的热点方向之一。
它借助计算机构建出一个与现实环境十分逼真的虚拟环境,而且支持用户使用自然的技能亲身感受它。
目前己经广泛应用于军事、科学计算可视化、教育与培训、设计与规划、虚拟测试、虚拟游览、购物、交互式娱乐、工程技术、科技探索等多方面领域。
本文首先介绍了场景图形理论的相关概念、OpenSceneGraph体系结构,最后结合当今房地产开发业的激烈竞争,对虚拟现实技术的综合应用,使用三维建模软件—3DSMAX2009软件、集成开发环境VisualC++2005和开源的OpenSceneGraph三维渲染引擎,设计实现了中北大学校园虚拟漫游系统。
此系统可以为用户提供友好、逼真的虚拟环境,使人有身临其境之感。
最后对本文所做的工作进行了总结,指出了有待改进的地方,并对下一步的研究提出了展望。
关键词:
虚拟仿真,场景图形,碰撞检测,场景观察变换,粒子系统
VirtualCommunityofRoamingSystemOnlineBasedonOpenSceneGraphEngine
Abstract
Sincethelate20thcentury,Virtualrealityhasbeenthefieldofinformationtechnologyresearch,developmentandapplicationofoneofthehotdirection.Itisconstructedusingthecomputeraveryrealisticvirtualrealityenvironment,buttheskillstosupportuserstoexperienceitnaturally.Nowhasbeenwidelyusedinmilitary,scientificvisualization,educationandtraining,design,andplanning,virtualtesting,virtualtours,shopping,interactiveentertainment,engineeringtechnology,suchasmanyareasofscienceandtechnologyexploration.
Thispaperintroducestheconceptofscenegraphtheoryrelated,OpenSceneGrapharchitecture,Finally,today'srealestatedevelopmentindustry,intensecompetition,theintegratedapplicationofvirtualrealitytechnology,using3Dmodelingsoftware-3DSMAX2009software,integrateddevelopmentenvironment,VisualC++2005andtheopensourceOpenSceneGraph3Drenderingengine,designedandimplementedintheNorthCampusVirtualTourSystem.Thissystemcouldprovideuserswithfriendly,realisticvirtualenvironment,givingthefeeling.
Finally,thisarticlesummarizestheworkdone,pointedouttheareastobeimproved,andthefuturestudyarepointedout.
Keywords:
VirtualReality,SceneGraph,CollisionDetection,SceneObservedTransformation,ParticleSystem
1绪论
1.1背景及意义
随着社会的发展,科技的进步。
人类在追求经济高速增长的同时,也要求更高质量的生活,科技正在这其中扮演着核心的角色。
虚拟仿真(VR)指用计算机生成的一种特殊环境,人可以通过使用各种特殊装置将自己“投射”到这个环境中,并操作、控制环境,实现特殊的目的,即人是这种环境的主宰。
它以其具有沉浸性(immersion)、交互性(interaction)和构想性(imagination),使人们能沉浸其中,超越其上,出入自然,形成具有交互效能多维化的信息环境。
迅速渗透到社会的各个行业,并且已在计算机辅助设计、科学工程数据可视化、三维地理信息系统(GIS)、医学、游戏和娱乐中得到广泛的运用。
近年我国互联网普及率的逐年提高,互联网正在走进人们的工作与生活。
CNNIC《报告》调查显示,在家和单位上网的网民比例在2009年有了明显的提高,有83.2%的网民选择在家上网,另有30.2%的网民选择在单位上网,互联网作为人们日常工具的价值正在日益提升。
无限的商机也在其中应运而生。
各行各业以其敏锐的眼光相继开始在互联网中发掘自己的商机。
现在,房屋开发行业是一个竞争激烈的行业,如何在客户心中留下良好的、深刻的印象是每个房开商竭力要达到的目标。
目前房开商对建筑小区的推广措施不多,容易受天时、地利和人为因素的影响,不能在建筑小区构建的初期就给感兴趣的客户一个全面的介绍,另外,推广形式局限于传统的电视、广播、报纸和房交会等多半是2D的形式,不能适应人们日益形成的网络生活方式,即使有些开发商提供了网站,但多数以图片、文字和解说等为主,与客户的实时交互性不足,并不能在客户心中留下较深的印象,效果不好。
而基于虚拟仿真视景技术的新推销方式,可以弥补传统的推销手段的缺点与不足。
客户完全可以像玩游戏一样置身于其中,通过网络技术,还不再有时间、空间的限制。
可以使建筑小区的推广达到快捷、方便、形象、高效等特点。
是传统的广告效果不能比拟的[10]。
1.2虚拟仿真视景技术的发展状况和趋势
虚拟视景技术,是虚拟仿真视景技术中一个重要分支。
是计算机技术、图形图像处理与生成技术、多媒体技术、信息合成技术、显示技术等诸多高新技术的综合运用,其组成部分主要包括仿真建模技术、动画仿真技术和实时视景生成技术。
目前国内虚拟视景技术市场尚未大幅开发,但也已初具规模。
美国在该领域处于领先地位,其基础研究主要集中在感知、用户界面、后台软件和硬件四个方面。
美国宇航局(NASA)研究的重点放在对空间站操纵的实时仿真上,他们大量运用了面向座舱的飞行模拟技术。
北卡罗来纳大学(UNC)的计算机系开发了一个帮助用户在复杂视景中建立实时动态显示的并行处理系统。
麻省理工学院(Mrr)1985年成立了媒体实验室,建立了一个名叫BOLIO的测试环境,用于进行不同图形仿真技术的实验。
华盛顿大学华盛顿技术中心(HITLab)的人机界面技术实验室进行感觉、知觉、认知和运动控制能力的研究。
DaveSimS等人研制出虚拟现实撤退模型来观看系统如何运作。
伊利诺斯州立大学研制出在车辆设计中,支持远程协作的分布式虚拟实现系统,不同国家、不同地区的工程师们可以通过计算机网络实时协作进行设计。
乔治梅森大学研制出一套在动态虚拟环境中的流体实时仿真系统。
美国加州的海军研究生院NPS可视化实验室在航行器的虚拟环境和仿真方面进行了大量的工作。
旨在实现以IEEE分布式交互仿真(Dls)网络协议支持下的航行器三维实时可视化仿真与虚拟环境。
美国Wright一Patterson空军基地的“3D图像和计算机图形实验室”是S在GI4D/400工作站上建立了空间卫星的虚拟环境来仿真近地空间和描述3D图形卫星模型环绕地球轨道的运行状态,使得仿真者对仿真对象信息的把握更加充分[17]。
我国和一些发达国家相比在该领域还有一定的差距。
现主要是一些国防科研单位、高校等部门进行研究、开发。
我国的九五规划、国家自然科学基金会、国家高技术研究发展计划等都把虚拟环境仿真列入了研究项目。
北京航空航天大学计算机系是国内最早进行虚拟现实研究、最有权威的单位之一,他们着重研究了虚拟环境中物体物理特性的表示与处理在虚拟现实中的视觉接口方面开发出了部分硬件,并提出了有关算法及实现方法实现了分布式虚拟环境网络设计,建立了网上虚拟现实研究论坛,可以提供实时三维动态数据库,提供虚拟现实演示环境,提供用于飞行员训练的虚拟现实系统,提供开发虚拟现实应用系统的开发平台,并将要实现与有关单位的远程连接。
浙江大学CAD&CG国家重点实验室开发出了一套桌面型虚拟建筑环境实时漫游系统,该系统采用了层面迭加的绘制技术和预消隐技术,实现了立体视觉,同时还提供了方便的交互工具,使整个系统的实时性和画面的真实感都达到了较高的水平。
清华大学计算机科学和技术系对虚拟现实和临场感的方面进行了研究,他们还针对室内环境水平特征丰富的特点,提出借助图像变换,使立体视觉图像中对应水平特征呈现形状一致性,以利于实现特征匹配,并获取物体三维结构的新颖算法。
北方工业大学CAD研究中心是我国最早开展计算机动画研究的单位之一,关于虚拟现实的研究己经完成了两个“863”项目。
空军指挥学院进行的“空战可视化仿真系统”研究,为用户提供了一个从多视点、多角度、多层次观察空战进程的平台和机制,其画面造型逼真、形象生动,基本达到了实时性要求,取得了的效果。
西北工业大学CAD/CAM研究中心,上海交通大学图像处理及模式识别研究所,长沙国防科技大学计算机研究所、华东船舶工业学院计算机系、安徽大学电子工程与信息科学系等单位也进行了一些重要研究工作和尝试[19]。
在一些商业公司,如北京四维远见公司、西安3DVRI公司等,成功的运用虚拟视景技术开发了一些用于民用信息服务与管理的软件,取不错的效果。
标志着,这种技术在我国民用市场开始。
此外德国、日本等国该领域的研究和开发都处在先进国家之列。
总体趋势上看,虚拟视景仿真技术不仅将要在军事训练、航天飞行、武器对抗、战术战法研究等科研领域得到广泛的应用,而且正以其直观、形象、简便、符合人们思维习惯的优势进入教育培训、工程设计、娱乐咨询、信息服务与管理、大众媒体传播等方面[5]。
1.3本文的组织结构
本文的完成的主要工作及各章的安排介绍如下:
绪论主要介绍了虚拟仿真技术的背景及意义,继而引出本文的重点:
虚拟视景技术及发展状况和趋势。
场景图形理论通过对场景一词的介绍,提出对场景的管理“工具”:
场景图形。
阐述了场景图形的基本概念,最常见的树形结构场景图形组织结构,树形场景图形的图形的特征。
最后简要的叙述了场景图形的渲染方式[1]。
接着简述了OpenSceneGraph三维渲染引擎的发展状况、优势和OpenSceneGraph的组成结构;介绍了3D建模工具3DSMAX2009和MicrosoftVisualStudio2005集成开发环境,还有C++语言。
最后叙述了一个基于OpenSceneGraph虚拟系统的开发环境及配置。
另外还介绍了在开发过程中常用的一些工具。
阐述了基于OpenSceneGraph虚拟小区漫游系统的整个开发过程。
包括需求分析、主要功能实现和最后的系统测试,其中主要包括漫游、碰撞检测、粒子系统导航器、天空盒的具体实现。
对全文的工作进行了总结,并对下一步开发的做出展望。
2场景图形理论
2.1场景图形的概念
场景原指电影、戏剧作品中的各种场面,由人物活动和背景等构成。
不难想象场景中各种各样复杂而凌乱的元素。
场景图形是一种用于计算机游戏和图形学中相关软件的数据结构设计方法,即用于抽象的描述场景中元素组织结构、相互关系等。
场景图形的实现并没有一定之规,它可以用于二维或三维图形场景的逻辑关系和空间表达。
最简单的场景图形实现是使用数组或者链表的结构,并按照固定的顺序依次绘制或操作这些节点[20]。
而实际的大规模场景管理的场景图形往往使用图结构和树结构来组织成一组节点集。
目前多数渲染引擎均采用一种自顶向下的、分层的树状数据结构来组织空间数据集,以提升渲染效率。
图2.1描述了这种场景图形
图2.1简单、抽象的场景图
渲染一个包含了地形、奶牛和卡车的场景时,场景图形采用了一个根节点与三个子节点的形式。
每个子节点都包含了用于绘制对象的几何信息。
典型的树结构场景图形的顶部是一个根节点。
从根节点向下延伸,各个组节点中均包含了几何信息和用于控制其外观的渲染状态信息。
根节点和各个组节点都可以有零个(有零个子成员的组节点事实上没有执行任何操作)或多个子成员。
在场景图形的最底部,各个叶节点包含了构成场景中物体的实际几何信息。
图2.2表示一种可能的树形结构场景图形的组织方式。
根节点之下有四个分支组节点,分别为房间几何体,桌子几何体,以及两个椅子几何体。
椅子的组节点为红色,以标识它们与子节点的转换关系。
椅子的叶节点只有一个,因为两个椅子是同样的,其上级组节点将这把椅子转化到两个不同的空间位置以产生两把椅子的外观效果。
桌子组节点只有一个子节点,即桌子叶节点。
房间的叶节点包括了地板、墙壁和天花板的几何信息。
典型的树结构场景图中,最顶端是根节点,这个根节点可以是二维或三维的,它包含了整个虚拟世界。
根节点具有一个或多个子节点,各个子节点又有零个或多个子节点,其中有一些节点是需要绘制的物体,其它节点是为表示物理上的物体本身或基本图元,内部节点由许多表示物体属性的节点组成,这些节点定义了不同种类要素的几何、属性、位置、变换、灯光、层次细节模型和动画等。
整个场景分割成具有层次的节点,节点清楚的代表了物体本身、物体的设置、动画以及对象之间的逻辑关系的定义等。
场景图这种层次结构可以准确描述每个节点在环境中的位置和父子关系,便于提取数据节点之间的共有行为和属性,有利于用面向对象的方式实现。
图2.2场景图形示例
组节点可能有多个子节点,程序可以有序地安排其几何和状态数据。
在此例中,两个椅子组节点将其唯一的子节点变换到两个不同的空间位置上,产生了两把椅子的外观效果。
场景图形通常包括了多种类型的节点以执行各种各样的用户功能,例如,开关(Switch)节点可以设置其子节点可用或不可用,细节层次(LOD)节点可以根据观察者的距离调用不同的子节点,变换节点可以改变子节点几何体的坐标变换状态。
面向对象的场景图形使用继承的机制来提供这种多样性,所有的节点类都有一个共有的基类,同时各自派生出实现特定功能的方法。
大量定义的节点类型及其内含的空间组织结构能力,使得传统的底层渲染API无法实现的数据存储特性得到了实现。
OpenGL和Direct3D主要致力于图形硬件特性的抽象实现。
尽管图形设备可以暂时保存即将执行的几何和状态数据(例如显示列表和缓冲对象),但是底层API中对于上述数据的空间组织能力在本质上还是显得过于简单和弱小,往往难以适应大部分3D程序的开发与应用需求。
场景图形是一种中间件(middleware),这类开发软件构建于底层API函数之上,提供了高性能3D程序所需的空间数据组织能力及其它特性。
图2.3表现了一个典型的OSG程序层次结构。
图2.33D程序结构层次
多数3D应用程序并不是直接通过底层渲染API显示人机交互界面,而是需要使用OpenSceneGraph等开发包中提供的额外的功能。
2.2场景图形的特性
场景图形除了提供底层渲染API中具备的几何信息和状态管理功能之外,还兼具如下的附加特性和功能:
空间结构:
场景图形所采用的树状数据结构更直观,也更符合人们一般理解中的空间事物的排布和组织结构。
场景拣选:
使用本地CPU的投影剔除(frustumculling)和隐藏面剔除(ocdusioncuiling)来减少系统总体负担,其基本原理是,在最终渲染图像时忽略对不会显示的几何体的处理。
细节层次(LOD):
使用几何体包围盒计算观察者与物体的距离,使得用户可以更高效地渲染处于不同细节层次上的物体。
并且,实时的,场景中进入指定观察距离的那部分对象将从磁盘中载入,而它们一旦超出这一距离时,将从内存中被移除。
透明:
要实现透明或半透明几何体的正确和高效的渲染,需要首先渲染所有不透明的几何体,再渲染透明几何体。
而且,透明几何体必须按照深度排序并按照“从后向前,的顺序渲染。
场景图形一般都会提供上述这些操作。
状态改动最少化:
为了最大限度地提升程序性能,应该避免冗余和不必要的状态改变。
场景图形会按状态对几何体进行排序以最小化状态改动,OpenSceneGraph的状态管理工具则负责消除冗余的状态改变。
文件UO:
场景图形可以高效地读写磁盘上的3D数据集。
在将数据读入内存之后,应用程序可以方便地通过内建的场景图形数据结构操控动态3D数据。
场景图形也是一个高效的文件格式转换工具。
更多高性能函数:
除了底层API提供的基础函数之外,场景图形库还提供了高效能的功能函数,例如全特性的文字支持,渲染特效的支持(例如粒子特效,阴影),渲染优化,3D模型文件读写的支持,并支持对跨平台的输入、渲染及显示设备的访问。
几乎所有的3D程序都需要其中的部分特性。
因此,直接使用底层API来构建程序的开发者不得不自行在程序中实现其中的某些性能,从而增加了研发的时间、人力及资金投入。
使用现有的、支持上述特性的场景图形库,将有助于实现快速的程序开发工作。
2.3场景图形的渲染方式
一个的场景图形系统允许程序保存几何体并执行绘图遍历,此时所有保存于场景图形中的几何体以OpenGL指令的形式发送到硬件设备上。
但是该执行机制无法实现前述的诸多高级特性。
为了实现动态的几何体更新,拣选,排序和高效渲染,场景图形三种需要遍历的操作:
更新(update):
更新遍历(有时也称作程序遍历)允许程序修改场景图形,以实现动态场景。
更新操作由程序或者场景图形中节点对应的回调函数完成。
例如,在飞行模拟系统中,程序可以使用更新遍历来改变一个飞行器的位置,或者通过输入设备来实现与用户的交互。
拣选:
在拣选遍历中,场景图形库检查场景里所有节点的包围体。
如果一个叶节点在视口内,场景图形库将在最终的渲染列表中添加该节点的一个引用。
此列表按照不透明体与透明体的方式排序,透明体还要按照深度再次排序。
绘制:
在绘制遍历中(有时也称作渲染遍历),场景图形将遍历由拣选遍历过程生成的几何体列表,并调用底层API,实现几何体的渲染[3]。
图2.4表示上述三类遍历。
图2.4场景图形遍历
2.4本章小结
本文场景图形是用于抽象的描述场景中元素组织结构、相互关系等。
具有众多特性和功能。
其树形结构是一种简单、高效、可用的场景管理方式。
还为在场景渲染是提供了多种遍历方式。
3基于OpenSceneGraph的虚拟系统开发工具和环境简介
3.1OpenSceneGraph三维渲染引擎
OpenSceneGraph是一个开源的高性能三维图像渲染引擎,基于修改的LGPL协议(OSGPL)免费发布,广泛用于视觉仿真、游戏、虚拟现实、科学可视化和建模等领域。
以成为工业标准的OpenGL为底层平台,使用可移植性的ANSIC++编写而成。
在对封装的基础之上,建立一个面向对象的框架,使得编程者可以摆脱底层的繁杂建模,更便于应用程序的开发和管理。
具备跨平台特性,可以运行于Windows、MacOSX、UNIX/Linux、Solaris、FreeBSD和AIX等各类操作系统之上。
另外OpenSceneGraph还提供了许多有用的工具包以便于更加迅捷的程序开发。
OpenSceneGraph正是基于世界上最盛行的场景图技术,现今己有超过1000名开发者基于OpenSceneGraPh进行图形程序的开发。
OpenSceneGraph以其强大的功能,完善的开发模式以及开发成果移植性强受到业界的普遍好评。
采用OpenSceneGranh图形引擎克服了传统的OpenGL以及Direet3D开发周期长、难度大的缺点,解决了使用OpenGVS、Vega等商业引擎开发成本过高,不利于产品推广的问题,从实用的角度上更有意义。
目前已经有很多成功的基于OSG的应用,如Delta3D、3DVRI、Remo3D、osgPlanet、虚拟地形系统、交通工具仿真系统等等,效果不亚于商业视景渲染软件。
如果要自主开发视景渲染软件,是最佳的基础架构选择。
OpenSceneGraph是公开源代码的,它的用户许可方式为修改过的GNU宽通用公共许可证(GNULesserGeneralPublicLicense,LGPL)。
OpenSceneGraph采用开源形式的共享方案具备了诸多优势:
快速开发:
OpenSceneGraph场景图形内核封装了几乎全部的OpenGL底层接口,并随时支持最新的扩展特性。
应用程序的开发者可以将重心放在三维程序开发的实质性内容以及各种场景对象交互的方法上,而不再过多关注底层代码。
高品质:
OpenSceneGraph由OSGcommunity的诸多成员反复进行检查、测试和改善。
直接参与核心代码开发并有所贡献的人员已经超过了200人。
高性能:
OpenSceneGraph的核心代码支持多种场景裁剪技术、细节层次节点、渲染状态排序、顶点数组、显示列表、VBO、PBO、FBO、OpenGL着色语言等;以及文字显示,粒子系统,阴影系统,雨、雪、火焰、烟雾等特效模拟,场景的动态调度,多线程渲染等各种机制。
提高程序质量:
要编写高质量的程序,开发者需要十分了解自己所用的开发包。
如果这个开发包不开放源代码,与它相关的开发信息就被封闭起来,用户只能借助开发商的文档和客户支持来获得开发信息。
开放源代码使得程序员可以检查和调试所用开发包的源代码,充分了解代码内部信息。
可扩展性:
基于场景图形的扩展思想,OpenSceneGraph提供了强大的可扩展能力,包括各种类型的可扩展节点(NodeKits,节点工具箱)、扩展渲染属性、扩展回调、扩展交互事件处理器等,为用户的程序开发提供了灵活的支持能力。
底费用:
开源意味着免费,除了一开始购买软件所需的费用。
没有知识产权问题:
对于开源且易于所有人阅读的代码而言,不存在侵犯软件专利的可能性[2]。
3.1.1OpenSceneGraph的发展状况
1997年,DonBurns作为软件设计顾问受雇于SiliconGraphics(SGI),他使用Performer场景图形(SGI专有)系统,设计了一套基于SGIOnyx的滑翔仿真软件。
受到滑翔机爱好者的鼓励,Don开始尝试使用Linux上的Mesa3D和3dfx的Voodoo设备,以开发基于更多硬件平台的仿真软件。
当这套软件开始支持OpenGL的时候,为了将场景图形的概念应用于Linux。
Don开始编写一套简单的类似于Performer的场景图形系统,名为“SG”。
SG的开发强调朴素且易用,它满足了当时人们对于场景图形系统的需求。
这就是OpenSceneGraph的雏形。
1998年,Don在滑翔爱好者的邮件组中遇到了RobertOsfield。
两人开始合作对仿真软件进行改善。
Robert倡导开源,并提议将SG作为独立的开源场景图形项目继续开发,并由自己担任项目主导,项目的名称正式改为OpenSceneGraph。
2000年底,BredeJohansen对OpenSceneGraph添加了Op
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 OpenSceneGraphOSG 虚拟 小区 漫游 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)