CityEngine 三维建模与设计
精英培训班
(扩展学习参考手册)
Esri 中国信息技术有限公司
2014 年 5 月
版权声明
本文档版权为 Esri 中国信息技术有限公司所有。未经本公司
书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的
部分或全部,并以任何形式传播。
制定及修订记录
版本
完成日期
编写/修订纪要 编写者
备 注
V1.0
2014-5-24
编写
徐汝坤
甘鑫平
CityEngine2012
版本
2
目 录
第 1 章 城市建模实战练习 ..................................................................................... 5
1.1 需求分析 .......................................................................................................................... 5
1.2 目的和意义 ...................................................................................................................... 5
1.3 数据准备与处理............................................................................................................... 5
1.3.1 基础数据的准备与处理 ............................................................................................... 5
1.3.2 贴图数据的准备 .......................................................................................................... 8
1.3.3 模型部件的准备 ........................................................................................................ 10
1.4 场景构建和数据导入 ..................................................................................................... 10
1.5 规则编写 ........................................................................................................................ 12
1.5.1 绿化区散点树的创建................................................................................................. 12
1.5.2 标志性建筑物的引入................................................................................................. 14
1.5.3 一般建筑的创建 ........................................................................................................ 14
1.5.4 道路数据的创建 ........................................................................................................ 19
1.5.5 其它规则 .................................................................................................................... 23
1.6 规则使用和模型调整 ..................................................................................................... 23
1.7 模型导出与场景展示 ..................................................................................................... 23
第 2 章
CityEngine 函数库 .................................................................................. 25
2.1 几何体创建 .................................................................................................................... 25
2.1.1 替换函数(i) ........................................................................................................... 25
2.1.2 屋顶函数 .................................................................................................................... 26
2.1.3 其它几何体创建函数................................................................................................. 29
2.1.4 练习:屋顶创建 ........................................................................................................ 30
2.2 几何体变换 .................................................................................................................... 31
2.2.1 平移函数 .................................................................................................................... 31
2.2.2 旋转函数(r) ........................................................................................................... 33
2.2.3 缩放函数(s) ........................................................................................................... 34
2.2.4 居中函数(center) ................................................................................................... 35
2.3 几何体细分 .................................................................................................................... 36
2.3.1 拆分函数(comp) .................................................................................................... 36
2.3.2 切割函数(split) ...................................................................................................... 37
3
2.3.3 后退函数(setback)................................................................................................. 39
2.3.4 偏移函数(offset) ................................................................................................... 40
2.3.5 随机点函数(scatter) .............................................................................................. 41
2.3.6 其它几何体拆分函数................................................................................................. 42
2.4 模型贴图 ........................................................................................................................ 42
2.4.1 贴图函数(texture) ................................................................................................. 42
2.4.2 约束贴图的函数 ........................................................................................................ 43
2.4.3 操作 UV 函数 ............................................................................................................. 46
2.5 函数库综合练习............................................................................................................. 47
2.5.1 练习:建筑物模型规则编写 ..................................................................................... 47
2.5.2 练习:道路规则编写................................................................................................. 50
第 3 章
CityEngine 交互建模 .............................................................................. 53
3.1 纹理校正工具................................................................................................................. 53
3.1.1 纹理校正工具介绍 .................................................................................................... 53
3.1.2 练习:利用纹理校正处理变形图片 ......................................................................... 54
3.2 交互式建模工具............................................................................................................. 54
3.2.1 交互式建模工具介绍................................................................................................. 54
3.2.2 练习:利用交互式建模工具建模 ............................................................................. 55
3.3
FacadeWizard 立面处理工具 ......................................................................................... 61
3.3.1
Façade Wizard 工具介绍 ............................................................................................ 61
3.3.2 练习:利用 Façade Wizard 创建规则 ....................................................................... 62
第 4 章
CityEngine 使用 Python 脚本 ................................................................ 68
4.1
Python 脚本界面基础 .................................................................................................... 68
4.1.1
Python 控制台 ............................................................................................................ 68
4.1.2 练习:利用 python 控制台选择道路的节点 ............................................................ 68
4.1.3
Python 编辑器 ............................................................................................................ 69
4.1.4 练习:利用 python 编辑器选择道路的节点 ............................................................ 71
4.2 练习:利用 python 脚本批量导出 ................................................................................ 71
附录.............................................................................................................................. 73
A.学习资源 ............................................................................................................................ 73
4
第1章 城市建模实战练习
利用 CityEngine 创建城市三维模型时要考虑创建那些城市内容,这些内容要创建到什么
程度?基于这些信息进而去组织数据、编写规则,最终完成城市三维模型的创建。
1.1 需求分析
在本章练习中将完成城市建筑模型、城市道路模型和绿化区散点树模型的生成。
建筑模型分标志性建筑物与一般建筑物,标志性建筑物按实际尺寸采用实地纹理建模,
一般建筑物要求根据不同的楼层数选择不同类型的贴图,具有相近形状的邻近数据采用相同
贴图;
城市道路模型要求在车道上根据道路宽度、车道数反映出道路的重要标线信息如道路中
心线、机动车道与非机车道分界线等信息,生成道路的人行道并在人行道上合理分布行道树
与路灯信息;
绿化区的散点树要求根据绿化区的面积合理放置散点树的模型。
1.2 目的和意义
• 基于己有的地形影像数据完成场景的创建;
• 利用建筑底面数据完成城市三维建筑模型的创建;
• 利用道路中心线数据完成道路模型的创建;
• 基于面状数据完成散点树的创建;
• 把创建好的场景导出成 Web Scene 并实现网页端浏览;
• 把制作好的模型在 3D Viewer 应用框架中展示。
1.3 数据准备与处理
CityEngine 构建城市内容需要准备三个方面的数据:基础数据、贴图数据和模型部件数
据。
1.3.1 基础数据的准备与处理
1.3.1.1 基础数据的准备
基础数据指建模所需的矢量数据和构建场景所需要的地形影像数据。根据 7.1 中需求信
息要准备建筑底面数据(根据不同的建筑类型分为标志性建筑底面数据、一般建筑底面数
5
据)、道路中心线数据和绿化区数据(面状),此外为了实现模型与地形的贴合还要准备影像
数据包括地形数据(DEM)和地形贴图数据(DOM)。
对于影像数据(地形和地形贴图数据):要求带有坐标信息(如 tiff 格式的影像要有对应
的 tfw 文件这样才能配置到正确的位置),此外 CityEngine 2012 要求影像的行列数在
4000*4000 以内,地形贴图要求为 8 位影像数据。如果影像数据不满足相关的要求可以参照
《CityEngine 下如何更好的实现影像与地形的叠加》进行处理。
标志性建筑底面数据:标志性建筑可以考虑充分利用已有的建筑模型,这种情况下底面
数据就要有包含引用建筑模型的名称的属性信息。本练习中给标志性建筑底面数据
“BuildingReplace”准备了 [modelName] 属性信息如下表:
图 1-1 标志性建筑底面数据属性项
一般建筑物:根据需求首先要包含建筑楼层高度的信息(建筑高度或楼层数)的属性,
其次要包括建筑底面的分组信息(即相近形状的邻近数据具有共同的属性信息)的属性。本
练习中给一般建筑底面数据“BuildingCreator”准备了代表建筑高度的楼层属性列[floors],代
表分组信息的属性列[FenZu],此外为了更准备的表达建筑的外观还增加了屋顶的属性列
[RoofType]如下表:
图 1-2 一般性建筑底面数据属性项
6
道路中心线数据:根据需求道路中心线数据需要准备道路的宽度、车道数信息。在本练
习中道路中心线数据“Road3d”准备了车道宽度(streetWidth)属性列[Width],左人行道宽度
(sidewalkWidthLeft)属性列[LSwidth],右人行道宽度(sidewalkWidthRight)属性列
[RSwidth],车道数属性列[CDS],此外为了增加道路与实际的一致性还准备了绿化带宽度属
性列[GreenBlet],道路中心花坛的宽度属性列[Med]以及道路是否为双向道的属性信息
[Direction]。
图 1-3 道路数据属性项
绿化区的数据可根据需要准备属性信息,本练习中没有对绿化区的数据做相应的属性设
置。
此外为了丰富场景的效果并进一步让场景与实景保持尽可能的一致还准备了道路上的绿
化带、重叠的立交桥的数据以及水面的数据。
图 1-4 在 ArcMap 中处理好的矢量数据
7
1.3.1.2 矢量数据与地形衔接的处理
矢量数据与地形的衔接有两种方式,第一种方式通过 ArcGIS 实现。第二种可以在
CityEngine 中利用前面提到的“Align Shapes to Terrain”实现。
两者的区别:在 ArcGIS 中即可以通过节点处(CityEngine 中的 Nodes)插值实现矢量数
据与地形的衔接,同时也可以在线上/面上加密节点实现数据与地形更好的贴合;而在
CityEngine 中,导入的矢量线数据通过“Align Shapes to Terrain”使各节点获取地形上的高程
值从而实现矢量线与地形的贴合,如果道路矢量线有立体相交的时候不适合用此方法;导入
的矢量面数据(点被看成是 0.1m*0.1m 的面)通过前面的介绍即可以各节点接地,也可是平
移到该面的平均高程处、最小平移值接地、最大平移值接地(面上各处高程值一致)从而完
成与地形的贴合。
在本练习中道路矢量线存在立交的情况,因而利用 ArcGIS 的“ Interpolate Shape”工具实
现针对地形的处理,矢量面数据(主要指建筑底面)一般情况下是水平的,推荐采用
CityEngine 处理会更有优势。
1.3.2 贴图数据的准备
贴图准备是为模型的美观和规则调用的方便。因而贴图在准备与处理的时候要考虑两方
面的问题:
• 该贴图与所要表达的城市内容是否一致,它是我们选择贴图的主要标准之一;
• 该贴图怎么在规则中使用,这是贴图命名与较正处理的根据所在。
具体到不同的数据如何选择贴图和处理呢?下面对一般性建筑、道路数据做一些说明。
一般性建筑贴图
在本练习中使用的数据是国家体育场附近的数据,该处的建筑大多是 2000 年以后建立
的,建筑风格新颖,因而在贴图的选择上要体现新、亮的特色,下图是为本练习收集的一般
性建筑的立面纹理截图:
注意事项:有条件的话能够采集实地的照片处理,得到最终模型效果更会贴合实际。
图 1-5 整理后立面纹理效果(部分)
8