Procedural Cities with CityEngine: Techniques for Realistic Street Networks
Introduction CityEngine excels at producing large-scale, editable urban environments by combining procedural street-generation tools, dynamic city layouts, and CGA rule-driven geometry. This article presents practical techniques to create realistic street networks—covering planning, data prep, procedural growth, editing, detail, and performance.
- Project setup and data sources
- Start with a clear goal: real-world fidelity, stylized city, or game-ready layout.
- Use reliable inputs: OpenStreetMap exports, Esri FileGDB/Shapefile, or CityEngine’s Map Import for satellite imagery, heightmaps, lot footprints, and street graphs.
- Coordinate system: ensure all layers share a projected CRS (e.g., UTM) to avoid scale and snapping issues.
- Layer structure: keep separate layers for StreetNetwork, Blocks, Shapes (lots), Buildings, Terrain, and Assets.
- Street network strategies
- Procedural growth (Grow Streets): use when you need rapid, varied networks. Configure parameters for street length, branching probability, angle variance, and hierarchy (primary/secondary/tertiary).
- Import + clean: import an existing street graph for real-city fidelity; remove tiny segments, fix topology, merge duplicated nodes, and snap endpoints.
- Hybrid approach: import a base network (major arterials) and grow local streets procedurally to match surrounding morphology.
- Block and lot generation
- Subdivision methods: use Offset Subdivision for orthogonal grids, Recursive Subdivision with constraints for organic neighborhoods, and Voronoi-based splits for varied lot shapes.
- Control density: set minimum lot area and frontage parameters to enforce realistic building sizes and block depths.
- Align with terrain: project lots to terrain to avoid floating geometry; use block-to-terrain alignment tools and local edits for steep slopes.
- Street geometry and cross-sections
- Use the Street Designer (CityEngine 2025+) or custom CGA lane rules to define multi-lane cross-sections: travel lanes, bike lanes, parking, medians, sidewalks, and planting strips.
- Lane rules: assign procedural rules per lane type to auto-populate curbs, markings, bike racks, trees, and furniture.
- Sidewalk detail: add curb geometry, tactile paving at crossings, and varied paving textures
Leave a Reply