要访问教程CityEngine中,单击 帮助>下载教程和例子…。选择教程或示例后,项目会自动下载并添加到您的工作区。

CGA参数

城市由大量对象组成。通过设置单个建筑物的属性来控制这些是乏味的,几乎是不可能的。在本教程中,您将首先了解如何使用 CGA 规则参数。

    1. 打开mapcontrolTutorial_01.cej场景。

      打开的场景包含两个地图图层(Terrain 和 Water)和一个具有许多形状的街道网络图层。如果您现在选择单个批次并在检查器(窗口>检查器)中检查其属性,则没有分配规则参数(规则参数窗格为空)。当您将规则文件分配给批次时,这会发生变化。

    2. 场景编辑器中选择Streetnetwork层。
    3. 单击形状>分配规则文件,然后选择simpleBuildingShells_01.cga规则文件。
    4. 再次选择单个批次。

      现在在 Inspector 视图中有可见的属性,即height

      GUID-76FB1575-2B5D-4DA9-A1F2-4C24A876121D-web

       

哪儿来的?将规则文件分配给形状(在本例中为批次)后,规则文件的属性将作为批次的规则参数可见。Source 列中的Rule项显示该值取自规则文件。
    1. 单击检查器中的规则文件链接以打开分配的规则文件。
    2. 在顶部,定义了属性高度:

该值在规则文件中用于定义建筑物的高度。

// height value
attr height = 80
    1. 重新选择地块,并生成建筑物。
      结果是一座80米高的建筑。
    1. 将检查器中的高度值从 80 更改为 150。
      请注意,规则项消失了。此建筑物的规则参数高度现在被您设置的值所取代。所有其他未触及的批次仍使用规则文件中的高度值。
    2. 重新生成建筑物,并注意建筑物高度是如何变化的。

您的场景应该类似于以下屏幕截图:

GUID-9AA93B0C-29A3-49B5-AE0C-FA8C01A59F90-web

或者,您可以打开mapcontrolTutorial_02.cej场景以查看构建结果。

控制天际线

在本节中,您将学习如何使用地图来控制城市的参数。

如果尚未打开mapcontrolTutorial_02.cej场景,请打开它。

天际线图

如果您使用当前设置生成了一些建筑物,您的城市将类似于以下内容:

GUID-2AADAB96-CDDD-43AE-ABBA-267BFD54B9F8-web

 

这不是很有说服力,因为所有建筑物的高度都相同,均为 80 米。漂亮的天际线会改善外观。与在第一部分中手动设置 CGA 形状属性不同,您将使用下面的红色天际线图一次控制所有建筑物的高度。较小的图像是地形图,用蓝色表示湖泊。

GUID-2F970F70-91D7-43CB-8EDB-079F6614333E-web
GUID-BD603FBD-D63C-480C-B44B-7B791EA1D832-web

 

天际线图的红色通道代表该区域建筑物的高度。当您将天际线图与地形图进行比较时,您会看到在湖的拐角处形成了天际线。在城市的左上角还有第二个中心。

    1. 单击“图层” >“新建地图图层” >“映射”创建一个新地图图层。
    2. 选择skylineMap.png作为映射文件。
    3. 取消选择保持比率按钮。
    4. 将 X 和 Z 大小更改为3000
    5. 确保对齐设置为居中(单击对齐图标更改模式)。
    6. 右键单击映射区域,然后单击添加行
      GUID-010EE303-B30A-4D8F-BFA3-F7E92688D323-web
    7. 将属性命名为skylineValue
    8. 您希望将图像的红色通道解释为高度,因此从通道下拉列表中选择红色
建筑高度应在 20(0% 红色)和 200(100% 红色)米之间变化。
    1. 输入20作为最小值,输入200作为最大值。
    2. 单击Finish,并在 Inspector 中重命名创建的图层Skyline Map
      GUID-E1C0CE29-00FA-4D33-88B8-DAC0FBD78F3C-web
    3. 在 Inspector 中调整新地图图层的高程偏移,使其位于具有更好可见性的位置。使用 alpha 值给它一些透明度。
您现在可以使用天际线地图控制规则参数高度
    1. 将规则文件重新分配给您的批次,以便 CityEngine 可以完成连接。
    2. 选择所有批次。
    3. 单击height属性中的下拉菜单,然后在 Inspector 中选择Connect Attribute
      GUID-F48DBB48-6A28-4F6D-ADEC-8726BA8F4E9B-web

      出现“属性连接编辑器”对话框。

    4. 单击图层属性,然后选择新的Skyline Map图层和skylineValue属性。
      GUID-712DD16D-9DF6-4D48-AFF7-84CE573BBD1A-web
      将源设置为天际线图层后,该值显示为字符 这意味着选择包含不同的值(所有地块形状都有不同的高度值)。
    5. 选择一个批次,并在 Inspector 视图中查看其属性。的值高度现在连接到天际线地图。
      GUID-B72A142B-D2A8-4989-927F-D3D74776E68A-web
    6. 在湾区周围选择一些地块并生成建筑物。
      GUID-AAC5094D-210E-43ED-BC95-E3E2199C975B-web
天际线看起来更好了,但您将使用更先进的 CGA 技术改进它。

打开simpleBuildingShells_02.cga规则文件,查找以下函数:

有变化的高度计算

// calc height with variation
getHeight(area) = 
	case area > 600 : rand(0,40)+height
	case area > 200 : rand(0,40)+height/2
	else: rand(15,30)

不是将天际线图中的高度值直接映射到建筑物高度,而是使用上述用户定义函数。(有关 CGA 规则和函数的详细信息,请参阅 CGA 形状语法教程)。这个函数做了以下两件事:

  • 高层建筑将只在大面积地块上建造。
  • 一个随机值被添加到传入的地图值中,以赋予天际线一些变化。
  1. 在场景编辑器中选择地块层。
  2. 通过右键单击图层>分配规则文件分配simpleBuildingShells_02.cga规则。

    您的场景应该类似于以下屏幕截图:

    GUID-D7D32E14-7564-4759-817C-34502F835F3C-web

     

控制土地利用类型

您现在将学习如何使用地图来控制每个建筑物的土地利用类型。

如果尚未打开mapcontrolTutorial_03.cej场景,请打开它。

控制建筑物用地类型

一个城市通常有特定土地利用类型的区域。本节介绍如何设置三种不同土地利用类型的属性。下图蓝色为商业区,红色为工业区,绿色为住宅区:

GUID-21E71257-F46A-47F0-B151-3BCAA35E916E-web
GUID-CBB10A1F-EED0-4089-85F5-F045D7262E44-web

 

创建土地利用地图图层

在创建地图图层之前,查看simpleBuildingShells_03.cga规则文件,并查找三个 CGA 属性:

CGA 土地利用类型属性

// land use types
attr t_industrial = 0
attr t_commercial = 0
attr t_residential = 0

 

您创建的地图图层需要具有名称匹配的属性。

    1. 隐藏的天际线层通过点击眼睛标志场景编辑器
    2. 单击“图层” >“新建地图图层” >“映射”创建一个新地图图层。
    3. 选择areatypes.png 作为映射文件。
    4. 取消选择保持比率按钮。
    5. 将 X 和 Z 大小更改为3000
    6. 确保对齐设置为居中(单击对齐图标更改模式)。
    7. 右键单击映射区域,然后单击添加行
    8. 添加以下三个映射属性:
      • t_industrial > 红色通道
      • t_commercial > 绿色通道
      • t_residential > 蓝色通道
      您将再次评估规则文件中的这些参数,因此默认的最小值和最大值 0 和 1 是供将来使用的良好通用映射值。
    9. 单击完成以创建地图图层。
      GUID-8794F00C-872C-43BE-BD00-CE9317B8FEED-web
    10. 在检查器中重命名LandUse Map图层。
    11. 在 Inspector 视图中调整新地图图层的显示偏移,以将其置于具有更好可见性的位置。使用alpha 值给它一些透明度。
    12. 选择新的地图图层,并在检查器中检查其属性。

检查三个 CGA 属性是否具有正确的映射。要稍后更改地图图层的某些设置,请使用检查器。

GUID-FA761C08-2DE4-4E69-946F-37F2FB4F3643-web

现在您将评估土地利用地图的值。

    1. 选择所有批次。
    2. 分配simpleBuildingShells_03.cga规则文件。
    3. 将土地利用参数的来源设置为LandUse Map图层。
      GUID-8E4E6DCE-FFD0-4272-BC10-FAAA48409357-web

在生成最终建筑场景之前,请查看simpleBuildingShells_03.cga规则文件,并找到颜色声明和functionlanduseTypeColor

土地使用的颜色类型。

// color declarations
red = "#ffaaaa"
green = "#aaffaa"
blue = "#aaaaff"
white = "#ffffff"

土地使用的颜色类型。

// Functions
landuseTypeColor = 
	case t_industrial > t_commercial && t_industrial > t_residential : red
	case t_commercial > t_industrial && t_commercial > t_residential : blue
	case t_residential > t_industrial && t_residential > t_commercial : green
	else : white
此函数分析来自土地利用地图的值并相应地返回颜色。如果来自地图的颜色通道值大于其他通道的值,则返回相应的土地利用颜色:工业为红色,商业为蓝色,住宅为绿色。通过使用调用土地使用颜色函数的颜色操作 color(landuseTypeColor),将颜色应用于生成的建筑物。
  1. 生成场景中的所有建筑物。
  2. 或者,您可以打开mapcontrolTutorial_04.cej场景并生成建筑物。
    GUID-15A44B5C-406B-4297-A7B4-03B80BB09D64-web