编辑地图图层

场景编辑器中选择地图图层后,其属性将在检查器中处于可见状态。 您可以编辑图层参数,例如地图文件、定位边界和高程偏移。 另外,可以指定地图的叠加颜色和 Alpha 值。 某些选项可能不可用,具体取决于图层类型。

此外,还可以在检查器中编辑映射函数,请参阅编辑地图图层函数

在视窗中移动和缩放地图图层

 如果在视窗中选择一个或多个属性图层,则可以使用变换或缩放工具来移动或缩放图层。

缩放地图图层
缩放地图图层

编辑地图图层属性

地图图层可以具有自己的属性。 这些属性将在选定地图图层的情况下,在检查器图层属性窗格中进行定义。

编辑地图图层函数

地图图层函数编辑与 CGA 形状语法编辑非常相似,但属性图层仅可使用一部分函数,且没有规则或形状操作。 使用命令完成 Ctrl + 空格键可查看可用函数的列表。

attr elevation = map_01(brightness, 1.17549435E-38, 27.620806) 
+ elevationDelta + elevationOffset

有两个预定义属性将用于街道生成和 CityEngine 的其他生成部分:

  • attr elevation 用于控制地形图层的高度地图的高程。
  • attr obstacle 用于控制街道生成的障碍回避。

示例

attr elevation = sin(u * 6.3) * cos(v * 6.3) * 100

创建一个作为正弦和余弦函数的地形。

attr obstacle = brightness > 0.5

将图像地图的所有亮色部分定义为障碍。

attr height = exp(u * 5)

使用此指数函数控制规则文件的高度属性。

attr selection = rand > 0.5

定义一个可用于选择的布尔属性,以便随机选择 50% 的对象。

attr landuse =
	case u > 0.5:
		50%: "industrial" 
		else: "retail" 
	else:
		"residential"

定义一个可由 CGA 形状语法规则用于控制建筑物外观等元素的字符串属性。

图层属性代码详细信息

地图图层通常根据位置和可选的映射通道来定义一个或多个属性。 地图的尺寸将被归一化为间隔 [0..1]。 因此,地图的左下角将具有坐标 (0, 0),地图的右上角将具有坐标 (1, 1)。 归一化位置将分别被用作属性函数的预定义值“u”和“v”。 例如,以下函数将通过三角函数来控制高程:

attr PI2 = 3.141 * 2 // approx. 2 x PI
attr elevation = sin(u * PI2) * cos(v * PI2) * 100

除此之外,在属性函数中,“红色”、“绿色”、“蓝色”、“alpha”、“色调”、“饱和度”和“亮度”将分别处理地图的各个通道。 对于每个对象,系统将使用重心(质心)到 x-z 平面的投影来评估属性函数。

在下图中,系统将在已映射到“u”和“v”参数的标准 [0..1] 范围的对象的重心(质心)处评估属性“x”。 除此之外,系统将在位置“u,v”处对地图进行采样,且其红色通道将用于计算“x”。

质心处的属性 x
质心处的属性 x

将图像数据映射到规则属性

地图图层是一种用于控制 CGA 形状语法规则的非常强大的工具。 您可以从属性图层映射已在 CGA 形状语法规则中定义的任何属性。 这样,您即可通过地图来指导您的规则。 通常而言,地图可用于控制建筑物的属性,例如高度、外观、细节层次或土地利用混合。

下图将用作源图像,用于控制一组建筑物的高度。

用于控制建筑物高度的源图像
用于控制建筑物高度的源图像

假设您是从带有一组建筑物覆盖区的场景开始的,如下图所示:

带有建筑物覆盖区的场景
带有建筑物覆盖区的场景

所有形状都将被分配一个用于将覆盖区拉伸到特定高度的规则文件。

attr height = 30
Lot --> extrude(height)

创建映射图层

创建一个新的映射图层,选择您的天际线地图,设置适合您场景的边界,然后添加一个新属性 skylineValue。 其范围将定义建筑物高度的范围。

在由映射图层范围定义之前的建筑物高度
在由映射图层范围定义之前的建筑物高度

连接编辑器

要连接属性,请执行以下操作:

  1. 选择所有覆盖区形状,然后在检查器中为规则属性 height 选择连接属性...以打开连接编辑器
  2. 选择图层属性。
  3. 选择新的天际线地图图层。
  4. 选择属性 skylineValue

在由映射图层定义之后的建筑物高度
由映射图层定义的建筑物高度