http://www.cnblogs.com/wuhanhoutao/archive/2007/11/10/955391.html
针对大数据量场景的实时显示要求,前面章节研究了自动生成三维模型简化版本,优化场景中模型数据布局与改进渲染算法等内容,本章将以前面章节研究结果为依托,结合北京奥林匹克公园建设规划的具体情况,提出建立虚拟奥林匹克公园系统的基本框架,从功能模块、性能、结构组成等方面详细介绍系统的设计与基于组件技术的开发流程,最后实现奥林匹克公园场景的网络发布与浏览等功能。
随着中高端显卡性价比的提升,以及计算机图形学和虚拟仿真技术的发展,多媒体数据在经历了声音、图像和视频三次革新后,第四种数字化媒体——三维几何模型正受到越来越多的重视。在现阶段,由于三维场景浏览和交互操作更贴近人们在现实环境中的观察方式和感受,以三维景观模型为主要内容的应用越来越引起人们的普遍关注,并已经在一些领域开展了具体工作,如网络游戏、房地产展示和旅游景点宣传等。
计算机网络技术的发展,尤其是Internet的出现和普及,很大程度上改变了人们的工作和生活方式,WWW(world wide web) 以其友好的用户界面为特点,已经成为人们采集、使用和共享数据及信息的最主要的途径。宽带的普及与网速的提高更为虚拟仿真系统从较封闭的单机环境发展到开放的互联网上提供了新的机会,因此,将以计算机网络技术为基础的分布式处理策略引入到虚拟现实中成为了一种趋势。同时,基于互维网的虚拟现实系统也适合于三维模型数据和其它空间数据所具有的类型繁多、数据量大、分布广等特点和动态的应用需求,而且易于与其他应用系统集成。
前两届奥林匹克运动会举办城市已经尝试将互联网与虚拟现实技术结合起来应用于活动与城市的宣传等方面。悉尼奥运会期间,在悉尼的Powerhouse博物馆举办了“奥运千年文物展”,展出了古希腊的文物珍品,并利用计算机技术将这次展览内容进行了数字化,初步构造了虚拟博物馆,实现了通过Internet的在线浏览。希腊文化中心开发了希腊这座历史文化名城的三维虚拟旅游系统。参观者能够回顾历史,漫游古奥林匹亚30多座寺庙和建筑,及公元前776年前举办的奥林匹克运动会的场地,如竞赛跑道等。中心希望实现网络发布,使更多人能了解古希腊的过去。
目前国外一些软件厂商已经开发了一些与三维仿真场景网络浏览与发布有关的系统,不过他们的目标和服务价值主要体现在地图搜索和其他的辅助商业服务。目前这方面做得很不错的软件主要有Google公司推出的Google Earth, Microsoft 公司推出的MSN Visual Earth,以及NASA 的World Wind。
Google Earth软件是把Google公司2004年11月收购的美国Keyhole公司开发的软件与Google的搜索功能结合起来。目的是打造一个三维的地球地图搜索库,通过整合本地搜索和即时的卫星图片,所有地形和建筑物都以三维图像的状态显示。用户查看地图时就有如从高空俯视一样,地球全貌一览无余。通过拉近、放大、旋转等功能,可以从不同方位观看建筑物、街道、河流、高山等地面景物。专业版本还可以提供即时图注和GPS全球定位等更多功能。
用户可以在自己的个人电脑上,能够随意浏览人造卫星、飞机等拍摄的全球地形照片。如果输入住址等,可立即显示住址附近的卫星照片,还可以重叠显示屏幕上的道路数据。
Microsoft 公司也推出一种面向网络的3D地图搜索服务---MSN Visual Earth。和Google Earth类似,MSN Visual Earth 也提供了大致相同的服务功能。
NASA World Wind是由美国国家航空暨太空总署(NASA)创办的开源科学普及项目中的一个,可以通过卫星观看地球上所有地方的图像。依靠美国地球资源卫星图像和SRTM 航天飞机雷达地形数据库,World Wind栩栩如生的3D图像可以让用户足下出户就能体验世界各地的地形地貌,仿佛身临其境。
就国内三维地理信息系统方面来说,分别有:
北京灵图软件技术有限公司开发的三维地理信息系统平台VRMap,其GIS分析功能包括:1)距离、面积与体积的测量。2)查询当前地形点参数。双击场景中某点,弹出对话框,显示经度、纬度、海拔高度、坡度等数值。3)两点通视计算。在利用鼠标确定两点的基础上,弹出精确调整距离的对话框,然后确定是否通视。
适普软件有限公司开发的IMAGIS特点有:1)鹰眼视窗;2)图形可按图层的方式管理和显示。3)可自动计算建筑物的高度及面积等 GIS 数据并转换成属性数据。4) 提供 SQL Server、Oracle 数据库接口,直接使用它们管理属性数据。5)可将任意文字与三维图形共存,实现广告效果。
中国地质大学(武汉)中地信息工程有限公司开发MapGIS系列,其中三维仿真软件的特点有:1)支持高程分层设色、遥感影像叠加、矢量数据叠加等多种绘制方式。2)提供地貌晕渲图。3)二维向导:在二维平面图上同步显示出观察者位置和观察方向,并可在二维平面图上移动观察者位置。
武汉大学的CCGIS 系列,其特点有:1)可视化效果调配:支持各种环境(天空、云等),支持喷泉、瀑布等粒子系统,可灵活设置雾化效果、点光源等。2)城市日照与分析。3)模型编辑:对任意三维目标进行编辑操作,包括改变几何形状、关联不同的属性与纹理等,提供多种编辑功能,包括增加、删除、旋转、拷贝、粘贴、节点编辑、屋顶编辑等。
与本研究相关的网络三维(Web3D)技术,最早可追朔到VRML(Virtual Reality Modeling Language)。它是一门与互联网结合、用来描述三维交互世界的程序语言,可以用于创建虚拟现实的对象和展示模型等。通过浏览器,互联网用户可以观赏到由VRML创建的三维场景,而不再是二维的平面图形或图像。VRML规范支持纹理映射、全景背景、雾、视频、音频、对象运动、和碰撞检测。但是VRML由于不支持压缩以及较大纹理贴图等数据,缺乏交互功能,并没有得到预期的推广运用。1998年,VRML组织改名为Web3D组织,同时制订了一个新的标准——Extensible 3D (X3D)。2000年,Web3D组织完成了VRML到X3D的转换。
1990年SUN公司开发了面向网络的Java语言,Java集面向对象、与平台无关、稳定、安全、多线程等多种特征,具有较好的分布式计算功能,短短的几年内,成为全球流行的网络主流开发工具。JAVA 3D是SUN公司开发的WEB 3D语言,整合JAVA、流技术、3D等先进技术,包括了强大、高效的3D计算能力、渲染质量、传输速度和交互能力。
采用Java技术实现Web3D目标的Cult3D并未遵循VRML标准。凭借Java的良好跨平台性能,Cult3D对象可在大多数系统平台和网络浏览器上流畅地显示,且不需要特别的硬件支持。同时以其在交互性能、文件体积和画面质量等方面的优越性而得到用户的普遍欢迎,现已广泛应用于众多电子商务网站的3D产品展示中。
同时,在Internet上还存在着类似三维矢量建模的虚拟现实技术,也就是360度全景图,全景图虽然提供了大角度的视觉环境,但是对许多动态景物缺乏支持,交互功能较差。
在开发本应用系统时将主要采用ActiveX/COM+/DCOM (Distributed Component Object Model)组件技术结合OSG(OpenSceneGraph)三维图形引擎的方法。基于组件形式的网络虚拟现实应用系统,具有便于开发、易于与其他系统集成以及良好的扩展性等优点。而OSG提供了一套可行的API函数库,构成搭建三维可视化软件的基本要素,并支持最新发布的OpenGL2.0版本的功能和GLSL语言标准,使得仿真效果的真实性有较大提高。
系统设计时,考虑到奥林匹克公园规划建设与宣传展示等方面的需求,首先提供以下功能:
(1) 场景数据集成和管理功能:采用数据库方式,将模型的几何信息、属性信息以及模型间的拓扑信息集成到一个统一的数据库中,便于有效访问和更新。
(2) 浏览器具备模型对象的查询功能:现有的浏览器大多只对场景的外观特性进行模拟,交互功能相对较弱,本系统除了浏览功能之外还提供更多的访问手段。如,通过输入地名,可定位到三维空间中某一方位;或通过获取空间中某一物体,得到经纬度、高程及其它文字信息。
(3) 常用计算与量算功能:对某陌生区域进行浏览时,用户可查询两地点之间的距离。另外结合DEM(数字高程模型)可计算体积、坡度等数值。
(4) 实现重力和碰撞等现实效果:因为目前的虚拟场景主要是对地球这个人类生活环境的模拟,在漫游时增加重力和碰撞效果也是增加漫游者的真实感觉。
(5) 在虚拟场景中表现特殊效果:采用粒子系统方法,制作烟火、雨雪等环境效果。这些功能是仿真系统中常用的功能,将其引入虚拟公园系统,能获得更接近现实的效果。
(6)集成声音、动画等多媒体信息:在VR环境中表现影音媒体,传递生动的听觉、视觉信息,进一步增强真实效果。
(7) 高端图形渲染功能:针对某些高端用户,可以开发面向顶点着色器Vertex Shade、像素着色器Pixel Shader的高端图形环境。
(8) 连接MIS(管理信息系统)与GIS(地理信息系统)数据库功能:实现对属性、地理要素、位置的查询,以及和其他系统的接口。
6.3.1可靠性
包括数据库可靠性和系统可靠性两方面。数据库可靠性是指数据库中的所有数据应是准确可靠的;系统可靠性是指系统在发生故障或用户输人数据不合理的情况下有较高的容错能力和控制故障的能力。
6.3.2易维护性
系统在开发过程中,充分考虑以后的可扩充性。例如查询方式的改变,查询功能也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,即系统应是一个开放系统。只要符合规范,就可以简单的加入和减少系统的模块。通过软件的修补、替换完成系统的升级和更新换代。
6.3.3易用性
要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,应要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
6.3.4及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足用户对信息处理的需求。对数据的网络传输、模型数据压缩和三维场景绘制等方面采用高效、安全的算法满足用户对系统的要求。
系统采用三层模型结构,将表示层、中间层、数据服务层组织在一起,见图6.1。
用户对数据的访问请求,通过表现层的客户端软件提供的用户界面输入,并经表现层的客户端软件、应用中间层中的各种应用服务器转换为对数据服务器的请求,数据服务器处理请求后,将结果通过应用中间层,返回给表现层,由表现层显示和输出用户所需的结果。
基于网络的虚拟公园系统三层体系结构,便于与用户原有的MIS及GIS等现代化管理手段结合。采用三层结构模型同时确保了系统的可维护性、可扩充性和可调整性。因为通过网络管理,能对结构和构件元素进行集中管理,这样能避免管理员在安装和更新应用程序时对每个用户的PC机进行手工调整。
数据服务层由SQL Server和三维数据文件构成,主要的数据存放在SQL Server数据库中,部分以数据文件的方式存放。它构成了一个存贮、访问和管理空间和非空间数据的关系数据库服务器。
三维模型数据库服务器是用于管理虚拟的三维地理对象和与多用户有关的数据。虚拟场景的数据包含:模型几何数据、模型纹理数据以及其他属性数据。现有商用数据库一般是关系型的数据库,不能直接适用于虚拟场景数据的存储。为了实现用通用数据库存储这些数据,在系统设计时将上述各种数据按数据块的方式保存在通用数据库中,而这些数据之间的关系单独保存为一张表中。
应用中间层主要是由各种应用服务器构成,它们包含了针对各种业务处理与分析的逻辑。应用中间层将表示层提出的请求转换为对数据服务层的请求,并将数据服务层返回的结果提交表示层。对系统功能的扩展主要在应用中间层中增加实现各种三维图形处理与其它分析的应用服务器(可以是一些控件或其它一些应用程序),并通过表示层中的客户端软件调用。应用中间层还包含有IIS(Internet Information System)构成Web服务器,因为系统实现时要尽可能地采用Web方式浏览调用,以简化操作。
应用中间层包括三维场景数据的查询、压缩以及分发功能,运行时,接收来自表示层的请求,并根据具体请求计算分发其需要的数据。因为三维场景中的几何数据采用累进传输技术,因此中间层软件应具备计算累进模型的功能,就是在模型简化预处理过程中,生成一个由原始模型的最基本模型和一系列简化信息组成的累进格网表示模式,在应用时,通过逆向跟踪简化信息序列,对每条简化信息执行逆操作,从而逐步恢复所删除的模型细节,得到原始模型的连续精度的简化模型。在分发最基本模型和简化信息时,还要对所传输的数据进行压缩,以降低有限的网络带宽资源的占用。
为了加强本系统的功能,在应用服务器端还建立与传统GIS数据库及应用系统的联系,将GIS的数据管理、查询、检索、空间分析等功能,逐渐与虚拟仿真场景进行连接,对三维浏览查询等功能进行扩展。
在表示层,设计用于虚拟三维场景浏览与交互操作模块以及其它应用程序模块,诸如用户对话管理模块、数据量测模块、二维图形显示管理模块等。各模块以浏览器组件形式设计与开发,在用户第一次访问数据时自动下载并安装在本地。基于组件技术的设计思想与软件工业发展方向一致,使用主流工具开发组件和组织系统,可以集中力量于接口和事件设计。
表示层软件需要直接与用户进行交互,它的主要工作是快速正确地理解用户需求,并将用户的需求转化为应用中间层软件能理解的格式向其发出数据请求,并将请求结果及时反馈给用户。除此之外,客户端还应该具备几何模型的递增显示功能,因为中间层在分发几何模型数据时是按照累进模式依次发送的,所以表示层相应地递增显示所接收到的数据。除了对三维场景的浏览与操作外,表示层软件组件还负责将用户查询、检索、多用户之间信息传递到应用中间层,并接受其回传的结果数据。
依据以上的分析与设计,初步开发虚拟奥林匹克公园系统,其技术路线如图6—2。
首先,基于三维图形工具包和组件技术,开发仿真场景驱动引擎,初步完成数据解压、场景显示与漫游、界面控制与交互操作、雨雪粒子效果和经纬度查询及对象属性信息查询等功能。按照由易到难的思路,下一步将完成累进传输等功能。
然后,分别对场馆区、商业区、奥运精神纪念公园区、文化轴线千年步道以及森林公园区域等进行了虚拟场景开发,建立了三维模型。由于,虚拟奥林匹克公园系统中主要三维模型的类型较多,有山体、水体、植物、城市雕塑、公共设施和场馆等方面,并且单个模型的数据量也大。如,通过建模工具生成一束带有花瓣等细节表现的花模型,其三角形个数达到七万多个;利用三维扫描仪得到的城市雕塑模型,其细节表现虽然丰富,但数据量也很大,若直接将模型交给图形流水线处理,往往超出硬件的承受能力,在显示时产生停顿现象。所以,为适应互联网环境,进行了自动简化与优化,以减少多边形数量和贴图的尺寸。
最后,系统集成高分辨率卫星遥感数据和航空数据,数字高程模型数据,三维模型数据和贴图数据等,构建整个场景后,将其发布到互联网上。在文件大小、图形渲染质量、渲染速度、造型技术、数据的压缩与优化以及提供的交互性等方面,均得到较满意的结果。
6.5.2.1 ActiveX控件初始化
由于是全组件化设计,按照一般制作ActiveX控件的步骤后,需在初始化函数中,通过控件在全球范围内唯一的ID号码在注册表中寻找控件被用户安装完毕的目标路径,依此路径加载与控件位置一致的其它所需动态链接库。而后依三维图形程序的要求,在控件的创建函数中完成三维渲染的初始化工作,其流程如图6.3所示。
这一流程中加载的渲染面窗口句柄是ActiveX控件的容器,使用在网络环境中即是浏览器窗口。场景视图创建成功后,可拥有三维场景中相机的默认操作。当进一步载入模型数据后,用户可通过鼠标、键盘等交互手段,改变相机的位置,完成场景中的漫游、旋转、前进与后退等动作。 三维场景中照相机拥有跟踪球、飞行、驾驶、路径漫游等多种运动模式,用户可在这几种模式中切换。
6.5.2.2加入动态模型
与静态场景与模型不同的是,奔驰的汽车、飞翔的鸟类等动态物体加入到三维场景后,将不仅随视点变化而发生平移、旋转等变换,还拥有自身的运动模式,从而使得场景更加真实和生动,其基本原理是在不同时间点确定更新的位置,为保持连续性,防止跳跃,可将时间间隔缩短到较小数值或在前后两个位置间作内插平滑处理。
当三维场景渲染时,在绘制到屏幕前,将对整个场景结构图中结点进行选择和更新遍历,在此过程中,动态模型的位置或姿态由于事先设定而发生改变,这些更新被提交到绘制过程中,从而完成动画功能。创建运动路径的关键是确定时间、位置、俯仰、偏航和翻转等参数的数值。其途径有两条:若模型有运动规律,可依据物理模型直接在程序中确定随时间变化而改变的位置等参数;若希望三维模型按照指定路径运行,可首先在虚拟场景中移动相机来记录一个路径文件,其中存储的是时间、位置、俯仰、偏航和翻转等参数,而后在需要参数时读取外部文件即可。
6.5.2.3 数据库查询
选中一个目标是隐藏、置换或查询场景内物体的前提。这种交互操作的关键是初始化选择管理类,并将其压入视图的事件管理链表前端。选择管理类的原理是当鼠标双击等约定事件发生时,计算鼠标点中位置与各个三维物体间的相交关系,若在此位置发生多个物体重叠的情况,则进行深度值的判断,比较哪一个物体的深度值最小,即离相机的位置最接近。
三维目标的选取是场景内目标信息数据库查询的前提。完成目标选取后,同时在另一视图中,突出显示目标对应的场景结构图中结点,以获得结点的ID数值为参数,提交到服务器端进行属性数据查询,得到结果后返回客户端显示。另外,由于场景图中结点的父子关系得到了展开,此时用户可进一步选择父子结点,并查询其信息。
6.5.2.4 结合DEM进行计算与查询
以DEM数据为基础生成地形三维模型后,其数据依然需要单独存储在文件中,当系统启动后,载入数组中。以地物参数为基础,计算得到地物空间模型,其坐标和高度等数值存储在数组中,以作为体积计算,各节点高度、深度等查询的基础。
各节点高度、深度等信息查询的过程是,地物空间模型的左上角相对地形方格来说,坐标是(x0+xcount, y0+ ycount),相对自身来说是(0,0),这是考虑了移动的情况,因此加入了xcount,ycount;反过来看,如果点击获得的位置在地形上是(tx,ty),对于垂直方向上地物空间模型自身来说就是(tx-x0-xcount,ty- y0-ycount),需要进行一下判断,看这两个数值是否小于地物空间模型的范围,不然上方就没有模型的面片。得到(tx,ty)后,相当于得到地形高程数据数组的索引,从而得到高程数值,还能计算出经度纬度数值;得到(tx-x0-xcount,ty- y0-ycount)后,相当于得到地物空间模型某单元格的索引,从而得到其高度数值。通过这两者的比较,可以计算查询各节点高度、深度数值等拟和信息和位置信息。
6.5.2.5 场景文件的转换与压缩
选择直接调入数量众多的主场景模型文件、外挂模型文件与材质文件的方式来显示三维场景,有一些弊端,这包括由于从服务器端传递到客户端,因多次的连接请求和校验而延长了下载时间,又因到达客户端后主次模型关系与材质的匹配等处理而耽误场景调入。若将所有相关文件转换成一个二进制文件,既能缩短下载时间,又能加快场景文件的调入和占用较少的内存资源。所以在实践中采用依靠转换程序,先行将所有相关数据文件转换成一个二进制文件,然后使用到网络环境中的技术路线,这被证明是可行和有效的。
考虑到网络带宽等客观因素,为达到网络环境中传输文件尽量小的目的,采用了进一步压缩二进制文件,传输到客户端后,再从内存中解压并提取二进制文件载入三维场景的方法。实际操作中,以ZIP格式进行压缩,压缩比在40%左右。数据到达客户端后,以控件中包含的XZIP源代码进行解压并提取二进制文件。
6.5.2.6 网络发布技术
在实现浏览器中三维图形漫游与交互功能的ActiveX控件后,互联网上发布三维场景变得比较容易。在网页设计与制作中,重点表现占据大半部分范围的虚拟现实场景展示这一块,剩下的矩形区域作为菜单栏,来介绍浏览方法,完成场景中目标的属性查询等功能。为在窄小的菜单区内容纳如此多的内容,借助了推进式菜单风格。
在虚拟现实场景展示框架中,嵌入OBJECT关键字,在此关键字下给出ActiveX控件的ID号、程序来源、版本号及其它运行参数等信息,即可完成扩展浏览器的三维渲染功能。在给出ActiveX控件的程序来源前,应将程序所需的全部OCX、DLL文件等打包成一个压缩文件。在客户浏览网页时,若本地机器还未安装ActiveX控件的话,将按照提示的程序来源处自动下载压缩文件。若本地机器已经安装ActiveX控件的话,将进行版本号的比较,若本地版本号较低,则将自动下载包含最新ActiveX控件的压缩文件并安装。
比较单机模式,互联网可以跨越空间上的限制。配合以三维仿真的形式,广大国内外游客可以轻松的漫游奥林匹克公园及周边环境,甚至更多的无法前来的人们也能欣赏2008年北京奥运的建筑、千年步道以及森林公园区等景观。对观众、运动员、裁判和组织者来说,其用途还包括赛场环境熟悉和路线的网络虚拟演练等。
整个公园规划图见图6.4。虚拟北京奥林匹克公园系统三维场景效果图见图6.5、图6.6与图6.7。同时,对于关注的场景加载时间问题,由于在互联网环境中,请求服务器发送的三维场景文件均在7M左右,虽然网络传输时间根据带宽的不同会有所波动,但对大多数下行速度为128千字节每秒的用户来说均能保持在1分钟左右。数据到达客户端后,初使化工作时间相当短,用户能立即浏览三维场景。总的来看,依据提出的系统分析与设计,建立的三维场景发布与浏览系统能够满足大多数网络三维图形应用的要求,具有广阔的应用价值。
随着技术进步和带宽提高,互联网上三维仿真方面的需求越来越大。为了服务于北京2008年奥运会的总体规划设计、指挥决策以及旅游宣传等方面需求,本章开展了北京奥林匹克公园虚拟仿真系统设计与开发等方面的研究。
基于虚拟现实最新发展技术,结合北京奥林匹克公园建设规划的具体情况,首先阐述了本系统应该提供场景数据集成管理、模型对象查询、常用计算与量算、重力和碰撞等现实效果、粒子系统特殊效果、高端图形渲染以及连接MIS与GIS数据库等功能。接着,提出可靠性、易维护性、易用性与及时性等性能方面要求。然后,介绍了基于分布式网络架构的系统结构设计,采用三层模型结构,将数据服务层、中间层与表示层组织在一起,其中详细说明了这三层的设计内容。最后,给出了开发虚拟奥林匹克公园系统的技术路线,并详细说明了动态模型加入、数据库查询等技术问题的解决途径,初步完成系统开发工作。结果表明,系统在文件大小、图形渲染质量、渲染速度、造型技术、数据的压缩与优化以及提供的交互性等方面,均得到较满意的结果,能够服务于广大国内外游客以及参加2008年北京奥运的运动员与裁判等。
但网络三维仿真毕竟处于一个正在发展的阶段,所提出的方案还需在深化开发的过程中不断完善。