CityEngine Masterclass: Complete Tutorial Index

CityEngine Masterclass: Procedural Urban Modeling

If you are in the GIS field, you are likely familiar with Esri products. Among them, CityEngine is a specialized software designed for urban planning, landscape, and architectural 3D modeling. It utilizes CGA (Computer Generated Architecture), a procedural modeling language, to generate highly detailed 3D environments.

While CityEngine is an incredibly powerful tool, comprehensive tutorials or structured learning resources can be difficult to find outside of official documentation. Based on my professional experience and technical research, I have compiled this curriculum to provide a clear roadmap for anyone starting their journey with procedural modeling.

(Korean : CityEngine Lesson Index)

🎓 Curriculum Roadmap by Category

1. Basics & Data Integration: Interface navigation and GIS data (SHP) connectivity.
2. Core CGA Fundamentals: The logic of Split, Comp, Scope, and Transformations.
3. Materials & Texturing: Realistic visual outputs and UV coordinate control.
4. Professional Commands & Urban Design: Roofs, Setbacks, and Parcel splitting for real projects.
5. Advanced Analysis & Dashboards: Visibility analysis and data-driven reporting.
6. Python Automation & Scripting: Custom features and workflow automation.
7. Modern Features: Latest updates including Geometry Tagging and Modify series.

📜 Detailed Tutorial Index

Section 1. Introduction & Interface

  • [02] Getting Started...
  • [11] Navigator Panel Basics
  • [12] Main Stage: 3D View Navigation
  • [106] Creating a City in Clicks: City Wizard
  • [125] Essential CityEngine Resources & Websites

Section 2. Data Integration & Basic Modeling

  • [01] Connecting SHP File Attributes
  • [03] Creating Terrain and Placing Buildings: MapLayer
  • [04] Categorizing SHP Attributes & Applying Colors
  • [05] Changing Model Attributes: attr
  • [09] Street Creation: Basic Road Systems
  • [10] Layer Management by Category
  • [13] Rapid Facade Design: Facade Wizard
  • [14] Shape Menu Part 1
  • [15] Shape Menu Part 2: Compute First/Street Edges
  • [16] Shape Menu Part 3: Compute Edge Attributes
  • [18] Shape Menu Part 4: Convert Models to Shapes & Crop Image

Section 3. CGA Coding Fundamentals

  • [06] Understanding Procedural Modeling
  • [08] Overview of CGA Rule Structure
  • [23] CGA Basics - 001
  • [49] Essential Tips for CGA Coding - Part 1
  • [50] Essential Tips for CGA Coding - Part 2
  • [132] Practical Use of rand() - Part 1
  • [133] Practical Use of rand() - Part 2
  • [134] Local Variables: Using 'with'
  • [135] Rule Overriding: extension

Section 4. Geometry Operations: Split & Comp

  • [24] Split Operation - 01 (*)
  • [25] Split Operation - 02 (~)
  • [26] Split Operation - 03 (~)
  • [27] Split Operation - 04 ( ' )
  • [28] Split Operation - 05 (split.index)
  • [29] Split Operation - 06 (Vertical & Horizontal)
  • [31] Split Operation - 07 (Exercises)
  • [33] Component Split (comp) - 01 (Vertex, Edge, Face)
  • [34] Component Split (comp) - 02 (Side, Front, Back, Top, Bottom)
  • [35] Component Split (comp) - 03 (World Coordinates)
  • [36] Component Split (comp) - 04 (Horizontal & Vertical)
  • [37] Component Split (comp) - 05 (Selectors: Eave, Hip, Valley, Ridge)
  • [38] Component Split (comp) - 06 (Selectors: Street)
  • [39] Exercises: Advanced Split & Comp
  • [40] Component Split (comp) - 07 (Object Orientation)
  • [41] Using comp.index
  • [154] Grouping Connected Faces: The ' =: ' Operator
  • [155] Pivot & Scope Alignment in comp()
  • [156] Splitting Edges: split()
  • [157] Splitting Vertices: comp(v) & split()

Section 5. Scope & Transformation

  • [32] Extrusion (extrude)
  • [44] Transformation t() & rotateScope()
  • [45] translate()
  • [46] Scale s() & rotateScope()
  • [47] Rotation r()
  • [48] Advanced Rotation: rotate()
  • [51] Scope 01 - The Invisible Hand
  • [52] Scope 02 - alignScopeToAxes()
  • [53] Scope 03 - alignScopeToAxes, rotateScope, & split
  • [54] Scope 04 - alignScopeToGeometry
  • [55] Scope 05 - Exercises
  • [56] Scope 06 - alignScopeToGeometryBBox()
  • [57] Scope 07 - alignScopeToGeometryBBox() Part 2

Section 6. Materials & Texturing

  • [42] Control Flow (case...else) & color
  • [58] Material Assignment - 01: color()
  • [59] Material Assignment - 02: set() & material.color
  • [60] Material Assignment - 03: Color Exercises
  • [61] Texturing - 01: setupProjection()
  • [62] Texturing - 02: texture() & projectUV()
  • [63] Texturing - 03: UV-set & Map Shape Attributes
  • [64] Texturing - 04: UV Transformations

Section 7. Practical Professional Commands

  • [81] Most Used Practical Commands Overview
  • [82] Roof Design - 01: Gable Roof (roofGable)
  • [83] Roof Design - 02: Hip Roof (roofHip)
  • [84] Roof Design - 03: Pyramid Roof (roofPyramid)
  • [85] Roof Design - 04: Ridge Roof (roofRidge)
  • [86] Roof Design - 05: Shed Roof (roofShed)
  • [87] Roof Design - 06: Taper vs. Pyramid
  • [88] Creating Offsets: offset()
  • [89] Rectangles within Parcels: innerRectangle
  • [90] Random Tree Distribution: scatter
  • [91] Setbacks - 01: Uniform Setback
  • [92] Setbacks - 02: Edge-specific setbackPerEdge
  • [93] Setbacks - 03: Area-based setbackToArea
  • [94] Parcel Splitting - 01: splitArea
  • [95] Combining Split & Setback: splitAndSetbackPerimeter
  • [96] Simplified Setbacks: shapeL, shapeU, shapeO
  • [97] Shape Regularization: rectify

Section 8. Analysis & Dashboard

  • [07] Viewshed Creation: Visibility Analysis
  • [19] Real-time Data Extraction: report
  • [20] Creating Visual Charts: Dashboard
  • [110] Proximity Queries: inside, overlaps, touches
  • [111] Distance Measurement: minimumDistance
  • [112] Positional Relationship: contextCompare
  • [113] Counting Shapes: contextCount

Section 9. Python Scripting for CityEngine

  • [114] Exporting Bookmarks as Snapshots
  • [115] Creating Bookmarks from Viewshed Info
  • [116] Finding Shapes by Attribute
  • [118] Object Selection: getObjectsFrom, setSelection
  • [119] Object Translation: setPosition, move
  • [120] Applying Rules via Python: setRuleFile, setAttribute
  • [123] Earth Flattening Ratio
  • [124] TimeLapse Implementation
  • [126] Digital Clock - Text, time, datetime
  • [137] Sun Position Capture
  • [138] Shadow Change Analysis
  • [141] Viewshed Generation from CSV Data

Section 10. Practical Exercises & Patterns

  • [65-67] Using External Objects: i(filePath)
  • [68-80] Project: Building a Custom Structure from Scratch
  • [99] Geometric Patterns 01: Recursive Calls
  • [100] Geometric Patterns 02: Trigonometric Layouts
  • [101] Geometric Patterns 03: Pyramid Patterns
  • [102] Geometric Patterns 04: Staircases
  • [103] Handling Text: import Text.cga
  • [104] Object Placement Along UV: insertAlongUV
  • [108] Mapping Rule Control: Map Layer Mapping
  • [129] Utilizing CSV Files - readTable()
  • [130] Array Management: stringArray, floatArray

Section 11. Advanced Features & Updates

  • [127] CityEngine v2024.1 Release Highlights
  • [128] Random File Loading: fileRandom()
  • [142] CityEngine v2025.0 News
  • [143] Boolean Operations: Union, Subtract, Intersect
  • [144-153] Mastering Geometry Tagging
  • [140] Exporting to Twinmotion
  • [159-163] Precise Control: modify Series

I hope this curriculum serves as a valuable guide for beginners and professionals alike looking to master the art of procedural urban modeling.

Comments

Popular posts from this blog

001] Global Mapper - Creating DEMs

034] Global Mapper - Printing 04: Map Layout Editor 03

050] Global Mapper - Refining Path Profile : with chatGPT