杰瑞科技汇

CityEngine教程怎么学?新手入门指南?

CityEngine 综合学习指南

CityEngine 是一款由 Esri 开发的专业三维建模软件,它基于程序化建模CGA (Computer Generated Architecture) 规则,能够高效、批量地创建具有高度真实感和一致性的城市三维模型,它广泛应用于城市规划、建筑设计、游戏开发、影视制作和GIS数据可视化等领域。

CityEngine教程怎么学?新手入门指南?-图1
(图片来源网络,侵删)

本教程将分为以下几个部分,帮助你从入门到精通:

  1. 核心概念理解 - 为什么选择 CityEngine?它的工作原理是什么?
  2. 新手入门路径 - 第一步该做什么?如何快速上手?
  3. 核心功能详解 - 深入理解 CGA、资产、工作流等。
  4. 进阶学习资源 - 如何提升技能,达到专业水平?
  5. 实用技巧与问题解答 - 常见问题与解决方案。

第一部分:核心概念理解 (在开始之前)

在打开软件之前,理解这几个核心概念会让你事半功倍。

程序化建模 vs. 手动建模

  • 手动建模 (3ds Max, Maya, Blender): 像捏橡皮泥一样,一个面一个面、一个物体一个物体地创建,优点是自由度高,能做出非常精细和独特的模型,缺点是耗时、重复劳动多、难以批量修改
  • 程序化建模: 不是创建模型本身,而是编写“规则”或“蓝图”来生成模型,你告诉软件:“这是一个地块,我需要你根据这个规则,自动为我生成一栋带有玻璃幕墙和底层商铺的办公楼”,软件会根据规则自动生成。

CityEngine 的核心优势:

  • 效率极高: 几个小时就能生成整个城市的街区。
  • 一致性保证: 规则统一,确保所有建筑风格、高度、材质等保持一致。
  • 动态调整: 修改一条规则,所有相关的建筑都会瞬间更新,无需重新手动建模。
  • 数据驱动: 可以将 GIS 数据(如地块用途、高度限制)直接作为规则输入,实现数据驱动的智能建模。

CGA (Computer Generated Architecture) 规则

这是 CityEngine 的“灵魂”,CGA 是一种专门为三维建模设计的、基于脚本的领域特定语言

CityEngine教程怎么学?新手入门指南?-图2
(图片来源网络,侵删)
  • 规则 = 算法 + 几何体
  • 你写的 CGA 代码,就像一份详细的建筑说明书,它定义了从初始形状(如一个立方体地块)到最终复杂模型的一系列步骤和逻辑
  • 示例:
    Lot --> extrude(20)  // 规则1:将地块向上拉伸20米
          Building       // 规则2:执行“Building”规则
    Building --> splitY(3){ ~3 : Floor | Roof } // 规则2:在Y轴上按3米分割,重复3次生成楼层,最后生成屋顶
    Floor --> color("white") texture("facade_texture.jpg") // 规则3:给楼层赋白色材质和纹理
    Roof --> color("red") // 规则4:给屋顶赋红色

工作流

CityEngine 的标准工作流通常是:

  1. 获取数据: 导入 GIS 数据,如 Shapefile (.shp) 或 File Geodatabase (.gdb),这些数据定义了地块、道路、建筑轮廓等。
  2. 创建/编辑规则: 在规则编辑器中编写或修改 CGA 代码。
  3. 应用规则: 将规则文件 (.cga) 拖拽到场景中的对象(如地块)上。
  4. 生成模型: 软件根据规则自动生成三维模型。
  5. 导出: 将生成的模型导出到常用格式,如 OBJ, FBX, OSGB 等,用于其他软件。

第二部分:新手入门路径 (30天入门计划)

这个计划旨在让你在一个月内掌握 CityEngine 的基本操作和核心思想。

第1周:熟悉界面与基础操作

  • 目标: 能够独立导航场景,创建和编辑基本几何体。
  • 任务:
    1. 安装软件: 下载并安装 Esri 提供的 CityEngine 版本(有试用版)。
    2. 启动与界面: 打开软件,熟悉主界面布局:3D视图场景图层规则编辑器属性编辑器大纲视图
    3. 视图导航: 学习使用鼠标左键(旋转)、中键(平移)、右键(缩放)来操作 3D 视图。
    4. 创建基本形状: 在场景中创建一个 Rectangle (矩形) 和一个 Circle (圆形)。
    5. 编辑属性: 选中一个形状,在属性编辑器中修改其 Width, Height, Depth 等参数,观察 3D 视图的变化。
    6. 保存项目: 学习如何保存 .cej 项目文件。

第2周:第一个 CGA 规则

  • 目标: 编写并应用你的第一条 CGA 规则,感受程序化建模的魅力。
  • 任务:
    1. 创建新规则:Rules 文件夹中,右键新建一个 CGA 规则文件,MyFirstRule.cga
    2. 编写简单规则: 在规则编辑器中输入以下代码:
      @StartRule
      MyFirstRule -->
          extrude(10) // 将初始形状拉伸10米
    3. 应用规则: 在场景中选中你第一周创建的矩形,然后将 MyFirstRule.cga 文件直接拖拽到这个矩形上。
    4. 生成模型: 选中矩形,右键选择 Generate (或按 Ctrl+G),你应该能看到一个 10 米高的白色立方体。
    5. 修改规则: 回到规则编辑器,将 extrude(10) 改为 extrude(20),然后再次生成模型,观察立方体高度如何瞬间变化。

第3周:学习核心 CGA 语法

  • 目标: 掌握 CGA 中最常用、最核心的语法和函数。
  • 任务:
    1. split (分割): 学习如何使用 splitX, splitY, splitZsplit 来分割几何体,这是创建楼层、窗户的基础。
      • 示例:extrude(30) splitY(3){ ~3 : Floor | Roof }
    2. colortexture (颜色与纹理): 学习如何为几何体赋予颜色和贴图,准备一张砖墙纹理图。
      • 示例:Floor --> color(1,0,0) texture("brick.jpg")
    3. comp (组件): 学习如何将重复的建模过程封装成一个“组件”,使代码更简洁,将制作一扇窗户的过程封装成一个 Window 组件。
      • 示例:Window --> extrude(0.1) color("blue")
    4. case...else (条件判断): 学习如何根据条件生成不同的模型,根据地块大小决定建别墅还是公寓。
      • 示例:case LotArea > 500 : Villa | else : Apartment
    5. 实践: 尝试编写一个规则,生成一个简单的“楼房”:一个底座,三层标准楼层,一个斜屋顶,每层窗户使用 comp 组件。

第4周:结合 GIS 数据与项目实战

  • 目标: 将学到的知识应用到真实场景中,完成一个街区的快速建模。
  • 任务:
    1. 获取 GIS 数据: 从网上下载一个城市的地块数据(通常是 Shapefile 格式),或者使用 CityEngine 自带的示例数据(Help -> Sample Data)。
    2. 导入数据: 将地块数据导入到 CityEngine 场景中。
    3. 编写街道规则: 为地块编写一个建筑生成规则(可以基于第3周的规则进行扩展)。
    4. 批量应用: 将规则文件拖拽到场景中的所有地块上。
    5. 批量生成: 在大纲视图中,选中所有地块,右键选择 Generate,耐心等待,看着一栋栋建筑“长”出来!
    6. 导出成果: 将生成的街区模型导出为 OBJ 或 FBX 格式,用 3D Max 或 C4D 查看效果。

第三部分:核心功能详解

当你掌握了基础后,可以深入了解这些更强大的功能。

资产库

  • 是什么: CityEngine 的“素材库”,包括建筑组件(门、窗、屋顶)、植被、街道家具等。
  • 作用:
    • 重用性: 将制作好的复杂模型(如一个欧式阳台)导出为资产,方便在多个规则中调用。
    • 效率: 无需每次都从零开始建模。
    • 一致性: 确保全城使用相同的门窗样式。
  • 学习: 学习如何创建、导入、导出和使用资产。

道路网络

  • 是什么: 用于创建和编辑城市道路、人行道、绿化带等的强大工具。
  • 核心: 道路数据本身是二维的,但通过道路材质规则可以自动生成三维的道路、路沿、斑马线等。
  • 学习: 学习如何创建道路中心线,生成道路网络,并为道路编写不同的 CGA 规则。

脚本编辑器与 Python

  • CGA: 专注于几何体生成
  • Python: 专注于场景管理和自动化
  • 应用场景:
    • 批量修改场景中所有对象的属性。
    • 自动化导入/导出流程。
    • 创建自定义工具和插件。
  • 学习: 了解 Python 在 CityEngine 中的基本应用,例如通过脚本创建几何体、选择对象等。

场景与图层管理

  • 是什么: 类似于 GIS 软件(如 ArcGIS Pro),用于管理不同类型的数据。
  • 作用:
    • 数据分离: 将地块、道路、建筑、点云等数据放在不同图层,方便管理。
    • 可见性控制: 可以单独显示或隐藏某一类数据,提高性能和专注度。
    • 数据源链接: 图层可以链接到外部数据源,实现数据更新后场景的同步。

第四部分:进阶学习资源

当你不再满足于基础时,可以探索这些资源。

CityEngine教程怎么学?新手入门指南?-图3
(图片来源网络,侵删)

Esri 官方资源 (最权威)

  • CityEngine 帮助文档: 这是最好的参考资料! 随时查阅,几乎涵盖了所有功能的详细说明和代码示例。Help -> Help Contents
  • Esri 官方教程: 提供了大量视频和图文教程,从入门到高级应有尽有,访问 Esri官网的 CityEngine 页面
  • Esri 示例数据: 位于 Help -> Sample Data,包含完整的规则、场景和模型,是学习最佳实践的绝佳素材。
  • Esri 社区论坛: 可以在这里提问、分享经验、查看别人的问题。

第三方教程与社区

  • YouTube: 搜索 "CityEngine tutorial",有大量优秀的视频教程,例如由 Procedural Inc. (CityEngine 的前身) 和个人创作者发布的视频。
  • GitHub: 搜索 "CityEngine CGA rules",可以找到许多开源的规则集,学习和借鉴别人的代码。
  • 专业博客和论坛: 关注一些 3D 可视化和城市规划领域的博主,他们经常会分享 CityEngine 的技巧和项目案例。

第五部分:实用技巧与问题解答

Q1: 我的模型生成后看起来很“破碎”或有黑斑,怎么办?

  • A: 90% 的原因是法线问题,在生成模型时,确保在生成选项中勾选了 Compute Normals (计算法线),如果仍有问题,可以在规则中使用 set(normalize(up))set(negate(normalize(up))) 来手动调整法线方向。

Q2: 规则报错 "Error parsing rule..." 是什么意思?

  • A: 这是语法错误,仔细检查报错信息,它会告诉你出错的行号和大致原因,常见错误包括:
    • 括号 、花括号 不匹配。
    • 拼写错误,如 exturde (应为 extrude)。
    • 变量未定义。
    • 函数名或参数错误。

Q3: 如何让建筑的窗户有深度,而不是一个平面?

  • A: 使用 taper (锥化) 或 extrude (拉伸) 结合 comp (组件) 的方式,先在墙上开一个洞,然后将窗户组件拉伸进去。

    // 伪代码示例
    Facade --> 
        // ... 其他部分 ...
        splitY(3) { ~3 : FloorWithWindows | Roof }
    FloorWithWindows -->
        // 在每层上放置窗户组件
        comp(Windows) {x : 5, y : 1}
    Windows -->
        // 在窗户位置创建一个凹槽
        splitY(0.8) { 0.8 : WindowFrame | Sill }
        WindowFrame -->
            // 向内拉伸窗户,形成深度
            extrude(0.1) color("blue")

Q4: 学习 CGA 最好的方法是什么?

  • A:
    1. 模仿: 打开官方示例数据,找到你喜欢的建筑规则,逐行阅读,理解它的逻辑。
    2. 修改: 在模仿的基础上,尝试修改参数,看看效果有什么不同。
    3. 拆解: 将复杂的规则拆分成多个简单的子规则,逐个击破。
    4. 实践: 找一个小项目,逼着自己从头到尾写一遍规则,遇到问题,再回头查资料或提问。

学习 CityEngine 是一个从“手动建模思维”转变为“程序化、算法思维”的过程,初期可能会觉得 CGA 语法有些陌生,但一旦你掌握了它的逻辑,你会发现它为你打开了一个全新、高效、充满创造力的大门。

保持耐心,多动手,多思考,多看别人的代码,你很快就能成为 CityEngine 的高手!

分享:
扫描分享到社交APP
上一篇
下一篇