要访问 CityEngine 中的教程,请单击帮助 > 下载教程和示例...。 在选择教程或示例后,系统会自动下载工程并将其添加到工作空间。
CGA 参数
城市由大量对象组成。 通过设置单个建筑物的属性来控制这些对象将非常繁琐,并且几乎是不可能的。 在本教程中,您将首先学习如何使用 CGA 规则参数。
- 打开 mapcontrolTutorial_01.cej 场景。
已打开的场景包含 2 个地图图层(Terrain 和 Water)以及具有大量形状的街道网络图层。 如果您现在选择单个地块并在检查器(窗口 > 检查器)中检查其属性,则尚未分配规则参数(“规则参数”窗格为空)。 将规则文件分配给地块时,这将发生变化。
- 在场景编辑器中选择 Streetnetwork 图层。
- 单击形状 > 分配规则文件,然后选择 simpleBuildingShells_01.cga 规则文件。
- 再次选择单个地块。
现在,检查器视图中将存在可见属性 height。
- 单击检查器中的规则文件链接以打开分配的规则文件。
- 将在顶部定义高度属性:
- 重新选择地块,并生成建筑物。 结果为一幢高 80 米的建筑物。
- 在检查器中将高度值从 80 更改为 150。 请注意,规则项目随即消失。 现在,此建筑物的规则参数“高度”将被您设置的值所取代。 所有其他未受影响的地块仍将使用规则文件中的高度值。
- 重新生成建筑物,并注意建筑物高度的变化。
该值在规则文件中用于定义建筑物的高度。
// height value
attr height = 80
控制天际线
在本部分中,您将学习如何使用地图来控制城市的参数。
如果尚未打开 mapcontrolTutorial_02.cej 场景,请将其打开。
天际线地图
如果您已使用当前设置生成了一些建筑物,则您的城市将类似于下图:
这不是很有说服力,因为所有建筑物的高度均为 80 米。 优美的天际线可以改善外观。 与在第一部分中手动设置 CGA 形状属性不同,您将使用以下红色的天际线地图同时控制所有建筑物的高度。 较小的图像为地形图,以蓝色表示湖泊。
天际线地图上的红色通道表示该区域中建筑物的高度。 在对天际线地图和地形图进行比较时,可以看出在湖泊拐角附近形成了天际线。 城市的左上角还存在第二个中心。
- 单击图层 > 新建地图图层 > 映射以新建地图图层。
- 选择 skylineMap.png 作为映射文件。
- 取消选择保持比例按钮。
- 将 X 和 Z 大小更改为 3000。
- 确保将对齐设置为居中(单击对齐图标可更改模式)。
- 在映射区域中单击鼠标右键,然后单击添加行。
- 将该属性命名为 skylineValue。
- 要将图像的红色通道解释为高度,请从通道下拉列表中选择红色。
- 针对最小值,键入 20;针对最大值,键入 200。
- 单击完成,然后在检查器中重命名已创建的图层 Skyline Map。
- 在检查器中调整新地图图层的高程偏移,以使其处于可见性更好的位置。 使用 Alpha 值以使其具有一定的透明度。
- 将规则文件重新分配给地块,以便 CityEngine 完成连接。
- 选择所有地块。
- 单击高度属性中的下拉列表,然后在检查器中选择连接属性。
随即打开属性连接编辑器对话框。
- 单击图层属性,然后选择新的 Skyline Map 图层和 skylineValue 属性。 将源设置为天际线图层后,该值显示 ? 字符。这意味着选择内容包含不同的值(所有地块形状具有不同的高度值)。
- 选择单个地块,然后在检查器视图中查看其属性。 height 的值现在将连接到天际线地图。
- 在湾区周围选择一些地块,并生成建筑物。
- 将仅在大面积地块上创建较高的建筑物。
- 将为输入的地图值添加一个随机值,以使天际线有所变化。
- 在场景编辑器中选择地块图层。
- 通过右键单击图层 > 分配规则文件来分配 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)
控制土地利用类型
现在,您将学习如何使用地图来控制每个建筑物的土地利用类型。
如果尚未打开 mapcontrolTutorial_03.cej 场景,请打开该场景。
控制建筑物的土地利用类型
城市通常具有特定土地利用类型的区域。 本部分将介绍如何设置三种不同土地利用类型的属性。 以下地图显示了蓝色的商业区、红色的工业区和绿色的住宅区:
创建土地利用地图图层
在创建地图图层之前,请查看 simpleBuildingShells_03.cga 规则文件,并查找三个 CGA 属性: CGA 土地利用类型属性// land use types
attr t_industrial = 0
attr t_commercial = 0
attr t_residential = 0
您创建的地图图层需要具有匹配名称的属性。
- 通过单击场景编辑器中的眼睛符号可以隐藏天际线图层。
- 单击图层 > 新建地图图层 > 映射以新建地图图层。
- 选择 areatypes.png 作为映射文件。
- 取消选择保持比例按钮。
- 将 X 和 Z 大小更改为 3000。
- 确保将对齐设置为居中(单击对齐图标可更改模式)。
- 在映射区域中单击鼠标右键,然后单击添加行。
- 添加了以下 3 个映射属性:
- t_industrial > 红色通道
- t_commercial > 绿色通道
- t_residential > 蓝色通道
您将再次对规则文件中的这些参数进行评估,因此默认的最小值 0 和最大值 1 是非常好的通用映射值,以备将来使用。 - 单击完成以创建地图图层。
- 在检查器中重命名图层 LandUse Map。
- 在检查器视图中调整新地图图层的显示偏移,以使其处于可见性更好的位置。 使用 alpha 值以使其具有一定的透明度。
- 选择新地图图层,然后在检查器中检查其属性。
- 选择所有地块。
- 分配 simpleBuildingShells_03.cga 规则文件。
- 将土地利用参数的源设置为 LandUse Map 图层。
- 在场景中生成所有建筑物。
- 或者,可以打开 mapcontrolTutorial_04.cej 场景并生成建筑物。
现在,您将评估土地利用地图的值。
土地利用的颜色类型。
// 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