APP下载

基于City Engine 的村镇规划三维情景自动化建模途径探索

2016-03-04姚熠暘金伟祖

电脑知识与技术 2015年36期

姚熠暘 金伟祖

摘要:村镇建设是我国社会经济发展重要组成,但村镇规划具有规模小成本约束强特点,因此传统的基于图纸和专业三维建模型的城市规划不适合村镇规划。CityEngine是专业三维规划软件,可以直接利用GIS数据快速创建三维规划场景。该文提出一种基于City Engine的村镇规划三维情景自动化建模方式,它包括数据规则建立和自动化脚本编写两个环节。实验表明,该方法可以快速而且低成本,对村镇规划中的建筑群体和自然景观进行三维建模,对项目构成了很好的支持。

关键词:村镇规划; 三维情景; CityEngine; 自动化建模

中途分类号:TP317.1 文献标志码:A 文章编号:1009-3044(2015)36-0118-03

Abstract: Village planning is an important component of our social and economic development , village planning has strong constraint in cost. Tradition planning based on drawings and three-dimensional construction model is not suitable. CityEngine is a professional 3D planning software , you can directly use GIS data to quickly create a three-dimensional planning scenario. This paper presents a way of three-dimensional auto modeling based on City Engine, which includes data building and auto scripting rules establish. Experiments show that the method can be quickly and at low cost , the project constitutes a good support for village planning.

Key words: village planning; three-dimensional; City Engine; auto modeling

本文所涉及项目为国家十二五支撑项目《乡镇区域空间规划与集约发展关键技术研究项目》的乡镇区域集约发展决策支持系统开发课题下的子课题乡镇区域发展情景模拟仿真技术研究. 该课题承担单位为同济大学. 课题参与单位有北京大学, 中国科学院地理科学与资源研究所, 江苏省城市规划设计研究院, 浙江省城市规划设计研究院.

三维模型能够给人以强烈的视觉刺激,带来强烈的沉浸感,并且真实的还原物体的原貌。 由于这些特点,三维建模现在被频繁地使用于城镇规划项目中。但是,精细逼真的三维模型往往需要长时间去实现,与城镇规划项目高效的需求相矛盾。如何高效,高质量地完成三维建模就成了关键。本文具体分析了现有的三维建模方法,并分析了他们各自的优劣,特点。最终提出一种基于规则三维建模的自动化解决方案。并提出了该解决方案的实现步骤。

City Engine是三维规划建模专业软件,应用于数字城市、城市规划、轨道交通、电力、管线、建筑、国防、仿真、游戏开发和电影制作等领域。City Engine可以利用GIS数据快速创建三维场景,并能高效的进行规划设计。而且对ArcGIS的完美支持,使很多已有的基础GIS数据不需转换即可迅速实现三维建模,减少了系统再投资的成本,也缩短了三维GIS系统的建设周期。

1 村镇化规划建模

1.1 研究背景

国家科技支撑计划课题,“村镇区域集约发展决策支持系统开发”是“村镇区域空间规划与集约发展关键技术研究”的项目课题。课题研究的总体目标是开发适用于不同村镇区域发展模式的集约发展适用技术,为分类指导不同城镇化程度和发育阶段的村镇集约发展提供技术支撑等。研发村镇区域空间布局优化过程情景模拟仿真技术。

项目已完成基于GIS的村镇区域空间规划的可视化支持工具。主要功能有两项,

1)规划选址。目标是找出最适宜的地块。依据村镇发展现有模式,输入不同条件,构造不同的规划情景。首先在规划目标区域内,分割成多个单元网格;其次,按照约束条件,将不符合条件的单元网格排除;再次,对余下的单元网格按照评价准则进行适宜性评价;最后,从评价最高的网格中确定最终的目标地块。

2)空间规划。目标是对规划选址的目标进行空间规划,按照设定的生态和居住空间,按照设定的村民建筑体进行空间自动化布局。

1.2 三维快速建模

规划选址和空间规划步骤完成后,需进行三维仿真场景的模型展示。在村镇规划的前提下,对模型展示有成本低,建模快的要求。目前在规划过程中常见的模型展示方法有:

1) ArcScene[1]。ArcScene是一种3D查看器,非常适合生成允许导航的3D要素和栅格数据并与之交互的透视图场景。ArcScene基于OpenGL,支持复杂的3D线符号系统以及纹理制图。其本身是与ArcGis同系列产品,因此能够直接使用规划生成的结果,并快速完成建模。然而,其建模场景简陋,模型对象粗糙,缺少与人的交互性。因此不适合直接用于模型展示。

2)三维建模软件,如Maya,3ds Max等。这类软件能够建立十分精细的模型,真实还原规划场景,在规划结果的展示上有很好的表现。然而,这类软件有建模成本高,建模速度慢的问题,在条件受制约的实际使用场景中,往往不能带来最好的效果。

3)City Engine软件。City Engine软件是三维城市建模的首选软件。它可以利用二维数据快速创建三维场景,并且对ArcGIS完美支持。并且,它使用基于规则的三维建模方法,在保证了场景逼真的基础上,还能够大大降低建模时间和成本。

使用City Engine软件对规划结果场景进行三维建模,既能保证建模质量,又能保证建模成本低,建模速度快,是当前村镇规划中主要的选择。本文也将基于该软件进行研究分析,并提出一个优化的自动化解决方案。

1.3 Shape file简介

Shape file文件是一种描述空间数据的几何和属性特征的非拓扑实体矢量数据结构的格式[2]。通常一个Shape file至少包含以下三个文件:

1)主文件。存储地理要素的几何图形的文件。

2) 索引文件。存储要素与属性信息索引的文件。

3) dBase表文件。存储要素信息属性的dBase文件。

2 三维建模

2.1 三维建模方法概述

2.1.1 基于多边形的三维建模

基于多边形的三维建模是目前在建筑方面十分流行的建模方法之一。它将一个对象转化为可编辑的多边形对象,然后通过对该多边形对象的各种子对象进行编辑和修改实现建模过程。对于可编辑多边形对象,它包含节点,边界,边界环,多边形面,元素,5种子对象模式[3]。通常使用软件进行建模,目前流行的软件有May,3ds max等。

它的优势在于创建复杂表面时,细节可以任意加线,因此能够尽可能好的还原物体本身,在城镇规划中可以创建出极其逼真的城镇场景。但是,其所需时间长,需要长时间的软件操作才能完成单个对象的建模,在城镇场景下更突显效率低下的缺点。

2.1.2 基于图像的三维建模

基于图像的三维建模技术实质是利用照相机采集的离散图像或摄像机采集的连续视频作为基础数据,经过图像处理生成真实的全景图像,然后通过合适的空间模型把全景图像组织为虚拟实景空间,用户在这个空间内可以自由移动,实现用户的全方位三维场景效果[4]。

基于图像的三维建模优势在于,使用的图像是真实的拍摄图像,更能带来身临其境的感觉。其缺点在于:

1. 对于现实中不存在的场景,无法使用该方法。

2. 其本质是图像,用户无法与其进行任何交互。

3. 需要存储大量图像资源。对于城镇这种规模更是难以接受。

2.1.3 基于规则的三维建模

基于规则建模通常靠一系列规则文件进行建模,而规则文件由多条规则组成,规则则具有一定的语法结构。目前,使用基于规则的三维建模的软件有Esri的City Engine。City Engine的规则写在CGA规则文件,CGA规则文件包含了一系列的规则决定模型如何生成。该文件采用的语言是CGA Shape Grammar。其主要的规则包含拉伸规则,切割规则,分割规则等。通过规则的组合可以建立十分精细的模型。

使用基于规则的三维建模方法,只需编写一个规则文件,便可对一类对象完成建模,建模效率极高,并且建模的可复用性极高。但是,还是需要人为的为对象指定规则文件,当面对对效率要求高,且规模大的城镇建模场景时,仍然存在建模效率不足得问题。

本文在此基础上,提出一种基于规则的三维建模自动化解决方案。

2.2 City Engine

City Engine具有以下特点:

1) 支持GIS数据,City Engine支持Shapefile,File Geodatabase,KML和OpenStreetMap,可以利用现有的GIS数据,如宗地,建筑物边界,道路中心线,快速的构建城市风貌[5]。

2) 提供可视化的,交互的对象属性参数修改面板调整规则参数值,比如房屋高度,房顶类型,贴图风格等,并且可以立刻看到调整以后的结果。这种参数的调整是不会修改规则本身。

3)基于规则批量建模。将CGA规则文件直接拖放到需要建模的地块,软件将根据规则将所有的宗地建筑物模型批量建好。

这些特点保证了,既可以手动的对city engine进行精细化配置,也可以通过脚本进行自动化配置。

2.2.1 City Engine脚本

City Engine提供了大量接口供开发人员使用,这些接口在实现自动化过程中必不可少。主要的接口有:

1) ce.importFile。将shape file引入当前的场景中。

2) ce.getObjectsFrom。从当前场景中,根据特定条件获取对象。这个方法能够帮助我们从shape file中获取特定的对象。

3) ce.getAttributeList。从对象中获取属性列表。该方法可以获取对象中的字段值。

4)ce.setRuleFile。对具体对象指定规则文件。该对象将根据规则文件中编写的规则进行建模,展示相应的外观。

3 基于CityEngine三维建模自动化解决方案

在整个城镇规划结果的建模过程中,由于规则文件可以事先进行编写,因此如何快速的为规划结果指定正确的规则文件成为提高效率的关键。本解决方案通过使用脚本来自动化指定规则文件过程,能够极大的提高整个建模过程的效率。本解决方案的流程大致为:

1) ArcGis软件生成规划结果shape file。

2) City Engine软件读取规划结果shape file。

3)City Engine软件通过执行脚本自动为规划结果指定规则文件。

4) City Engine软件进行建模,展示建模结果。

3.1 基于规则的三维建模自动化解决方案分析

生成自动化解决方案的关键在于定义shape file与City Engine脚本间的接口。该接口是多维度的,包括:

1)文件维度。文件维度指,与City Engine脚本约定,哪些shape file将应用于三维建模,以及各个shape file分别应用特别的规则文件。

2)类型维度。类型维度指,不同类型的GIS要素应用不同类型的规则文件。由于在规划场景中,大量规划对象重复或类似,因此可以靠GIS要素类型来指定对应的规则文件,进行三维建模。

3)字段维度。字段维度指,通过shape file中的字段指明该规划对象需要使用某个具体规则文件进行建模,或该字段值将在规则文件中使用,如楼房的高度字段可以决定在建模结果中,该楼房模型的高度。

在定义完接口后,即可着手规则文件,自动化脚本的编写与shape file的生成。

使用脚本进行自动化配置的优势在于,将逻辑上固定的部分抽离出来,在进行城镇规划结果建模前,根据定义的接口编写脚本。在进行城镇规划结果建模时,将动态生成的规划结果作为输入,由脚本处理,并进行建模。其本质是,把本应在建模时进行的工作提前完成,提高了整个建模过程的效率。

3.2 GIS数据规范

本文中规划目标为一村庄,需对村庄土地,绿地,村庄楼房,村庄内道路等进行建模。以此为基础,定义以下接口:

1)文件维度。将村庄土地,村庄绿地,村庄楼房,村庄内道路分别存放在land.shp, grass.shp,house.shp以及road.shp中。

2)类型维度。由于ArcGis中,面类型与线类型不能同时存于一个shape file中,且本次规划目标中每个shape file内已经为同一要素类型,因此不再在类型维度定义接口。

3)字段维度。本次规划目标中,村庄楼房根据不同的拼数将显示不同的外观,因此需要对拼数定义接口,定义接口字段为“类型”。如图1。

3.3 自动化脚本编写

本节将使用前文提到的常用接口,根据定义的接口来完成自动化脚本的编写。

1) 首先根据文件维度的接口定义,读取相应文件。

ce.importFile(‘C:/cg/land.shp, shpImportSettings)

ce.importFile(‘C:/cg/grass.shp, shpImportSettings)

ce.importFile(‘C:/cg/house.shp, shpImportSettings)

ce.importFile(‘C:/cg/road.shp, shpImportSettings)

2) 从中读取所有对象。

sceneObjects = [obj for obj in ce.getObjectsFrom(scene)]

3)根据字段维度的接口定义,读取相应字段值。

For object in sceneObjects:

attrList = ce.getAttirbuteList(object)

type = attrList[‘类型]

If type == typeA:

ce.setRuleFile(object, ‘typeA.cga) //指定规则文件。

4)生成模型。结果如图2,图3。

ce.generateModels(object, True, True)

5) 根据不同的规划场景,来编写对应的Python代码,完成相应的逻辑,即可实现整个自动化过程。

4 总结与展望

本文所述方法能够有效提高使用City Engine建模的效率,其本质和基于规则的三维建模类似。都是将固定的逻辑在真实使用前先行编写完成,在真实使用时,直接运行脚本,代替低效的手工操作。既保证了建模的质量,也保证了建模的效率。但是本文所述的自动化解决方案,在面对特别定制化场景时,需要编写大量的脚本来适应各种场景。因此还需要做一定程度的抽象规范,来适应各种不同的场景。

参考文献:

[1] 江涛.基于 City Engine 的虚拟校园研究与实现[J].西安文理学院学报:自然科学版,2014, 17(4): 71-74.

[2] 廖志强,江辉仙,张明峰.基于 CityEngine 与 ArcGIS Online 的福建土楼三维 GIS 的设计与实现[J].福建师范大学学报:自然科学版, 2015(5):6.

[3] Agarwal A K,Gupta T,Bothra P,et al.Emission profiling of diesel and gasoline cars at a city traffic junction[J].Particuology,2015(18):186-193.

[4] 李锋.基于CityEngine 的 2.5 维地图生成方法与应用[J].城市勘测, 2015(4):20-23.

[5] 张晖,刘超,李妍,等.基于CityEngine 的建筑物三维建模技术研究[J]. 测绘通报,2014(11):29.