三维校园电子地图(上)访问734次作者:李纳璺陈金龙阮方舟1引言随着计算机技术,特别是计算机图形学、三维仿真技术以及虚拟现实技术的飞速发展,传统的二维电子地图被注入了新的活力,三维电子地图正成为电子地图发展的一个重要方向。
传统的二维电子地图只能以图形和符号的方式来呈现一张地图,这种方式往往不能直观清晰的表示出地图所在位置的地理环境;采用三维电子地图的方式,建立场景的仿真模型,把现实场景进行虚拟再现,真实、互动、情节化的特点是虚拟现实技术独特的魅力所在。
如何设计一个仿真度高,并且具备虚拟漫游和智能导航的三维地图引擎,成为三维电子地图研究领域的一个热点问题。
本文研究的设计的三维电子地图引擎系统,设计了模型动态加载接口,并具备智能导航和虚拟漫游引擎,实现了三维校园仿真电子地图。
它为校园规划建设、游客观光导航、学校对外宣传等方面提供了一个智能化的平台,为广大系统用户提供了极大的便利。
开展虚拟校园三维地图仿真引擎系统及相关课题的研究适应了信息社会发展的趋势,具有重要的理论和现实意义。
本文对从DirectX技术着手,采用Microsoft Visual C#编程语言结合三维图形开发包(Managed DirectX SDK August 2007)在.net框架中构建的三维校园电子地图程序。
该程序实现了桂林电子科技大学的(东区)的三维校园电子地图的功能。
除此之外,在可视化的基础上实现了一些虚拟现实的交互操作和空间分析,如:校园景物的查看、校园路径导航、三维动态漫游校园等;给需要了解桂林电子科技大学校园地理信息的用户提供了极大方便。
2 本课题研究的内容本课题是一个使用Managed DirectX的三维图形技术实现的一个三维校园电子地图程序,该程序是在.net框架下建立完成,开发语言为当今最流行的高级语言Microsoft Visual C#。
它是以桂林电子科技大学东校区为实景,进行了校园虚拟仿真,建立了具备观光浏览与智能导航为一体的多媒体三维校园电子地图程序。
本课题主要是研究了三维建模技术在程序中的导入技术、三维模型的优化、虚拟现实技术、Floyd 算法实现的智能导航技术、Alpha混合与Alpha测试技术、三维场景中的光照技术、XML技术、用户交互控件技术等等。
这些技术将全部应用到三维校园电子地图程序当中,最终展示出集视觉、听觉、用户智能交互于一体的校园仿真三维地图。
3 开发环境与相关技术简介3.1 Managed DirectX与托管代码版DirectX 9.0语言支持(1) Managed DirectXDirectX 是一系列低级的应用程序接口(APIs),它用于创建游戏和其他高执行效率的多媒体程序。
它包括对高效的2D和3D图形、音效和音乐、输入设备、力反馈设备、多媒体流和多人游戏的网络通信程序。
三维校园电子地图程序的三维环境漫游引擎的构建就是使用Managed DirectX 9.0的图形处理技术来完成的。
(2) 托管代码版DirectX 9.0语言支持在DirectX 9.0下,开发者在使用托管代码的时候,能够利用DirectX的多媒体功能和硬件加速。
托管代码版DirectX 9.0允许访问大多数原始的非托管DirectX功能。
下面是被DirectX 9.0和DirectX 9.0 SDK支持的托管代码语言:Microsoft Visual C#Microsoft Visual Basic .NETMicrosoft Visual C++Microsoft JScript .NET在三维校园电子地图程序中,采用的是Microsoft Visual C# 2.0、 Microsoft DirectX Software Development Kit(SDK) August2007来开发。
(3) Managed DirectX包含的组件托管代码版DirectX 9.0 由以下主要组件构成。
(1) Direct3D Graphics 提供了一个单一的API,你能使用它进行3-D图形编程。
(2) DirectDraw 提供直接的低级访问显存和高速渲染。
(3) DirectInput 提供对于多种输入设备的支持,包括对力反馈技术的完全支持。
(4) DirectPlay 提供多人网络游戏的支持。
(5) DirectSound 提供播放和捕捉预录制数码采样的支持。
(6) Audio Video Playback 允许回放和简单控制音频/视频媒体。
(4) Managed DirectX的优点通过消除COM 组件对象模型的互通层,托管代码版DirectX 9.0改善了执行性能。
托管代码能减少代码体积和提升工作效率。
继承于强大易用的Microsoft .NET Framework 公共类型的接口更加直观。
托管代码也把你从处理很多内存管理的任务中解放了,这些任务比如释放对象。
Managed DirectX还提供了简单的3D程序框架,三维校园电子地图就是基于这个框架而开发的一个3D应用程序。
使用Managed DirectX很大程度上减少了繁重的初始化操作。
由于代码运行于 Microsoft .NET 虚拟机之上,开发的语言为Microsoft Visual C#,所以程序能够自动回收垃圾,避免了内存的泄露,还降低了代码复杂度,便于Web接口的开发。
3.2三维坐标系与几何图形学在使用DirectX开发三维校园电子地图程序之前,首先要对3D图形学的数学基础有一定的了解,根据三维校园电子地图程序的需求,需要掌握以下几个方面的知识点:(1) 向量以及向量的运算;(2) 3D坐标系;(3) 面和顶点法线;(4) 3D物体的构成。
(由于篇幅有限,加上难度不大,以上4点在此不作详细介绍。
关于Floyd最短路径算法原理,Alpha混合与测试原理,三维场景中的光照技术类型请读者参考相关书籍):4 系统总体设计三维校园电子地图程序是把桂林电子科技大学东区的校园实景虚拟再现,除能够实现普通地图的功能以外,还能够进行三维的景点观光和智能路径导航等功能。
系统总体开发流程框架如图4-1所示:图4-1 系统总体开发流程框架构建一个三维校园电子地图系统需要按照以下几个关键步骤来进行程序的开发:(1) 数据采集:获取校园的相关建筑数据以及地理环境信息;(2) 平面图制作:从获取的相关数据中提取有用信息,建立校园二维平面图;(3) 三维模型的建立:建立校园场景中的建筑模型、场景小品模型、天空环境模型和地形模型等;(4) 开发漫游导航引擎:使用程序来实现模型导入、三维场景的漫游、导航功能。
三维校园电子地图漫游导航引擎作为该项目的核心部分,它主要实现的目标是:实现将3ds Max建立的模型导入引擎,把所有模型组合成一个校园整体,导入音乐,加载天空、地形以及环境小品等对象,构建成一个集音乐与用户交互的三维校园互动程序。
将更加直观的把整个校园场景展示出来,以便于该软件的使用者迅速了解桂林电子科技大学(东区)校园的地理信息。
4.1 相关数据的采集(重点说明:作为学习或做Demo版,通过实地和GOOGLE卫星图获题材是一种十分可取的方法)在开发三维校园电子地图之前,首先要对校园的各方面数据进行收集,由于大量的建筑数据以及校园平面景观布局图纸可以从校方直接获取,也可以通过实地取材和互联网资源来获取相关数据(我们的数据是采取此法)。
校园建筑的模型比例数据、贴图数据、布局位置全部是通过实地取材得来,由于学校东区面积比较大,建筑复杂多样,导致数据采集工作量很大,用了近两个星期,使用数码相机在校园各个角落获取数码照片近10000张,将校园所有景观囊括在内。
建筑轮廓基本是从高层楼顶拍摄,然后通过照片的对比和组合得到建筑的实际外形和轮廓数据,通过互联网的GOOGLE卫星图获取建筑之间的比例数据以及平面布局数据,通过照片的剪切获取景物的纹理贴图数据。
4.2 二维平面图的制作校园二维平面图的制作在三维校园电子地图的开发过程中是相当重要的一个环节,二维平面图制作的好坏直接影响到三维立体图的效果。
因为三维地图的建模是完全基于二维平面图而建立的,如果二维平面图的比例不正确,就不可能制作出精确的三维地图。
制作二维平面图的还有个作用,就是生成导航引擎程序的小地图导航地图功能。
可见二维平面图的制作必须准确无误。
为了控制好二维平面图的比例和相关建筑的位置精确,本系统使用了Google卫星照片来做底图作为二维平面图的绘制参考。
然后再使用AutoCAD 2007来绘制线条,这样便能达到精确绘制的目的。
底图是通过Google卫星照片拼接而成,首先在电脑上安装Google_Earth_BZXV.exe。
在搜索框中输入桂林电子科技大学的位置:25°17'5.05"N,110°19'53.89"E以获取校园的卫星照片。
为了得到清晰的底图,获取图片是采取分次获取,然后使用Photoshop合并成一张完整的桂电东区校园底图。
如图4-2所示:图4-2 桂林电子科技大学(东区)卫星图4.2.1建筑平面框图获得了校园的平面底图GuetMap.jpg以后,将它导入进AutoCAD 2007作为外部参照的地图,用CAD的直线和曲线绘制工具按照底图建筑的轮廓绘制出外形,就得到一张CAD导出平面图guet.dwg文件。
该文件的最终效果如图4-3所示:图4-3 校园平面图有了这张平面地图,就能够使用3DMAX导入*.dwg文件作为底图参照,然后绘制出等比例的校园3D 模型。
4.3 三维模型的建立(建筑模型和环境小品模型的建立在此不作介绍)地形模型建立:桂林电子科技大学整个东区校园的地形样式比较丰富,由山坡、河流、以及高低不同的坡面,这个地形的模型制作加大了难度。
在校园东区地形的创作中,我把整个学校当作一个区域,按照CAD地图建立一个大平面,然后在这个大平面上切割出许许多多个小面,再通过多边形修改器来分区修改这些小面。
在地形中,比较矮小的坡度(如:路边沿等)则不进行3D建模,而是使用贴图取而代之,这样将会最大程度上减小程序的开销。
在实时虚拟系统中,它们应该使用尽可能少的面,获得尽可能少的面的方法是在建立模型时使用合适的方式,当把贴图赋给实时模型时,也应该使用最少的面。
所以这类模型在建立时主要用二维的模型结合透明贴图来创造出三维的模型效果,即用贴图来代替细节模型。
得出高低不同的坡面以及河流等模型。
最终完成的地形图如图4-4所示:图4-4 地形模型4.4 三维漫游导航引擎的构建创建三维校园电子地图引擎系统是使用C#语言结合Microsoft DirectX SDK来完成的,是基于Microsoft DirectX SDK Sample Framework来建立引擎框架,调用了Microsoft 为我们提供的类库。