Version:

Terrain Surface Materials List 组件

Terrain Surface Materials List 组件定义表面类型和渲染材质之间的映射。您可以使用它来更改游戏不同区域中 Surface 类型的外观。当您将材质分配给表面类型时,在所需的 Axis Aligned Box Shape 组件的边界内,该类型的所有可见表面都将采用该材质。

此组件在大型地形表面上使用 宏材质详细材质 并在它们之间进行混合。这种细节材质与宏材质的混合使您能够使用小型高保真平铺细节材质,这些材质在整个地形中的颜色和光照都有变化。

宏观和细节材质混合基于材质的表面权重。在每个点上具有最高权重值的三种曲面材质混合在一起,以达到 100% 或 1.0。例如,假设您有以下表面材质和权重:

  • Grass = 0.25
  • Dirt = 0.125
  • Sand = 0.125
  • Rock = 0.05

在这种情况下,混合会忽略岩石,结果是 50% 的草、25% 的泥土和 25% 的沙子。

有关如何将详细材质与表面材质列表一起使用的示例,请按照从图像创建地形教程的 应用详细材质 部分进行操作。

用法

使用 SurfaceTag 下拉菜单选择表面类型标签,然后通过单击 并选择材质,或者从 AssetBrowser 窗口拖动材质来分配材质。

提供者

Terrain Gem

依赖

Axis-Aligned Box Shape

属性

Terrain Surface Materials List component properties

属性说明默认值
Default Material当不存在其他材质表面贴图时要回退到的默认材质。

注意: 默认材质不与其他材质混合,因为它没有表面权重。默认材质的主要预期用途是作为错误材质来查看细节材质尚未映射的每个位置,或者使用单个材质快速覆盖整个地形表面,而无需设置更复杂的映射。
Material AssetNone
Material Mappings要映射在一起的 surface tags和材质资源的数组。
Surface Tag选择要映射到材质的曲面标记。Surface: Surface TagNone
Material Asset选择要应用于表面的材质资源。Material AssetNone

TerrainAreaMaterialRequestBus

将以下请求函数与 ‘TerrainAreaMaterialRequestBus’ 事件总线接口结合使用,以便与游戏的 Surface Material List 组件进行通信。

方法名称说明参数返回值脚本化
GetTerrainSurfaceMaterialRegion检索存在 ‘TerrainSurfaceMaterialMapping’ 的区域的 Aabb。NoneAabbNo
GetSurfaceMaterialMappings检索所有已分配的曲面类型、您为其分配的材质以及为此实体设置的边界。NoneTerrain Surface Material Mapping: VectorNo
GetDefaultMaterial检索此表面材质的默认材质。NoneTerrain Surface Material MappingNo

TerrainAreaMaterialNotificationBus

通知名称说明参数返回值可脚本化
OnTerrainDefaultSurfaceMaterialCreated在分配并加载默认 Surface 材质时通知侦听器。NoneEntityId; MaterialNo
OnTerrainDefaultSurfaceMaterialDestroyed在取消分配默认表面材质时通知侦听器。NoneEntityIdNo
OnTerrainDefaultSurfaceMaterialChanged当默认 Surface 材质更改为其他材质时通知听者。NoneEntityId; MaterialNo
OnTerrainSurfaceMaterialMappingCreated在 Surface 和 Material 之间设置新映射时通知听者。NoneEntityId; Surface Tag; MaterialNo
OnTerrainSurfaceMaterialMappingDestroyed在移除 Surface 和 Material 之间的映射时通知侦听器。NoneEntityId; Surface TagNo
OnTerrainSurfaceMaterialMappingTagChanged当 surface 标签更改为现有材质的 tag 时通知侦听器。NoneEntityId; Surface Tag; Surface TagNo
OnTerrainSurfaceMaterialMappingMaterialChanged当现有 surface 标签的材质发生更改时通知侦听器。NoneEntityId; Surface Tag; MaterialNo
OnTerrainSurfaceMaterialMappingRegionCreated在创建一组表面材质映射时通知侦听器。NoneEntityId; AabbNo
OnTerrainSurfaceMaterialMappingRegionDestroyed当一组表面材质映射被销毁时通知侦听者。NoneEntityId; AabbNo
OnTerrainSurfaceMaterialMappingRegionChanged当这组表面材质映射的边界发生更改时通知侦听器。NoneEntityId; Old Region: Aabb; New Region: AabbNo