City Engine在三维城市建模中的应用

2020-06-29 10:00王赟杰
四川建材 2020年6期
关键词:纹理建模规则

张 涛,王赟杰

(吉林建筑大学 测绘与勘查工程学院,吉林 长春 130118)

0 前 言

“数字地球”的概念首次是由美国前总统于1998年1月21日提出的,这在当时引起了各国专家和学者的强烈关注[1]。这是一种新的认识世界的方式,经过十几年的演化,数字技术也日趋成熟。世界各国也纷纷加入数字建设的大军中,其中不乏日本、加拿大、美国等国家。三维建模技术在20世纪80年代被引进我国,至今已经30多年,对于城市规划也陆续提出了“数字城市”、“绿色城市”、“智慧城市”等与三维城市建设相关的规划概念。在2000年的时候,国家测绘局在全国局长干部会议上,明确提出测绘局系统在以后的主要阶段任务就是要构建“数字中国”框架[2]。随着城市信息的数字化进程的到来,相关技术不断成熟与发展,城市规划和管理的方式逐步转向了数字化和智能化[3]。通过三维GIS技术辅助城市规划与设计将逐渐成了规划行业发展的一个新的趋势[4]。

三维城市建模并不是一个简单的运用软件建立一个三维模型的过程,而是将城市周围的人文环境相结合,在规划解决可能出现的问题,对城市发展、规划与设计提供参考指导作用。随着智慧城市平台在GIS上的应用和发展,城市三维建模也慢慢向精细化、参数化发展。City Engine作为一款与GIS最为紧密联系的城市三维规则建模软件,通过对City Engine建模的规则化,可以最合理化地利用好现有GIS平台上的数据,快速、高效、准确地建立城市三维模型,节约项目资金和时间。

1 建模准备

1.1 CGA规则

CGA规则的使用方式和语法与Java、C++极其相像,其语法也许在刚开始看到的时候比较头疼,但是由于它的函数种类比较清楚直接,运用入门还是比较简单的,CGA规则不用考虑代码中的Tab或空格等,所以各个语句可以存在于一行,但是从可读性的方面考虑,每个函数的后面会加上回车符,这样多个语言就不会被放置在一行,但一个语句放置在多行还是可以的。每一个规则语言都需要一个其实规则来触发好进行规则的运行。在City Engine中,已生成的模型或地块矢量模型为三维模型的起点,以下是其代码:

Lot--> Building

在以上的规则中Lot为模型的初始触发函数名称,“-->”标志了由Lot模型向Building模型运动的方向。和手工建模相比,基于CGA规则的三维模型批量建模方法优点在于,GIS数据中的属性数据能够被其调用,进行批量的自动建模[5]。CGA主要运用六种规则函数语言,函数的使用场景和规则如图1所示。

图1 CGA函数功能几释义

1.2 数据处理和准备

1)矢量数据获取。地图矢量数据一般是指所构建区域范围的底面信息数据,一般包括建筑底面数据、道路数据、绿化区数据等,不同种类区域的属性数据被存储在不同的底图地图矢量数据,但在本文涉及的设计中,只需要调用小区的建筑底面数据,以此作为参考进行建模。建筑底面数据包括建筑模型的属性信息,比如楼层的数量、高度等。矢量数据的编辑修改工作在第三方软件ArcMap中进行,对建筑物数据进行提取和处理,结果如图2。

图2 建筑地图数据

2)贴图纹理数据。纹理贴图数据是指在规则建模中用于对建筑的外观纹理进行贴图的图片数据,也是影响着整个建筑效果的重要因素。纹理图片在较大的场景中往往数量较多且用途复杂,所以,对纹理数据的分类、命名与储存也是提高建模效率的重要点。在本文中,主要建筑物的数据来源于小区,因此,需要去实地对小区的建筑外观进行照相,采集建筑的四面图片,为下文建筑建模的贴纹理进行数据的准备。

3)模型数据。当我们在建模过程中发现有些模型会被一直用到时候,那这个时候就需要模型数据来减少工作量,比如经过细化后的一些建筑物模型和植物模型。通过导入模型数据可以避免一些的不必要的多余劳动,需要特别注意收集的植物模型有林地、草地等,通过这些来改善模型绿化的视觉效果。如图3所示。

图3 植物模型

2 三维建模

2.1 建筑物建模

本文主要运用了单一式建筑建模,单一式建筑是指建筑模型较为统一的建筑类型,只要定义好一栋建筑的规则就可以适用于相同类型的建筑,适用于小区等建筑风格统一的批量建模,运用上文提到的函数进行建筑物的模型编写。选取典型的分割,贴图函数运用如下:

1)分割。

XifrontTu3Side

XifrontTuFloor-->

split(y){0.5*susheloufloorHeight:XifrontTu3Side|0.5*susheloufloorHeight:XifrontTuFloorWin}

//对凸出面楼层XifrontTuFloor进行分割,生成墙XifrontTu3Side和带窗户的部分

2)贴图。

XifrontTuFloorWindow-->

Window //贴入窗户图片

2.2 道路地物规划建模

对于道路规则而言,也是利用相应的规则,对其进行编写。但是由于道路本身需要大量的纹理以及路灯、井盖等多种要素,处理起来十分复杂,而且City Engine里面对于道路的处理是直接导入道路数据,然后自动生成道路的属性及规划,因此,为了简化对道路的处理,在编写规划的时候,尽量表达简单直观即可,在这里对道路处理制作简要编写即可。

由于考虑到道路数据在获取是以面要素获取的,而City Engine对于道路中心线导入,然后进行道路参数的设置,从而调整street、sidewalk、crossing、junction、junctionEntry各自的参数,因此综合考虑对道路规则进行简单的处理。在对道路建模的同时就运用到了之前收集的街道纹理及路灯和行道树的模型,这里以初始规则Street为入口执行:

#道路建模

Street-->

texture("zhugandao.jpg")

tileUV(0,10,'1)

//生成的道路形状中行车道的初始规则为Street,以此规则作为入口执行,对行车道进行贴图。

2.3 绿地建模

在本文示例中的建筑面积和绿化面积相当,这里简化了对绿地的建模流程,只做了绿地建模的示范和对绿地上的树木模型进行随机的分配,其中草地建模如下:

#对草坪进行建模

Qita-->

setupProjection(0,scope.xz,2,2)

texture("Grass.jpg")

projectUV(0)

2.4 生成模型

当所有的图层按照相同的方法赋予规则以后,整个完整的场景建模就完成了,具体效果图如图4所示。

(a)局部图

(b)场景构建效果

2.5 导出数据

当我们对其建模结束之后,将其进行发布,使其三维效果能被更多的用户进行感受和分享。在本文中,选用将场景进行WebScene的导出如图5。

图5 WebScene中的场景

3 总结与展望

在三维场景的建模过程中,基于City Engine软件通过将重复的工作整合到规则代码中,并应用规则,在多区域和大范围的场景中得到应用从而生成建筑和道路等模型,大量重复的手工建模被避免。City Engine对多种格式数据的兼容和批量建模的优势使其在三维建模方面得到了很好的运用。

在对City Engine的学习和运中中会发现,尽管我国使用City Engine进行城市建模的运用已经进行了大规模的展开,但是在这方面的资料研究和整理还没有被系统地整理完善。

本文对与City Engine的研究过程中通过对City Engine的理解发现运用其构建的三维模型可以输出为通用格式,并可以依据这个优势,三维建模的研究在不久的将来或者就是现在可以广泛应用于城市规划设计、城市管理、建筑设计等方方面面。

[ID:009702]

猜你喜欢
纹理建模规则
撑竿跳规则的制定
基于FLUENT的下击暴流三维风场建模
数独的规则和演变
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
基于BM3D的复杂纹理区域图像去噪
求距求值方程建模
使用纹理叠加添加艺术画特效
基于PSS/E的风电场建模与动态分析
让规则不规则
TEXTURE ON TEXTURE质地上的纹理