基于ArcGIS Engine的三维场景快速动态建模方法

2015-03-29 06:33毛新光
测绘通报 2015年6期
关键词:模型库图层顶点

吴 锋,毛新光

(杭州电子科技大学信息与控制研究所,浙江 杭州310018)

一、引 言

三维地理信息系统(GIS)的应用领域十分广泛,如城市交通调度、地质灾害定位、地下管线、厂矿生产过程模拟等,相比二维GIS不仅能再现直观的、真实的事物间纵横交错、上下起伏的空间关系,具有较强的立体感和逼真感,而且能对构建中的三维场景进行三维空间的分析和操作等功能。可以说三维GIS的应用开发已成为当前GIS研究中的重点[1-3]。

纵观国内外三维GIS的研发现状,有3种途径实现三维GIS:一是基于底层库函数开发实现,如OpenGL和VC++的开发方式[4];二是在三维可视化系统上以插件形式加载数据显示和查询功能模块,如Vega工具软件[5];三是在现有GIS平台提供的API上进行二次开发,如ArcGIS的ArcObjects组件[6]。底层库函数开发方式效率较高,但代码编程量较大。三维可视化系统在模型制作方面具有较好的逼真性,但在GIS方面的功能较弱。现有GIS平台软件中,三维可视化方面的功能较为欠缺,但随着三维空间分析功能的日趋完善,在现有GIS软件中进行二次开发将是三维GIS系统研究、开发的主流方式。

要实现三维GIS,必须解决三维场景如何建模和应用支撑平台的模型数据管理。从研究现状来看,目前三维场景的快速动态建模主要有统一规范法、标准模型符号法、非仿真功能写景法、二维GIS法和CAD方法等[7-11]。通过比较分析,这些方法或建模工作量大、效率低,或要求编写大量的程序代码,或建立的三维场景缺乏较好的空间查询和分析功能。

本文提出一种基于ArcGIS Engine组件技术和数据库技术的快速动态建模方法,即预先建立对应的三维场景模型库并保存在ArcGIS Engine组件的数据库中,通过地理描述和数据管理获取模型构件、组装构件而成需要的三维场景,从而大大降低三维场景建模的工作量;另外,将地理描述信息与场景精确模型结合起来,大大提高了场景模型的真实感,而且数据编辑、空间分析能力也得到了体现。

二、三维对象模型库的建立

1.CAD模型与GIS的集成方法

目前三维场景中的实体,大部分都是通过外部三维制作软件制作好后以点、线、面的形式导入到三维场景中来,如3ds Max制作的三维实体。这种数据集成要求CAD模型与GIS二者之间的数据能够相互转换或在GIS中可以直接读写CAD文件。

目前常见的数据集成有文件转换、数据库共享和直接访问3种方式。文件转换方式是指数据文件格式从一种到另一种的转换,如ArcGISEngine的控件SceneControl支持SHP文件,3ds Max支持*.dwg文件,*.dwg和*.shp可以通过*.dxf(CAD格式)进行转换。数据库共享方式通过在系统中嵌入应用程序API接口访问其他系统的数据,如ArcSDE就具有识别CAD文件的扩展程序,允许用户在数据库管理系统中存储、提取CAD文件要素或GIS特征,这是一种新型方式。直接访问方式则是直接读入另一系统的数据而无须经过中介,如ArcGIS直接读取3ds Max制作的*.3ds文件来构建三维场景,从而实现CAD与GIS的数据集成。直接访问方式也是本文采用的主要集成方式。

2.三维对象模型库的组成

三维场景中的实体结构可以分为单一模型和组合模型。单一模型就是该模型结构复杂,不能拆分为单一模型的组合,在向三维场景中添加模型时,作为单一的模型;组合模型就是场景中的三维模型可以拆分为单一的组合,从模型库中调用该单一模型,组成该组合模型。

依据三维场景中实体的分类表达规则和组成要素的不同,三维对象模型数据库可分为以下几类:建筑物模型库、建筑物纹理库、地面覆盖模型库、独立对象模型库。建筑物模型库主要存储以3ds Max软件导出的*.3ds文件;建筑物纹理库主要存储建筑物墙面纹理、窗户纹理等;地面覆盖模型库主要存储地面江河、道路、植被的纹理库;独立对象模型库主要存储一些地面上设施如树木、路灯、交通站台、电话亭等标志性建筑物。三维对象模型库的组成结构如图1所示。

图1 三维对象模型库的组成结构

各个对象模型库的建立方法如下:

1)典型建筑物模型库和独立对象模型库:该模型库主要存储一些不能分解的结构模型,对于结构复杂的典型三维建筑和独立对象,反复调用模型库中的一些简单实体,并通过组合方法建立起三维场景中的实体,从而达到简捷、快速建模的目的。

2)纹理库的设计:对于一些结构简单、规则几何体的三维实体如长方体、正方体等,利用多片来建立三维场景。但利用多片建立的只是三维场景几何模型,还需要进一步对模型的表面进行贴图、渲染。针对这种情况,需要建立建筑物纹理库。该库以大量图片为基础,并配合图片处理软件如PhotoShop工具对图片进行预处理。

3)地面覆盖模型库的设计:三维场景的地面覆盖物模型库主要存储地表中的绿地、地形、水系类别的地面覆盖物纹理。入库的纹理数据文件,必须存在数据库的表中,当编辑或更新地面覆盖物纹理时,直接从数据库的数据表中调用相应的数据纹理。

三、基于ArcGISEngine的三维场景建模方法

在完成建筑物数据库、建筑物纹理库、地面覆盖纹理库、独立对象数据库和数据采集的基础上,结合.NET的编程环境与ArcGIS Engine中的Scene-Control、ToCControl、ToolbarControl、MapControl等控件进行二次开发,实现三维数据模型的快速建模。

1.快速建模流程

在三维场景构建时,针对场景三维实体模型的不同,需要采取不同的模型方法。针对典型的模型,可直接调用典型模型数据库中的典型模型;用组合模型构建复杂三维建筑模型时,调用建筑模型数据库中*.3ds中的数据模型;对于简单的模型,可以Multipatch来构建,调用纹理数据库中的纹理图片,进行纹理贴图,可以建模逼真的三维场景中的实体。根据三维场景中三维实体的不同情况,调用不同模型库,起到快速建模三维场景的效果。三维场景快速建模流程如图2所示。

图2 三维场景快速建模流程

2.由二维矢量数据自动生成三维模型

在ArcGIS Engine中可以通过二维的点、线、面二维要素和坐标Z经过拉伸来建模三维场景中的三维模型。通过对Z坐标或要素属性字段值进行拉伸,点要素构成三维场景中垂直的线,线要素构成面,面要素构成块。而Multipatch对象,则通过该实体顶点在三维场景中X、Y、Z坐标值来构建三维实体各个面,再经过贴图来构建三维场景中的实体。以下是二维矢量数据如何生成三维模型的算法:

1)获取三维场景要拉伸的图层。

2)添加纹理,即定义地理要素图层对象并获取图层对象、创建要渲染的符号、创建要填充的纹理符号、从path变量中填充要填充纹理符号的纹理、设置要渲染的psimplerenderer的纹理符号。

3)对要渲染的地理要素图层对象pGeoFeature-Layer,设置为psimplerenderer并进行渲染。

4)设置矢量图层基准高,得到顶点空间坐标

式中,R为圆弧半径;α为圆弧上各顶点与原点连线到x轴的角度;ProLayer3D.Zfactor为使矢量数据拉伸到某一固定值的拉伸因子。

5)应用三维属性到ppLayer矢量图层,使图层具有三维显示效果。

3.由三维制作软件生成模型的导入方法

(1)典型单一模型和对象模型的重建方法

针对三维场景中的独立对象实体、典型标志性建筑、结构复杂而风格独特的建筑物,通过三维制作软件3ds Max制作独立的和典型的三维模型,包括相关纹理信息,一块导出为*.3ds文件,然后入库。在建立三维场景时,可以反复从建筑数据库中调用该模型,加载到SceneControl控件中,从而达到快速建模的目的。具体算法的基本流程如下:

1)创建一个新图层,然后把新图层添加到三维场景的SceneControl控件对象中。

2)设立一个点的新元素,该点就是三维模型要加载的位置。

3)利用IMarker3DSymbol创建一个接口对象,然后利用该对象方法CreateFromFile读取数据库中建筑物和独立对象的模型对象。

4)创建一个SceneControl控件容器对象,然后将该对象加载到在图层对应的容器中,起到动态加载三维场景的目的。

(2)利用模型库组合模型的建模方法

在三维场景构建中,非典型的建筑物具有相似的结构和纹理。针对这种情况,先建立一个可以组成这种三维场景中建筑物的基本实体单位,并将这样的单位实体入库。在建模这样的三维实体时,可直接调用模型库中的单位实体模型。通过组合建模方法,达到快速构建三维场景的目的。

具体算法的基本流程如下:

1)创建一个新图层,然后把新图层添加到三维场景的SceneControl控件对象中。

2)设定一个点的新元素,该点就是三维模型要加载的位置。

3)确定底层元素显示的Symbol和Geometry:

IPoint pt=new PointClass();

double longtitude=double.Parse(textBox1.Text);

double latitude=double.Parse(textBox2.Text);

pt.PutCoords(longtitude,latitude);

4)再分别确定中间层、顶层元素显示的Symbol和Geometry。

4.多片三维模型在三维场景的生成

对于结构简单的、规则的、逼真度要求不是很高的三维场景中的实体,可以通过对规则三维模型如长方体、正方体等进行贴图来表示现实世界中的三维实体。通过多片Multipatch制作规则实体的大致模型,模型的位置通过输入规则模型在平面的投影坐标和实体模型的长、宽、高3个参数来确定三维实体模型各个顶点的坐标,然后通过对三维实体模型的前面、后面、左面、右面、顶部进行纹理贴图来构造三维模型。

用Multipatch构建三维实体模型的基本算法如下:

1)指定纹理对象。

2)创建材质列表。

3)创建Multipatch第一面的各个顶点及其纹理顶点:

IPoint pPoint1=new PointClass();

pPoint1.X=x;

pPoint1.Y=y;

pPoint1.Z=0;

4)继续创建Multipatch其余面的各个顶点及其纹理顶点。

5)给各个顶点的坐标(X,Y,Z)赋值。

6)创建其余的纹理坐标顶点并赋值。

7)创建其余面的顶点及其纹理顶点并赋值。

8)给各个面的顶点指定顶点坐标和需要纹理贴图的各个顶点坐标:

IGeneralMultiPatchCreator PCreator=new GeneralMulti-PatchCreatorClass();

PCreator.Init(30,6,false,false,false,24,materialList);

PCreator.SetPatchType(0,esriPatchType.esriPatchTypeRing);

PCreator.SetPatchPointIndex(0,0);

PCreator.SetMaterialIndex(0,0);

PCreator.SetPatchTexturePointIndex(0,0);

PCreator.SetPoint(0,pPoint1);

利用规则几何体如正方体、立方体,对三维几何体的各个面进行贴图,利用Multipatch向三维场景添加几何体。

四、应用实例

随着石化能源产业的高速增长、石化产品运输量的不断增高,石化产品交通运输事故也日益增多。针对运输安全问题,笔者以ArcGIS Engine为工具,结合GIS、GPS、3G等技术,研发了基于GIS/GPS/3G的危险品运输车辆监控三维GIS系统。该系统提供了一个三维可视化平台,帮助用户从不同的角度来监控三维场景中的地物,并实时获取车辆的轨迹。

对危险品车辆的监控即实时跟踪车辆位置。GPS发送的经纬度存入数据库,系统需要从数据库实时解析GPS数据并显示在三维虚拟场景中,如图3所示的小圆点。根据圆点轨迹即可实时监控危险品车辆在三维场景中的行驶状况。

图3 实时显示车辆轨迹的三维场景效果

在车辆监控三维GIS系统的开发中充分运用了快速动态建模方法:

1)地形建模:地形表面主要由矢量数据生成的不规则三角网数据模型生成,为其他地物提供一个模拟表面。由于三维车辆监控场景的地形高程为0,地形场景模拟可以用卫星扫描的图片进行栅格配准。

2)复杂地物建模:对于典型而复杂的地表人工实体和独立对象,采用建模软件3ds Max来构建三维实体模型,然后转换为ArcGISEngine支持的格式来建模三维模型。

3)规则几何体建模:通过多片构建规则三维实体模型,然后对三维外表进行贴图,逼真构建三维场景中的对象实体。

五、结束语

本文提出了一种基于ArcGIS Engine的三维场景快速动态建模方法,该方法根据场景的地物分为点、线、面3类不同的特点,提出了联合拉伸、模型库、多片Multipatch等多种快速建模方法,从而实现了三维场景的快速生成和渲染。该方法的关键在于GIS组件技术的利用和基于数据库技术的对象、纹理等模型库的建立,它是快速建模三维场景的基础。为大规模开发三维可视化系统提供了一种新的思路。该方法成功应用于危险品运输车辆监控三维GIS的快速开发,有效地提高了开发效率,降低了劳动强度和开发成本。

本文主要侧重基于ArcGIS组件的三维建模和数据显示研究,下一步的工作是基于ArcGIS的空间分析工作。随着现代空间数据定位与分析的需要,三维快速建模技术的应用会越来越广泛,相信基于GIS组件技术和数据库技术的三维实体速建模方法会为其他行业三维GIS应用提供一定的借鉴和参考。

[1] 王金宏,朱军,尹灵芝,等.基于线性参照系统的虚拟高速铁路场景建模方法简述[J].地球信息科学学报,2014,16(1):23-30.

[2] TANG A Y,ADAMST M,USERY E L.A Spatial Data Model Design for Feature-based Geographical Information Systems[J].IJGIS,1996,10(5):643-659.

[3] ROYAN J.Network-based Visualization of 3DLandscapes and City Models[J].IEEE Computer Graphics and Applications,2007,27(6):70-79.

[4] SUN W T,LI Q,QIAN B.Track Simulation of Flexible Roll Forming Based on VC++and OpenGL[J].Advanced Materials Research,2012,457-458:304-307.

[5] ZHOU X N.3D Campus Simulation Based on Vega and Creator[C]∥2010 International Conference on Computer and Communication Technologies in Agriculture Engineering,2010,3(12-13):512-514.

[6] 张文元,付仲良.基于ArcGISEngine的综合管线三维可视化研究[J].测绘通报,2008(8):28-31.

[7] TIAN X.Quick 3D Modeling of Machining Environment by Means of On-machine Stereo Vision with Digital Decomposition[J].CIRP Annals-Manufacturing Technology,2007,56(1):411-414.

[8] 何垂杰,邓克裹,袁怀月.基于ArcGIS Engine的工业厂区快速三维建模与可视化[C]∥现代空间定位技术应用研讨交流会论文集.广州:中国测绘学会,2007:264-274.

[9] 高睿,刘修国,熊威.城市三维景观可视化研究与应用[J].计算机应用研究,2005,22(3):160-164.

[10] 刘玉春.应急指挥信息系统中三维模型快速构建方法研究[J].测绘科学,2008,33(S1):117-119.

[11] 邓非,张祖勋,张剑清.基于序列影像的城市三维建模[J].计算机工程,2007,33(8):208-210.

猜你喜欢
模型库图层顶点
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
基于Creo参数化建模的设备模型库建立方法
为《飞舞的空竹龙》加动感
解密照片合成利器图层混合模式
Pro/E的三维往复压缩机参数化模型库的建立
基于模型库的现代成本会计计量系统研究
复杂圆柱壳结构参数化建模方法及模型库设计
用Photoshop图层技术制作精美邮票
数学问答