共计 2428 个字符,预计需要花费 7 分钟才能阅读完成。
背景介绍:CityEngine 的应用场景与优势
CityEngine 是 Esri 公司推出的一款专业三维城市建模软件,它通过程序化建模技术(Procedural Modeling)快速生成大规模三维城市模型。与传统手工建模相比,CityEngine 具有以下明显优势:

- 高效率:可以几分钟内生成整个城市的三维模型
- 可修改性强:通过修改规则即可批量更新模型
- 数据驱动:支持导入 GIS 数据进行精确建模
- 规则复用:创建好的规则可以重复使用于不同项目
CityEngine 广泛应用于城市规划、智慧城市、游戏开发、影视制作等领域。对于需要快速创建大规模城市环境的项目来说,它几乎是不可替代的工具。
基础概念:理解规则建模 (CGA) 的核心思想
CityEngine 的核心是 CGA(Computer Generated Architecture)规则语言,它是一种专门用于描述建筑生成规则的脚本语言。CGA 规则的基本特点包括:
- 基于形状语法:从基础形状(如地块)逐步细分和扩展
- 参数化控制:通过变量控制模型的各种属性
- 条件分支:根据不同条件生成不同模型
- 随机变化:引入随机性使模型更自然
理解 CGA 的关键是要把握 ” 从简单到复杂 ” 的分形思想,通过不断细分和变换基础几何体来创建复杂结构。
环境准备:软件安装与基本配置
- 下载与安装:
- 访问 Esri 官网下载 CityEngine 2023.x 版本
- 安装过程简单,只需按照向导操作即可
-
首次启动需要登录 ArcGIS 账号(可申请试用账号)
-
界面熟悉:
- 主界面分为:场景视图、检查器、规则编辑器、图层面板等
-
建议先浏览 ” 帮助 ” 菜单中的 ” 入门教程 ”
-
基本设置:
- 在 ” 编辑 > 首选项 ” 中设置工作目录
- 调整性能设置(根据电脑配置)
实战案例:从 GIS 数据到三维模型的完整流程
1. 数据准备
CityEngine 支持多种数据来源,最常用的是 OpenStreetMap 数据:
- 在 OpenStreetMap 官网导出所需区域数据(.osm 格式)
- 在 CityEngine 中通过 ” 文件 > 导入 >OSM 文件 ” 导入数据
- 导入后会在场景中看到道路网络和地块多边形
2. 创建基础规则
下面是一个简单的建筑生成规则(保存为.cga 文件):
// 基本建筑生成规则
version "2023.0"
// 定义属性,可在界面中调整
attr height = 10
attr floors = 3
// 主规则
Lot --> extrude(height) Building
// 建筑细分规则
Building -->
split(y){~floors : Floor}*
// 楼层规则
Floor -->
split(x){~1 : Facade}*
// 立面规则
Facade -->
split(y){ 0.2 : WallBase |
{ ~0.6 : Wall |
~0.2 : WallTop } }
// 组件样式
WallBase --> color("#888888")
Wall --> color("#EEEEEE")
WallTop --> color("#AAAAAA")
3. 应用规则生成模型
- 选择场景中的地块
- 在检查器中点击 ” 规则文件 ” 选择刚才创建的.cga 文件
- 调整参数(如高度、层数等)
- 点击 ” 生成 ” 按钮
4. 添加细节
可以扩展规则增加更多细节,如窗户、屋顶等:
// 添加窗户
Wall -->
split(x){~1 : split(y){ 0.2 : Wall |
{~0.6 : WindowTile}* |
0.2 : Wall } }*
WindowTile -->
split(x){~1 : split(y){~1 : Window} }*
Window -->
color("#6699CC")
inset(0.1)
性能优化:模型简化与 LOD 策略
大规模城市场景需要考虑性能优化:
- LOD(细节层次)技术:
- 创建不同精度的模型版本
-
根据相机距离切换模型
-
模型简化技巧:
- 减少不必要的几何细节
- 合并相同材质的表面
-
使用法线贴图代替几何细节
-
CGA 优化建议:
- 避免过度细分
- 合理使用随机函数
- 预计算复杂操作
常见问题解答
- 模型生成后没有显示?
- 检查规则是否有语法错误
- 确保选择了正确的地块
-
查看生成日志(Window>Show Console)
-
如何控制建筑样式变化?
- 使用随机函数和条件语句
-
创建多个样式规则并通过概率分配
-
导入的数据位置不对?
- 检查坐标系统设置
-
确保所有数据使用相同的 CRS
-
规则太复杂导致性能下降?
- 简化规则逻辑
- 分步生成模型
-
使用 ” 冻结 ” 功能固定已生成部分
-
如何导出到游戏引擎?
- 使用 FBX 或 OBJ 格式导出
- 注意材质和贴图的导出设置
- 在 Unity/Unreal 中可能需要重新设置材质
5 分钟快速上手迷你教程
- 启动 CityEngine,创建新工程
- 绘制一个简单地块(使用绘制工具)
- 创建新规则文件(.cga)
- 复制粘贴以下基础规则:
version "2023.0" Lot --> extrude(10) Building Building --> color("#FF0000") - 应用规则到地块
- 你已经创建了第一个程序化建筑!
进阶学习资源推荐
- Esri 官方 CityEngine 教程
- “Procedural Modeling with CGA” 系列视频
- CityEngine 社区论坛
- “ 城市信息模型 (CIM) 与程序化建模 ” 专业书籍
数据版权注意事项
使用 OpenStreetMap 等公开数据时,务必注意:
- 遵守数据提供方的许可协议
- 商业用途可能需要特殊授权
- 适当标注数据来源
- 尊重隐私和版权法规
传统建模与程序化建模效率对比
以一个 1 平方公里的城市区域为例:
| 任务 | 传统建模 | CityEngine 程序化建模 |
|---|---|---|
| 基础道路网络 | 2- 3 天 | 5 分钟(导入 OSM 数据) |
| 100 栋建筑 | 1- 2 周 | 10 分钟(应用规则) |
| 修改建筑高度 | 逐栋修改 | 全局参数调整 |
| 添加建筑细节 | 手工建模 | 规则自动生成 |
程序化建模在大规模场景中的优势非常明显,特别适合需要快速迭代的项目。
结语
CityEngine 的学习曲线可能看起来有些陡峭,但一旦掌握了 CGA 规则的基本思路,你会发现它是如此强大和高效。建议从简单规则开始,逐步增加复杂度。记住,好的程序化建模不是一次写出完美规则,而是建立一个可以灵活调整的系统。希望本指南能帮助你快速入门 CityEngine 的世界!
