三维地形实体模型自动建模技术研究 | ![]() |
三维地形模型的制作主要有利用三维建模软件手工建模、利用DEM+DOM自动建模、利用倾斜摄影技术自动建模等方法。利用三维建模软件手工建模需投入大量人力、物力,建模效率极为低下,同时对作业人员要求较高,需熟练使用常用的三维建模软件及图像处理软件;由DEM+DOM和倾斜摄影技术制作的三维地形,纹理带有车辆、树冠等各种噪声,视觉效果不好,且三维模型是一个整体, 无法对地形按类别管理,对数据更新带来极大不便。在国内,一些学者研究了三维道路、三维建筑等方面的自动建模技术,如汤文生等[1]针对纬地、Card1等公路设计软件的设计资料,利用第三方三维GIS平台形成一套公路3D建模的解决方案;王伟等[2]通过将道路横纵断面形成一系列模板,由用户实时在三维场景里进行交互,动态创建与地形相适应的三维道路模型;周玲[3]主要研究利用CityEngine平台利用一定的规则对道路、建筑进行参数化建模;余伟等[4]提出了一种不规则河道内流动水体仿真方法;宋仁波[5]从手工绘制地质模型角度提出一种利用ArcGIS和SketchUp的三维地层模型绘制方法;韩丽娜等[6]提出了一种融合地面激光扫描和摄影测量技术的三维重建方法;尹晖等[7]研究了基于SketchUp进行输电杆塔、绝缘子、金具三维建模的实现过程;韩东亮等[8]针对近景普通数码影像,应用数字近景摄影测量方法基于VirtuoZo数字摄影测量工作站进行边坡三维模型建立。这些研究不适用于现状基础地形图数据,需针对现状地形图系统数据的特性研究出相应的自动建模方案。为了解决自动建模视觉效果差与手工建模效率低下的矛盾,通过对1:2 000系统数据进行分析与研究,得到一种三维地形实体模型自动建模的解决方案,能利用二维GIS数据快速自动生成三维地形实体模型,易于实现数据制作与更新。
1 关键技术由GDAL (geospatial data abstraction library) 访问1:2 000地形图SHP数据,获取道路、绿化、水系、街区、建筑底座等图层的几何空间信息,设计几何建模算法。由OSG (open scene graph) 三维引擎生成各图层的空间位置,利用纹理映射技术将纹理库中的纹理图片与几何实体按一定映射方案进行对应,自动设置三维模型纹理坐标,得到Z值为常数的各层三维模型,将这些三维模型与DEM进行贴合,得到地表高低起伏的真实三维地形实体模型,技术方案如图 1所示。
![]() |
图 1 三维地形自动建模技术方案 Figure 1 3D Terrain Automatic Modeling Program |
1.1 GDAL
GDAL是一个操作各种栅格地理数据库格式的库。它是一个在MIT许可协议下的开源栅格空间数据转换库,利用抽象数据模型来表达所支持的各种文件格式。除此之外,它还包含了操作矢量数据的OGR库, 一般将两个库合称为GDAL/OGR, 或简称为GDAL。由于GDAL的开源性,可以方便地获取其源码,编译成动态链接库,不受限制地使用其强大的GIS数据访问功能,而不必借助于昂贵的商业GIS软件。1:2 000地形图系统数据以SHP格式存在,OGR库可以方便地读写SHP数据的几何和属性信息。DEM数据可以转换为GDAL支持的栅格格式,借助GDAL访问各个格网点的高程,为三维地形实体模型提供高程基准。
1.2 OSGOSG是近年来流行的开源三维渲染引擎之一,采用标准C++、OpenGL编写,是一个开放源码、跨平台的图形开发包。它可以作为免费的三方库为应用软件提供各种高级渲染特性、IO以及空间结构组织函数。OSG关键优势在于它的高性能、可扩展性、可移植性和快速开发。OSG具有强大的开发维护团队,模块设计合理,功能接近商业三维引擎,易于创建高性能、跨平台的交互式图形程序。开发人员可以更关心实质性内容和如何操控它们,而不再是底层的代码,很容易适应OSG并且把它集成到自己的应用程序中[9]。OSG既是三维渲染平台,也具有三维建模功能。OSG和GDAL都采用C++开发,二者有相同语言架构,能完美结合。利用GDAL获取的三维地形几何信息,在OSG引擎中实现几何建模算法,由纹理映射方案自动设置模型纹理坐标,使得三维地形的几何信息与纹理信息合理结合,得到与地形图SHP数据几何精度一致且符合视觉效果的三维地形实体模型。三维地形模型的格式为OSG支持的ive二进制文件格式。
1.3 纹理映射技术道路、绿地、街区等图形大多呈现出不规则性,如何将纹理库中的纹理贴到模型相应位置是个重要的过程,关系着模型的美观,是否与现实相符。因而,需要运用纹理映射技术制定一种纹理映射方案,满足不同种类模型的纹理贴图需求。
为三维模型添加正确的纹理,能提高模型视觉效果。如何才能保证添加正确的纹理,就是纹理映射研究的内容。通过建立纹理空间与景物空间之间的映射关系来实现纹理映射。纹理映射是为了正确设置模型纹理坐标,将二维图片映射到三维坐标空间需建立二者的映射关系,如
$\left( {u,v} \right) = F\left( {x,y,z} \right)$ | (1) |
式中, u、v表示纹理坐标;x、y、z表示模型空间坐标。
通常由纹理平面至三维模型表面的映射是一种非线性映射,在曲面上曲率变化较大的区域可能发生纹理的非均匀变形,导致不真实的视觉效果。对于由多个曲面拼接而成的三维模型表面进行二维纹理映射时,很难保证相邻曲面片间纹理的连续性。先生成高程为常数的三维模型,可以较好地实现几何空间到纹理空间的映射,当模型经过DEM处理后,可较好地控制相邻曲面间纹理的连续性问题。制定纹理映射方案,由程序自动纹理贴图,解放了人工建模繁琐的纹理贴图过程。
2 三维地形实体模型数据处理与建模为了实现自动建模,需将1:2 000系统数据进行预处理,转换成程序能识别的数据类型。数据预处理主要涉及DEM生成、道路、建筑底座、绿化、水系、街区等图层。数据预处理过程是数据接口转换的过程和关系三维模型生成质量的重要步骤。数据接口转换完成后,即可实现一键式各图层模型自动建模。
2.1 DEM生成传统手工建模的三维道路、绿化等模型都是给定固定高程的模型,并不能实际反映地面的起伏。在地形图外业测量中,按地形图测量规范采集了一定密度的高程点数据,可以构建TIN来生产DEM模型。TIN数据可以转换为GDAL库支持的IMG格式的栅格数据,如图 2所示,便于程序自动访问高程数据。
![]() |
图 2 DEM栅格数据 Figure 2 DEM Raster Data |
当存在陡坎、直立护坡等情况下,高程变化不连续,生成的三维模型会出现高程方向跳跃现象,为此,需将高程变化突兀的区域提取出来,对其中涉及的图层进行一定边长的格网切割,使高程变化更加平滑,格网边长的选取一般与高差变化量反相关。
2.2 道路数据处理道路是城市的交通纽带,是城市地形中重要的部分。道路数据处理流程如下:
1) 道路中心线层规范化。原始道路中心线层普遍存在中心线在交点处未打断的问题,需进行处理,提高数据读取效率。
2) 道路类型分类。道路类型分为主要道路、内部道路等,不同的道路类型通过属性字段进行标识,不同的道路类型对应着纹理库中不同的纹理图片。道路中心线是有方向的矢量线段,沿中心线方向道路左右两侧可能车道数不一致,道路纹理类型字段属性应按中心线走向进行命名。
3) 道路面层合并。在外业测量中,为了作业方便,需按不同的分区面进行测量,而分区面往往会破坏道路面层的完整性,跨分区面的数据往往被分割成两个以上的道路面,需对这些道路面进行合并,便于道路纹理自动映射。
4) 对道路面进行节点加密。道路面数据在外业测量时,主要在平面特征点处采特征点进行构面,没有考虑到高程起伏。为了能更真实表达道路模型的高程属性,通过节点加密,可以使得道路模型更加平滑。城市里的道路起伏不是很明显,因而对道路面节点加密仅在对道路起伏较大且节点太稀疏的道路面进行,一般区域不加密也能满足要求。城市里的道路一般都较为平坦,通过边界节点加密能很好地控制住道路的高程走势,与实际相符。
5) 在交叉口处对各个道路面进行切割。规则道路可以容易进行自动纹理贴图,因此将道路面在交叉口处切割,得到道路交叉口和规则道路。利用程序可以自动寻找切割位置,思路如下:对每一段道路从首尾两端向中心搜索,以垂直于道路中心线方向的线段与道路面数据求交,当相交部分的长度变化小于一定阈值时,寻找到切割位置。
6) 切割后的规则道路面与道路中心线做相交分析。规则道路建模需要几何数据一一对应的道路面层和线层,通过二者相交分析实现。
7) 斑马线位置生成。根据切割后的道路中心线,利用GDAL自动推算与道路路宽相适应的斑马线数据。
8) 交叉口数据与斑马线做拓扑处理。程序自动推算的斑马线数据完全落在道路交叉口面内,二者直接生成三维模型时,会造成三维模型Z-Fighting现象,因此需将交叉口与斑马线做拓扑求差运算。
2.3 建筑底座生成在实际中,建筑底面是水平的,手工制作的三维建筑模型底座也是水平的。由建筑边界根据DEM计算得到边界节点的高程并非处处相等,有些还相差很大,是不规则曲面,为了与手工建模的建筑模型相结合,需将建筑底座顶面处理成水平的,同时又与周边地形模型相融合。处理流程如下:
1) 由居民地设施层挑选出房屋数据;
2) 计算每个建筑底座节点高程,获取高程最高值与最低值,高程最高值即是建筑底座顶面高程;
3) 由建模引擎得到与周围地物无缝拼接且顶面水面的建筑底座模型。
手工制作的建筑模型高程的确定本质上是建筑模型最低点的高程确定。由三维建筑模型边界内部任意点与建筑底座模型在三维场景内做射线求交,可得到建筑模型最低点高程。建筑底座顶面正好是建筑模型的底面,二者可无缝叠加。建筑底座顶面高程与建筑模型的最小Z值的差值就是建筑模型需抬高的高度。建筑模型需整体抬升,并不需要对所有顶点数据分别处理,以OSG平台为例,只需对每个建筑物添加osg∷MatrixTransform节点,以之前求得的建筑最低点高程构造平移矩阵,即可将手工制作的建筑模型由程序自动放置到建筑底座顶面,实现无缝拼接。
2.4 绿化数据处理绿化数据来源于植被土质层,主要分为草地和树木。
1) 获取绿化侧边石和草地面数据。由植被土质边界往边界内部方向按一定狭长距离做缓冲区,得到实际草地范围,原始植被土质面与实际草地范围叠加求差分析可得到花坛外沿如图 3所示,分别赋予草地和侧边石的纹理。
![]() |
图 3 由植被土质数据得到实际草地和花坛边石 Figure 3 Real Grassland and Side Stone Obtained by Vegetation Soil Data |
2) 确定树木位置。将行树线层按一定间隔进行节点内插,线层转为点层得到树木位置。树木点位坐标经高程处理可得到树木根部正确的高程信息。对每棵树木高度设定随机值,可解决所有树木统一高度看起来机械不美观的缺陷。
3) 植被库建立。植被库中有几十种常用的植被,不同ID代表不同树种,由树木配置文件在三维平台中自动建模,可满足一般植被建模需求。
2.5 水系数据处理水系数据处理与绿化数据类似。主要处理流程如下:
1) 水池分类。地形图系统数据中将水系分为高于地面和低于地面两种类型,在几何建模算法上有细微差别。
2) 水系实际范围与水池池台获取。由原始水面通过缓冲区分析、求差分析获得。
3) 在建模引擎中利用着色语言,可以为水面添加动态波纹效果,增强三维模型特效。
2.6 街区数据生成将地形图中除去道路、绿化、水系、居民地之后剩余的硬化地表称为街区数据。街区数据由测量分区面与道路、绿化、水系、居民地之间拓扑求差得到。
2.7 三维地形实体模型自动建模通过数据接口转换,得到符合三维地形实体模型自动建模引擎支持的数据类型,即可一键式自动建模。程序内部按照几何建模、纹理映射、高程处理的流程进行自动建模。
通过GDAL可以程序访问道路、绿化、水系、街区等图层的几何信息,由OSG引擎的多边形几何绘制技术可以自动生成Z值为常数的三维实体模型。
纹理映射的过程本质就是确定三维模型各顶点的纹理坐标的过程。对有行车导向和分隔线的道路、斑马线等线性实体,可近似为一定边长的矩形来设定纹理坐标,而其他非线性而又有纹理重复特征的图层按一定边长和旋转角重复设定纹理坐标。纹理坐标由程序根据以上纹理映射思路自动计算,不需人工干预,解放了手工贴纹理的繁琐过程。
建模过程中用到的纹理照片通过纹理库来管理。在建模程序中,不同的纹理以属性字段进行区分。建模程序可以自动搜索纹理库所在物理位置,由纹理字段与纹理库中照片一一映射。纹理照片有一定的命名规则,如LHD表示绿化带,RXD表示人行道,CXD_2_2表示双向二车道等。添加新的纹理照片时,仅需将纹理照片拷贝到纹理库目录下,不需修改建模代码,易于扩展纹理库,满足不同纹理精细程度的需求。
DEM数据坐标系统与道路、水系等图层一致。根据坐标信息可以自动获取各个模型顶点的高程值。由技术方案可知,模型高程处理前得到的三维模型以Z=0为垂直参考面,将三维模型各顶点Z值加上其对应的高程值,即可得到真实的三维地形实体模型。
3 实例分析以1 km2左右范围内地形图SHP系统数据为实验,通过对高程点、道路、绿化、水系、建筑底座、街区数据按自动建模的数据接口进行处理,由OSG三维引擎按设计的几何建模算法和纹理映射方案自动生成按图层划分的三维地形实体模型,模型生成速率较快,见表 1。由于采用了纹理库技术,三维模型中存在多个模型共用相同纹理的情况,通过纹理拆分程序对模型进行处理,可以极大程度压缩三维模型占用的磁盘空间,见表 2,大大提高三维平台运行效率。生成的三维实体模型以OSG原生态支持的ive格式保存,且ive格式能与3DS MA进行格式转换,模型适用性较好。自动生成的三维实体模型带有高程属性,能真实反映地表起伏,模型效果与手工建模效果接近,见图 4、图 5。
表 1 三维实体模型自动建模效率 Table 1 Automatic Modeling Efficiency of 3D Solid Model |
![]() |
表 2 自动生成的模型处理前后占用空间比较 Table 2 Size Comparison Before and After Texture Processing |
![]() |
![]() |
图 4 自动建模生成的道路、绿化、水系、建筑底座等模型 Figure 4 Road, Green, Water, Building Bottom Models Generated by Automatic Modeling |
![]() |
图 5 道路、绿化、水系、街区、建筑底座与手工建模建筑相叠效果 Figure 5 Overlay Effect of Roads, Green, Water, Streets, Building Bottom Models with Buildings Made by Manual Modeling |
4 结束语
依据1:2 000地形图系统数据,利用GDAL自动获取道路、绿化、水系、建筑底座、街区等几何位置信息,依据纹理映射方案,自动实现模型纹理贴图,在OSG三维引擎中先生成Z为常数的三维模型,再经过模型DEM处理,得到与地形图一致、几何精度和拓扑关系一致的真三维地形模型。三维地形自建模速率较快,经纹理拆分后三维地形实体模型占用磁盘空间小。三维模型视觉效果与手工建模效果接近,可以大大提高三维建模的效率,降低三维建模的难度,极大程度地节约成本,不熟悉3DSMAX、SketchUp等建模软件也能简单快速制作三维模型[10],实现三维地形建模由手工到半自动到全自动化模式转变,为三维地形实体模型制作与更新提供强有力的支持。人工地貌与DEM的结合、数据预处理流程优化、建筑模型自动建模是后续研究的内容。
[1] | 汤文生, 刘连战, 吴剑, 等. 公路3D参数化自动建模技术研究[J]. 中外公路, 2012, 32(1): 279–283 |
[2] | 王伟, 占伟伟, 王超, 等. 一种利用模板的三维道路动态建模方法[J]. 武汉大学学报·信息科学版, 2013, 38(9): 1092–1096 |
[3] |
周玲. 基于参数化技术的数字城市三维建模方法[D]. 杭州: 浙江大学, 2013 |
[4] | 余伟, 王伟, 蒲慧龙, 等. 河道流动水体三维仿真方法研究[J]. 测绘通报, 2015, (9): 39–43 |
[5] | 宋仁波. 基于GIS耦合SketchUp技术的三维地层模型绘制方法[J]. 测绘地理信息, 2014, 39(1): 54–56 |
[6] | 韩丽娜, 李缘廷. 融合地面激光扫描和摄影测量技术的三维重建[J]. 测绘地理信息, 2015, 40(3): 10–12 |
[7] | 尹晖, 孙梦婷, 干喆渊, 等. 基于SketchUp的输电杆塔三维建模研究[J]. 测绘通报, 2015, (4): 34–37 |
[8] | 韩东亮, 黄润秋, 王凤艳. 基于VirtuoZo的近景普通数码影像的三维建模[J]. 测绘通报, 2014, (11): 21–24 |
[9] | 王锐, 钱学雷. Open Scene Graph三维渲染引擎设计与实践[M]. 北京: 清华大学出版社, 2009 |
[10] | 万宝林. 3DSMAX与SketchUp的三维城市建模技术实验对比分析[J]. 测绘地理信息, 2015, 40(2): 23–25 |