陈建辉,李朝奎,2,3,方 军,2,3,卜 璞,周青蓝
( 1. 湖南科技大学 地理空间信息技术国家地方联合工程实验室,湖南 湘潭 411201;2. 湖南科技大学 地理空间信息湖南省工程实验室,湖 南湘潭 411201;3. 湘潭市地理空间信息应用工程技术中心,湖南 湘潭 411201)
三维GIS以其逼真的场景、直观的视觉效果弥补了二维GIS在空间表现及空间分析功能方面的不足.近年来三维GIS在三维场景的构建、二三维一体化等领域取得了长足进展.其中,三维场景(模型)的构建问题是三维GIS要解决的首要问题,综合众多三维场景的构建技术来看,目前主流的三维场景构建方法有以下几种:
1)三维软件建模(即单纯的几何建模):这种方法构建的模型和场景简洁、美观,能极其精细地表现地物特征和细节,但建模周期长,人力消耗多,模型占用内存大,对计算机软硬件要求高;
2)基于倾斜摄影的建模:这种方法精度高,对真实地物的还原性好,但可视化结果不如几何建模美观且设备及技术成本高;
3)基于规则驱动建模:适用于大面积相似建筑物的模型构建,代表软件为City Engine,采用特定规则建模,建模效率高、成品可扩展性好,但规则复杂,不利于初学者掌握;
4)基于虚拟现实软件或开发图像库OpenGL等高质量3D图形开发平台的建模:使用VC++、VB、C#等编程语言实现三维建模、纹理、三维地形以及场景漫游[1],但工程量大,对建模人员在计算机领域的综合素质有极高的要求.
综上所述,本文提出一种基于3Ds Max与Sketch Up的联合三维建模方法,并以三维校园建设为例进行实验,将构建的三维模型嵌入所开发的系统,实现了系统的基本功能.这种方法避免了单一软件建模的局限性,充分发挥了多种软件的优势,三维模型的可视化效果良好.
校园三维场景的构建包括两方面内容:地图方面,利用已知的地图进行数字化或直接应用CAD校园规划图,并在ArcGIS中保存为矢量化文件;模型方面,应用三维建模软件3Ds Max和Sketch Up,配合PhotoShop进行美化、贴图.将两方面的结果统一导入到ArcScene中,对各个地物的大小、方向、位置进行调整,形成完整的三维场景.具体实现流程如图1所示.
图1 三维场景构建流程Fig.1 Flow chart of 3D scene construction
实际校园中各种设施、楼宇、道路、湖泊及绿化带纷繁复杂,不可能在模型中面面俱到.本着"关注重点、模仿特征、追求视觉、少占内存"的原则,对建模区域的地物景观进行不同程度的取舍,最终确定建模内容[3]如图2所示.
图2 三维场景中模型内容Fig.2 Content of 3D scene model
目前三维建模软件很多,且各有所长.主流三维建模软件的特点及应用见表1.
表1 常见三维建模软件的对比Tab.1 Comparison of common 3D modeling softwares
表1中3Ds Max软件的建模优势比较明显.其构建的三维模型精细化程度高,细节表现性好,但正因如此,使得每一个模型的数据存储量大幅上升,对计算机的处理能力提出了比较高的要求;Maya常用于动画的制作,其素材大多由3Ds Max进行创建;Sketch Up建模迅速,模型存储空间小,渲染快速,光照设定比较智能,但对曲线、曲面的表现较弱,模型效果不如3Ds Max精细,对实体的表现不够逼真,高质量的模型效果依靠众多插件支撑;Lumion软件本身对计算机配置要求比较高,并且建模方法单一,缺乏灵活性;City Engine虽建模迅速,但其基于规则的建模特性使得众多建模人员难以上手.
基于以上对比,本系统以3Ds Max为主,构建重点地物的精细模型,以Sketch Up为辅构建次要地物的简模,并运用Sketch Up快速的贴图及渲染能力对模型进行渲染输出[2].
1.4.1 基础数据的获取
构建三维场景所需的数据主要有地图数据(校园规划矢量图)、建筑物设计图纸、建筑物高度数据、纹理数据等.
1)地图数据:从学校基建处获得1:1 000的校园规划CAD平面图,对其中的楼宇、道路等所需要素图层分别进行提取;也可以根据遥感图像或其他校园规划图片自行矢量化;
2)建筑物设计图纸:通常指楼宇的CAD设计图纸,用于后期在3Ds Max和Sketch Up里的快速建模.
3)建筑物高度数据:CAD图纸中会包含相应的楼宇高度数据,其他设施如路灯等小品的数据,在无须太精细的情况下依据经验目测定义即可.
4)纹理数据:纹理数据通常来自于单反相机的实际拍摄与后期处理,部分纹理可以PhotoShop制作或由网络下载.
1.4.2 联合建模
后续的开发系统中以点、线、多边形3种要素来表现地物:点状要素如建筑、树木、路灯;线状要素如道路中心线;多边形要素如湖泊、地面等.对于主要建筑模型,运用3Ds Max进行建模的具体步骤如下:
1)清理CAD图层
无论是校园规划CAD平面图还是楼宇平面图,都会涉及大量的与建模无关的信息(如校园规划图里的车库图层、绿化图层,楼宇CAD平面图里的洗手池图层等),将无关信息进行清理,保留所需信息是建模的首要步骤.以楼宇为例,图层清理前后的效果如图3所示.
图3 图层清理前后对比Fig.3 Comparison of Layers before and after cleaning
2)3Ds Max建模
3Ds Max提供了多种建模方式,室外建模设计中最常用的有以下7种:基础形体建模、编辑器建模、二维形建模、多边形建模、放样建模、组合建模及NURBS曲线建模[4-6].使用二维图形建模中的"挤出"修改器建模是最常用的方法,并配合其他功能,最终实现单体模型的构建.
3)Sketch Up建模
Sketch Up相对3Ds Max建模效果较为粗糙,但建模效率高,并且其对模型的贴图及渲染比较迅速,因此对于次要的地物模型均可采用该软件进行建模.对于形体规则的建筑物,如居民家属楼等,在Sketch Up 中按相应尺寸直接进行拉伸即可.Sketch Up与Auto CAD、3Ds Max之间格式的相互兼容,使三维建模的方法愈加多样与快捷.
4)纹理贴图
所有模型的纹理制作与导出均在Sketch Up中进行,这就避免了在3Ds Max 中创建灯光、烘焙等烦琐的操作.纹理图片格式为.jpg格式,Sketch Up材质库中提供了如屋顶、植物、沥青等可供选择的多种常用材质.
为了保证纹理的正常显示,避免浏览时纹理丢失,纹理数据的长度和宽度必须是2的整次幂大小,如16X16,8X32等.相机拍摄的照片,还要进行裁剪、校正、调色等处理,同时运用图像处理软件,对纹理数据进行压缩、减小数据量[1].对于面状要素,直接运用具有三维效果的纹理进行贴附,也能达到比较好的效果.
1.4.3 模型的存取
为了能够在ArcGIS Engine 的Scene Control控件中识别并显示模型,需要将模型导出为.3ds格式.Sketch Up导出模型时的一个人性化设计是:系统会自动将所附材质复制并添加到保存文件的文件夹中,同时对图片进行系统默认的命名.
1.4.4 三维场景的集成
将所建模型分别加载到ArcScene 场景中,对原场景中的点、线、多边形要素以三维模型进行替换,并分组管理,最终建立起三维虚拟校园图,如图4所示.需要注意的是,校园平面图中的建筑图层是面状图层,而三维场景中的建筑需要以点符号进行表现,所以要提前将面状图层运用ArcMap中的分析工具转换为点图层.
图4 校园三维集成全景Fig.4 Campus 3D integrated panorama
本文以某高校为例,运用上述联合建模方法构建了校园的部分三维场景,并将其运用到三维虚拟校园系统的建设中.本虚拟校园系统的总体架构如图5所示.系统以ArcGIS10.0为平台,以VS2010为开发环境,采用C#.NET语言基于Arc Engine组件进行开发,实现了场景加载、三维浏览、地物属性查询及动画制作与输出等基本功能,如图6所示.
图5 系统总体架构Fig.5 System Architecture
图6 系统功能设计Fig.6 System function design
1)文件加载
该功能可以直接采用ArcGIS Engine已经封装好的方法,通过拖动控件的方法进行加载.首先在VS中建立新窗体,并加载Toolbar Control、TOC Control、Scene Control、License Control及Map Control这5个基本控件.再对各个控件进行属性编辑,实现控件之间功能的内在链接与相互操作.
2)场景浏览
该功能包括视图的放缩、整体显示及场景的漫游.放大和缩小通过改变MapControl中当前视图的Extent属性实现.场景的漫游直接调用ArcGIS Engine中的漫游工具来实现.表2列出了实现视图浏览功能的类及作用.
表2 常见视图浏览功能的类参照表Tab.2 Reference table for "Class" of common view-browsing function
3)自定义动画
自定义动画能够根据开发者的兴趣点、目标点对既有场景进行编辑,以达到美观、实用的展示效果.
①添加场景书签及关键帧
BookMark3DClass类用于添加场景的书签,IKeyframe接口的CaptureProperties()方法用于创建关键帧.关键帧所记录的位置实际上是摄像机展现的一个静帧,不同关键帧的创建实际是更改摄像机不同的视点及视域.
②播放动画
通过调用AddTrack()方法及ApplyTracks()方法即可读取关键帧播放动画.
③输出动画
将动画输出为视频后,场景浏览就可以脱离固定平台而实现,一般输出的视频为*.avi格式,主要应用ISceneExporter3d接口和IAVIExporter接口实现.
4)属性编辑与查询
要素属性的查询是ArcGIS中最基本的功能,通过属性查询,用户能够清晰地了解图层或具体地物的详细信息.属性的编辑是指对未添加的属性或已有的属性值做适当的添加或修改,以使图层的信息符合当前实际.属性的编辑需用到IFeature接口的set_Value()方法给指定字段赋值.
①新建Windows应用窗体,并在窗体中放入树形控件和表格控件.树形控件用来获取当前图层,表格控件以显示图层的属性信息.
②导入选中要素的属性到属性表.当单击树中某一要素时,需要将其属性信息导入到属性表.
③属性信息的修改与保存.新信息录入后,调用Store()方法将其保存.
本文针对现有三维建模方法存在的不足,提出了一种能将软件缺陷相互弥补的联合建模方法.将此联合建模方法应用于某校园三维系统建设.研究及实验表明:
1)将3Ds Max软件精细建模的优点和Sketch Up快速建模及渲染的优点相结合,实现了三维模型重建,既避免了单一软件建模的不足,同时也避免了因应用诸多软件建模而造成的格式不匹配问题,同时缩短了建模周期,降低了场景建模的难度.
2)校园范围内的三维场景能够比较流畅地显示,产生了很好的视觉效果与实用效果.
3)大范围三维场景的显示对计算机硬件提出更高的要求,因此,在大范围三维的精模创建过程中,更应注重模型的构建方法与技巧,尽可能减少三角形面片的数量,才能有效地降低模型存储数据量.
4)本文提出的联合建模方法为大范围三维场景的快速构建提供了一种便捷的解决方案.