李想 ,李海亭,刘扬,张春奎
(1.中国人民解放军61363部队,陕西西安 710054;2.武汉市测绘研究院,湖北武汉 430022;
3.西安市勘察测绘院,陕西西安 710054)
随着地理信息技术的发展,GIS研究的重点已由二维向三维转变,城市三维GIS建设日益受到重视,目前很多城市都在建设本区域的三维GIS系统。三维景观数据制作是三维GIS建设的基础性工作,它包括区域内的三维建筑模型、道路及附属设施模型、植被模型、水系模型和地形模型等,通过其坐标位置和相互关系在三维GIS平台下整合成城市三维景观。
目前,比较流行的制作三维景观数据的软件有3ds Max、Goole Sketchup、Maya、MultiGen Creator等,采用的方法有基于高分辨率影像的、基于大比例尺二维地形图数据的、基于实测数据的。对于构建一个形象逼真的大规模虚拟城市模型遇到的问题是真实地形纹理获取困难、成本高及建模工作量巨大等。而Sketchup作为一款方便易用的三维建模软,在处理建筑物数目巨大的三维建模工程时,能够有效提高建模速度和建模质量,避免同类设计制作软件的复杂性,提高建模工作效率。大比例尺的二维地形图数据具有精度高、要素全等特点,能够完全满足模型平面精度要求。下面就以Sketchup为三维建模工具,以大比例尺地形图为数据来源,介绍城市建筑三维模型制作过程中的关键技术环节及方法。
Sketchup软件是美国Google公司推出的一套三维建筑物建模的工具。它以独特简洁的界面、简便快捷的点、线、平/曲面构建工具、强大丰富的资源等特点深受建筑物建模者的喜爱。其在处理建筑物数目巨大的三维建模工程时,能够有效地提高建模速度和建模质量。同时,Sketchup避免了同类软件(如:3ds Max)的复杂性,具有易操作的贴图系统,能够提高建模工作的效率,而且能够真实地表现建筑模型的质感,使模型更加美观。Shetchup支持DXF、DWG、JPG、TIF、3DS 等格式文件的输入,3DS(三维交换模型文件格式)、Collada dae、Google Earth kmz、DXF等格式文件的输出,能够方便与其他三维软件格式交换,提高模型的共享效率。
基于SketchUp,利用大比例尺地形图数据制作大区域三维建筑模型可分为数据准备和模型制作两部分,每一部分又包括若干关键步骤。其总体技术路线如图1所示。
本文探讨的是利用大比例尺地形图数据作为源数据来制作建筑模型方法,因此地形图数据的处理是制作建筑模型的前提性工作。地形图数据处理包括建筑要素提取、建筑物图形构面和格式转换三个方面。
要素提取:通常情况下,大比例尺地形图数据是以分幅形式存在的电子文件数据,一幅地形图数据除了包含有建筑物要素外,还包括地貌、植被、道路及附属设施、水系、围墙、管线等要素,为了获取独立建筑物要素,需要对建模区域内的地形图进行预处理,即:删除其他要素,保留建筑要素。而对于存在于基础地理信息数据库中的地形图数据,可通过分层提取的方式单独提取建筑物要素层,获得建模区域内的建筑物数据。
图1 总体技术路线
图形构面:二维建筑物图形理论上应是面状要素,但在实际成图过程中往往会出现缝隙或断点现象。为了减少Sketchup环境下建筑物底部构面的工作量和手工构面引起的误差,应对提取的建筑物要素在图形软件平台下重新自动批量构面,保证建筑物底部的面状特征。
格式转换:Sketchup软件支持dwg、dxf格式数据的导入。对于提供的建筑物数据由于平台不同其数据格式不同,为了保证数据的通用性,将提取并构面好的建筑物数据转换为通用的DXF格式数据。
高度信息是建筑物三维模型建模的一个重要参数。建筑物高度可通过以下5种方式获取:
(1)通过二维矢量图上建筑物的层数乘以楼层高(如 3 m)来提取,该种获取方法简单、速度快,但精度低,屋顶结构难以获取,特别对于以商铺为主的建筑误差很大。该种方法适合住宅建筑的高度获取。
(2)通过算法利用高分辨率影像的阴影来获取建筑物的高度。
(3)运用机载激光扫描仪与遥感影像相结合来提取建筑的高度。该方法获取速度快,但后续处理工作量大,所需费用大。
(4)对于有条件的城市测绘院来说,可利用竣工资料来获取建筑物的高度。该种方法获取的高度信息精度高,屋顶结构能够如实表现,但对于一般的用户来说资料获取困难,难以大面积应用。
(5)通过算法利用大比例尺航测三维地图数据批量生成建筑物的高度信息。采用该种方法获取的高度值精度高、获取速度快,省时、省力,适合利用航空影像更新城市大比例尺地形图的城市测绘单位。
建筑物的纹理数据主要包括楼顶纹理和侧面纹理。楼顶纹理可利用影像截图获取;侧面纹理则需要用数码相机来拍摄获取,拍摄的相片往往还要在相应的图形编辑软件(如photoshop)中进行几何纠正处理及色彩调整等。为了减少三维模型数据存储量及拍摄工作量,对于不需要表达真实纹理的建筑物或景观,可选用Shetchup中的纹理与材质进行渲染,或用颜色进行表达,还可以自己创建材质。
以Sketchup 7为例,在Sketchup下制作三维建筑模型的步骤主要包括:DXF导入前Sketchup参数设置、DXF数据导入、建筑物分层、建筑物模型制作、纹理制作与贴图、模型导出等几个步骤。
为了保证制作模型的尺寸与导入的DXF数据尺寸一致,在导入DXF之前需要对Sketchup的模板单位进行设置。本实验中使用的DXF数据的单位为m,因此模板的单位也设置为m。
在Sketchup模版参数设置完毕后,即可将转换好的DXF格式的建筑数据通过Sketchup本身的导入功能,导入到模版环境中。在导入的同时,需要对导入选项单位进行设置,以保证导入的数据尺寸单位与模版环境的单位一致。
在DXF数据导入之后,如果DXF数据本身带有多余的空层名称,则在图层列表中将空层名称删除,并将DXF数据移到默认的Layer0层中。对于只包含一个建筑物图形的DXF文件,不需要分层;如果DXF数据文件中包含多个建筑物图形,则最好针对每一个建筑图形建立一个图层,并将其移到该图层下,其目的是为了建模时避免其他建筑模型的影响,方便建模。建筑物分层步骤如下:
(1)建立新图层,根据建筑物编号命名图层名;
(2)选取相应独立建筑物的边线,将其移动到该图层下。
经过分层后的数据,每一层中包含一栋完整的建筑底面边线,且该底面边线应是闭合的多边形。如果该多边形在显示上没有形成一个面,则可以用“线”工具连接任意相邻的两点,则该多边形会自动形成一个面,并填充默认颜色(一般为白色)。在自动形成一个面后,通常情况下上面显示为灰色,表明上面为反面,在做模型前应利用“将面翻转”命令将该面翻转,使正面朝上。其目的是保证建筑模型的外面都为正面,防止模型导入其他三维软件后,出现镂空现象。
在建筑底面构面成功并进行翻转处理后,选中底面,利用“推/拉”工具,向上拉伸一定高度(拉伸的精确高度值可通过在界面右下侧的数据框中输入),形成裸模(即:没有贴图的模型)。这时建筑的主体裸模就搭建好了。对于建筑物的其他主要结构如:窗户、阳台、女儿墙等,利用“矩形”或“线”工具在裸模的外表面划定相应的范围,选中该范围,同样利用“推/拉”工具,可做出相应的结构。这种制作建筑主要结构的方法主要用于规划设计中的建筑物的精细建模,对于三维GIS中的三维建模,因精度要求相对较低,模型的数据量尽量小,因此一般不采用上述的结构构建方法。
用于三维GIS的三维建筑模型主要结构的制作因结构不同,方法也不同。
①窗户:建筑物的窗户一般是有规律的排列,而且窗户的凹陷深度一般在 0.2 m左右,完全在建模的精度要求内。因此,窗户的结构表现一般采用窗户纹理循环贴图来表示,不再重新做窗户结构。
②阳台:对于落地阳台,其包含在主体裸模内;对于悬空阳台,根据尺寸在相应的外墙面位置,画定范围,利用“推/拉”工具做出。
③女儿墙:选中模型上表面,点击“偏移复制”工具,向表面内部偏移,偏移距离可在界面右下角的文本框中输入。然后选中内部面,利用“推/拉”工具,向下推出女儿墙的高度;或者选中外部面,利用“推/拉”工具,向上拉出女儿墙的高度;最终形成具有一定高度的女儿墙。
墙面纹理制作主要是对拍摄的建筑物外立面照片,在Photoshop下进行加工处理,获得色调一致、结构完整、干净整洁的墙面纹理图片。纹理图片长宽的像素数要求为2的n次方,一般最大不超过1 024。墙面纹理的制作与贴图方法是紧密相关的。在满足纹理清晰度的情况下,贴图的方法应尽量遵循模型数据量最小原则。因此,在墙面贴图时尽量选用重复的图片,以减小模型的大小。这就要求在制作纹理前,首先分析墙面的纹理结构,将纹理结构分类;然后针对于每一类,按照尺寸大小制作相应分辨率的图片。在贴图时对于上下结构及纹理一致的墙面,用一张图片重复贴图。如果贴图墙面的宽度不同,纹理一致,则可通过贴图面的“位置→指针“工具来调整图片的宽度和高度。
对于纹理的命名,为保证命名的规范性,命名方式应按照纹理名称与建筑编号相关联,同时保证命名不重复的原则进行。如建筑编号为10001,则纹理的名称可为 10001001、10001002、…。
Sketchup下的贴图流程如下:
①选择要贴图的面;
②创建材质并给材质命名,选择图像文件并设置图像文件的长宽尺寸;
③选中贴图面,通过贴图纹理的“拖曳指针”将纹理移动到合适位置,完成该面的纹理贴图。
Sketchup支持多种导出模型格式,如3ds、kmz、dae、obj等格式。其中,3ds为通用的三维模型中间转换格式,应用最广。在导出3ds模型时需要进行相关的设置:
(1)导出贴图:使导出的模型都具有纹理信息,在以后的编辑与展示过程中,都需要将3ds文件和它对应的贴图文件放在统一目录下,这样才能避免纹理的丢失。
(2)相机导出设置:在Sketchup环境下制作模型,软件本身默认有一相机作为参照,但在其他软件下不需要该相机。因此,在导出模型时不需要导出相机。
(3)导出比例:如果在模型制作前,已设置了模型单位,则按照默认单位导出;如果没有设置,则导出时可设置合适的模型单位。
(4)导出模式:如果一个Sketchup模型文件包含多个模型,导出时分建筑分别导出或按选择建筑导出,则需要在导出选项设置中,选择single object和Export only current selection选项。
以西安市某一建成小区为例,基于二维大比例尺地形图数据和建筑物高度数据,在Sketchup环境下制作了该小区内的三维建筑模型,如图2所示。
图2 某小区的三维建筑模型
Sketchup作为一款易学易用的三维建模软件,有着其他建模软件无法比拟的优点,特别在城市建筑三维建模中能够大大提高工作效率,缩短城市三维GIS数据的生产周期。而采用城市大比例尺地形图作为三维建模的数据来源,能够保证模型的平面精度要求,满足城市管理和规划部门对城市三维GIS应用需求。通过实验证明,采用Skethcup建模工具和大比例尺地形图数据快速生产三维模型数据的技术方法具有很强的可行性。
[1]范明华,杜甘霖,任家勇.Sketchup大区域三维建模技术研究[J].测绘通报,2012(5):56~58.
[2]许捍卫,房晓亮,任家勇等.基于Sketchup的城市三维建模技术[J].测绘科学,2011,36(1):213~214,P189.
[3]黄铭,肖明虹.基于Sketchup和ArcGIS的城市3维建模技术研究[J].测绘与空间地理信息,2012,35(8):151~154.
[4]张春奎,李想,许由田等.利用3维DLG数据获取建筑高度的方法[J].测绘与空间地理信息,2012,35(18):115~117,P121.
[5]武萍.Sketchup建筑模型制作[N].中华建筑报,2008,3(011).