Posts

Showing posts with the label 3D Modeling

[063] How to Apply Multiple UV Sets and Maps in CityEngine

Image
Learn how to layer multiple UV sets in Esri CityEngine using the set() command and material map attributes to overcome texture overlay issues. This tutorial explains the limitations of using the texture() command when handling multiple UV sets on a single object in Esri CityEngine and demonstrates how to properly assign multiple texture channels like colormap and dirtmap using set() and projectUV(). We already covered the 10 uv-sets in the last lesson. Each has a unique index number, and each unique index has its designated texture attributes. figure 1 : https://doc.arcgis.com/en/cityengine/latest/cga/cga-texturing-essential-knowledge.htm As seen above, a total of 10 uv-sets from 0 to 9 each have their own unique texture attributes. So let's apply a colormap and a dirtmap using setupProjection(), texture(), and projectUV() learned in the previous lesson. Lot --> setupProjection(2,scope.xz...

[061] How to Set Up Texture Projections in Esri CityEngine - setupProjection()

Image
Learn the setupProjection() command to define UV sets, mapping axes, and texture dimensions in Esri CityEngine CGA. Texturing in Esri CityEngine relies on a structured three-step workflow using CGA commands. This tutorial explains the first essential step, setupProjection(), covering map types (uvSet), mapping axes, texture scale, offsets, and corner wrapping behavior for procedural 3D models. Recommended Audience: GIS professionals, 3D urban planners, and CGA developers looking to master texture projection parameters in CityEngine. Starting today, we'll begin learning how to apply textures to create more realistic materials. If you're already using CityEngine, you're probably familiar with at least one or two 2D or 3D graphics applications. Texture mapping is generally much more intuitive in traditional 3D modeling software. Texturing in CityEngine requires a solid understanding of several con...

[046] How to Use the s() Scale Command in CityEngine CGA

Image
Learn how to use the s() command for fixed and relative scaling, and understand how CGA handles model reproduction during transformations. This tutorial explains the s() command in CityEngine, covering fixed dimensions, relative scaling using the quote (') operator, and the fundamental concept of how instructions automatically copy models within the rule hierarchy. It is used for scaling the size of a model, and the usage is as follows. img 1 : https://doc.arcgis.com/en/cityengine/latest/cga/cga-s.htm It uses three variables and increases or decreases the size in the direction of each axis based on the scope origin. Absolute vs Relative Scaling The input values can be entered as simple numbers or numbers preceded by a single quote ( ' ). If you enter only a number, it creates the model at that specific size; if you use the ' operator, it becomes a value multiplied by the scope length of th...

[044] Understanding Scope and Object Movement in CityEngine CGA

Image
Learn the concept of scope and use the t() command to translate procedural geometries along their specific scope axes. This tutorial introduces the fundamental difference between the t() and translate() commands in CityEngine. It provides a deep dive into the concept of the "Scope"—the invisible bounding box that controls procedural operations—and demonstrates how rotating the scope changes the direction of object movement in both 2D and 3D environments. Difference Between t() and translate() CGA has two commands related to position movement: one is t() and the other is translate(). Generally speaking, you might wonder why it is necessary to have two separate commands for moving positions. To explain the difference simply, t() moves based on a single reference point—the 'axis direction of the scope'—while translate() allows you to select one of several references (world, pivot, object, scope) and move ...

[043] How to Build a 5-Story Procedural Building in Esri CityEngine

Image
Integrating extrude, split, comp, and index commands to build complex architectural forms. This tutorial focuses on a practical exercise to implement varying floor heights, facade protrusions based on even/odd indices, and side-wall component divisions within a single CGA rule workflow. By following these steps, you will learn how to handle multi-level logic and conditional modeling in CityEngine. So far, we have covered extrude, split, comp, and index. There are many valid ways to implement this logic, so treat this workflow as just one example. Building Requirements and Modeling Goals Let's assume there is a building with the following specifications: The building footprint is a rectangle with a width (front) of 40m and a depth (side) of 20m. The height is 20m. It is a 5-story building in total. The 1st floor height is 5m, and there is a 4m wide entrance in the center of the...

[042] Understanding case...else Conditional Rules in CityEngine CGA

Image
Implement conditional decision-making in your procedural models using case...else statements and verify results with the color command. This tutorial explains the unique syntax requirements of conditional logic in CityEngine's CGA language. We discuss how to properly structure branching rules to avoid syntax errors, the necessity of the NIL command, and why placement within a rule matters. Additionally, we touch upon using the color command as a powerful tool for geometry selection verification. First, let's talk about `case...else`... As I mentioned in the earlier lectures, there are certain CGA commands that frequently travel together. Among them, one of the most common combinations is `index` used together with `case...else` statement. How case...else Differs from Traditional Programming Logic `case...else` acts like a signpost at a fork in the road when a condition is given for a variable or constant, classifying va...

[041] How to Precisely Target Faces Using comp.index in CityEngine CGA

Image
Learn how to find and use the comp.index value via the Inspector panel to precisely target and apply rules to individual faces. In procedural modeling, selecting a specific face among hundreds can be challenging with general orientation-based selectors. This tutorial demonstrates how to identify the unique index of a component and utilize it within conditional CGA rules for absolute precision in your 3D urban designs. I previously covered split.index, but as I began creating more complex forms, I realized that comp.index deserved its own explanation, so I’ll briefly cover it here. Why Traditional Selectors Are Sometimes Not Enough As you proceed with rules, the number of faces increases. To pinpoint and select a specific face, you need to use a combination of various selectors. However, selectors such as front selectors, object coordinate selectors, and world coordinate selectors operate within specific spatial conditions ...

[037] How to Select Roof Edge Types Using Comp(e) Selectors in CityEngine

Image
Classify and isolate specific roof components like eaves, ridges, and valleys to apply detailed architectural textures and geometries. This tutorial explores the specialized edge selectors in CityEngine's comp(e) command. By understanding how the software defines the topography of a roof—similar to mountain ridges and valleys—you can precisely target edges for gutters, ridge tiles, and structural details. Do you like hiking? In Korea, mountains are one of the most common sights. When we describe the topography of a mountain, we use terms like "ridge" for elevated paths, "valley" for recessed terrain, "ridges" for elevated paths and "valleys" for recessed terrain. In CityEngine, you can select specific edges by providing conditions similar to these topographical features. Core Technical Definitions of Roof Edge Selectors CityEngine provides several edge selectors specificall...