Posts

[035] How to Use World Coordinate Selectors in CityEngine CGA

Image
Apply world coordinate selectors like world.south to maintain consistent rule orientations (e.g., south-facing windows) regardless of building rotation. This lesson explores the fundamental difference between world and local coordinate systems in CityEngine. By understanding world coordinate selectors, you can ensure that specific architectural elements—such as solar panels or climate-specific windows—always face the correct compass direction, even when the building footprint itself is rotated or modified. Introduction to World Coordinate Selectors Today, we will cover world.south | world.north | world.west | world.east | world.up | world.down | world.side among the comp() selectors. The word "world" is used here. As the name suggests, it means the selection is based on the World Coordinate System. This was the final image from the previous lecture, and the standard for "world" is indicated ...

[034] Using Comp Selectors to Target Specific Faces in CityEngine

Image
Learn to target specific geometry components by defining precise selection conditions in CGA. In this lesson, we transition from component types to selectors within the CityEngine comp command. Selectors act as filters that determine which specific parts of a 3D model (like the front facade, side walls, or roof) are affected by your rules. We will explore the 'all' and 'side' selectors, as well as directional selectors based on coordinate systems. In the last session, we learned about components (v, e, fe, f) and operators ( : , ~ ). From today, we will start looking into selectors. If a component defines the resulting geometry type (point, edge, or face), a selector defines the condition used to filter it. The components that meet the conditions presented by the selector are derived. There are quite a large number of selectors for the comp command. img 1 : https://doc.arcgis.com/en/city...

[033] How to Use the Comp Command in Esri CityEngine for Component-Based Modeling

Image
Learn how to decompose 3D volumes into editable sub-elements using the component split. This tutorial introduces the 'comp' command, explaining the fundamental differences between it and the 'split' command. You will learn how to isolate vertices, edges, and faces from a 3D model, understand the difference between shared and independent edges, and use operators to control model hierarchy and indexing for targeted rule applications. When I first started this blog, I thought it would be enough to simply explain a few commands, organize the important details, and finish after writing about 50 posts. Even though I have covered less than 10% of what I originally planned, this series has already reached its 33rd post. Not long ago, I saw the music video for "Standing Next to You" and started playing the drums again, which I had forgotten about for a while. I had taken a break because my right knee would...

[032] How to Create 3D Volumes Using Extrude in Esri CityEngine

Image
Understand the extrude command to transform flat 2D shapes into 3D building volumes with precise control over verticality and roof flatness. This tutorial marks the transition from 2D procedural modeling to 3D space in CityEngine. You will learn the syntax of the extrude command, how to handle extrusions on sloped surfaces using world coordinates, and how to ensure building rooftops remain perfectly level regardless of terrain inclination. Recommended Audience: Beginners in CGA modeling and GIS professionals looking to generate basic building masses from footprint data. We are finally moving from planes to 3D volumes. While the transition to 3D might seem like the most critical topic to cover, it is actually one of the simplest commands in CGA, with almost no complex parameters to manage. The syntax is as follows: Syntax extrude (distance) extrude (extrusionType, distance) Reference: CityEngine ...

[031] How to Create Nested Split Structures in Esri CityEngine

Image
Learn how to establish complex architectural hierarchies by nesting various split types. This tutorial covers the practical application of CityEngine's split command, specifically focusing on combining fixed, relative, and approximate splits. We explore how to visualize model hierarchies before coding and how to nest repeated splits to create structured facades that remain responsive to geometric changes. Continuing from the previous lesson, we will explore various split patterns to become more familiar with how they work in practice. Since we have not yet covered indexing concepts in depth, we will focus on simple splits. I will discuss split.index along with case-else statements once we finish the comp command section. The method or sequence of splitting can vary depending on personal preference, so please use the code I provide as a reference rather than an absolute rule. img 1 : Example of Complex Fac...

[029] How to Perform Vertical and Horizontal Splits in CityEngine

Image
How First Edge Defines the X-Axis Direction Counter-Clockwise Polygon Construction Behavior Transition from horizontal floor divisions to vertical facade splits by manipulating coordinate axes with alignScopeToGeometry. In CityEngine, procedural modeling relies heavily on understanding the local coordinate system of each shape. This tutorial explains how to use the split command for vertical divisions and introduces the alignScopeToGeometry(zUp) function. By reorienting the Z-axis to the Y-axis, you can apply architectural logic using the more intuitive X and Y plane, making it much easier to code complex building facades, floors, and repeating window patterns. Default Axis Orientation and Split Direction in CityEngine The splits we have learned so far were mainly focused on horizontal divisions. Today, we will cover vertical splits. Regarding the content mentioned in the previous session, I hope you haven...

[028] How to Select Specific Segments Using split.index in CityEngine

Image
Learn how to use the split.index function to identify and control specific segments within a procedural split operation for precise architectural logic. This tutorial covers the sequential nature of CGA split operations and demonstrates how to target specific segments using zero-based indexing, allowing for more dynamic and efficient rule writing compared to manual segment definition. What is split.index in CityEngine CGA? split.index is a value used to identify the position of each segment generated during a split operation. Sequential Indexing in Procedural Splits In our previous sessions, we explored the three types of split(~, *, ') operations. Today, I intended to cover splitting by rows and columns, but I felt it would be better to pause and discuss the index at this point. Although we haven't officially learned about axis or scope yet, the split operation works by dividing an area one by one alo...