可能跨越多个连接的地形块的绘制操作的上下文。
此类用于将编辑操作应用于可能跨越多个地形块的地形区域。PaintContext 可用于编辑高度图或纹理图数据,也可用于以只读模式收集法线数据(您无法写入法线,因为它们是从高度图派生的)。
PaintContext 将计算每个地形上的相关区域,并将原始数据收集到单个 sourceRenderTarget 中。然后,您的编辑操作可以从 sourcerenderTarget 读取,并将修改后的数据写入 destinationRenderTarget。应用编辑操作后,PaintContext 还可以将 destinationRenderTarget 中的修改数据写回每个地形,确保它们之间没有接缝。
使用 PaintContext 的最简单方法是通过 TerrainPaintUtility 中的辅助函数。
TerrainPaintUtility.BeginPaintHeightmap、TerrainPaintUtility.EndPaintHeightmap、TerrainPaintUtility.BeginPaintTexture、TerrainPaintUtility.EndPaintTexture、TerrainPaintUtility.CollectNormals 和 TerrainPaintUtility.ReleaseContextResources。
您还可以通过其成员函数更直接地使用 PaintContext。通常,它们的用法顺序如下:
1) 构造函数,PaintContext.CreateFromBounds - 使用目标地形和要编辑的区域构造 PaintContext
2) PaintContext.CreateRenderTargets - 创建源和目标 RenderTargets
3) PaintContext.GatherHeightmap、PaintContext.GatherAlphamap、PaintContext.GatherNormals - 从地形块读取到 sourceRenderTarget
4) 应用编辑操作,从 sourceRenderTarget 读取,并写入 destinationRenderTarget
5) PaintContext.ScatterHeightmap、PaintContext.ScatterAlphamap - 将 destinationRenderTarget 写入地形块(可选)
6) PaintContext.Cleanup - 销毁 RenderTarget 资源(如果调用 CreateRenderTargets,则需要)
7) PaintContext.ApplyDelayedActions - 应用执行耗时更新的任何延迟操作
其他资源:TerrainPaintTool<T0>
kNormalizedHeightScale | Unity 在内部使用此值将 [0, 1] 高度值转换为纹理值,该值存储在 TerrainData.heightmapTexture 中。 |
destinationRenderTexture | (只读)编辑操作写入以修改数据的 RenderTexture。 |
heightWorldSpaceMin | 此 PaintContext 在世界空间中接触的所有地形块的最小高度。 |
heightWorldSpaceSize | 此 PaintContext 在世界空间中接触的所有地形块的高度范围(从最小到最大)。 |
oldRenderTexture | (只读)调用 CreateRenderTargets 时 RenderTexture.active 的值。 |
originTerrain | (只读)用于构建 PaintContext 的地形。 |
pixelRect | (只读)此 PaintContext 表示的像素矩形。 |
pixelSize | (只读)PaintContext 像素在地形单位中的大小(由 originTerrain 定义)。 |
sourceRenderTexture | (只读)存储来自地形块的原始数据的渲染目标。 |
targetTextureHeight | (只读)目标地形纹理的高度。这是单个地形的分辨率。 |
targetTextureWidth | (只读)目标地形纹理的宽度。这是单个地形的分辨率。 |
terrainCount | (只读)此 PaintContext 中的地形块数量。 |
PaintContext | 创建一个新的 PaintContext,以在由 pixelRect 定义的区域中编辑地形上的目标纹理。 |
Cleanup | 释放此 PaintContext 的已分配资源。 |
CreateRenderTargets | 创建 sourceRenderTexture 和 destinationRenderTexture。 |
Gather | 将用户指定的纹理数据收集到 sourceRenderTexture 中。 |
GatherAlphamap | 将 alphamap 信息收集到 sourceRenderTexture 中。 |
GatherHeightmap | 将高度图信息收集到 sourceRenderTexture 中。 |
GatherHoles | 将地形孔洞信息收集到 sourceRenderTexture 中。 |
GatherNormals | 将法线信息收集到 sourceRenderTexture 中。 |
GetClippedPixelRectInRenderTexturePixels | 检索地形的裁剪像素矩形,相对于 PaintContext 渲染纹理。 |
GetClippedPixelRectInTerrainPixels | 检索地形的裁剪像素矩形。 |
GetTerrain | 从 PaintContext 中检索地形。 |
Scatter | 通过将修改复制回源地形块的用户指定 RenderTextures 来应用已编辑的 PaintContext。 |
ScatterAlphamap | 通过将修改复制回源地形块来应用已编辑的 alphamap PaintContext。 |
ScatterHeightmap | 通过将修改复制回源地形块来应用已编辑的高度图 PaintContext。 |
ScatterHoles | 通过将修改复制回源地形块来应用已编辑的地形孔洞 PaintContext。 |
ApplyDelayedActions | 刷新由 PaintContext 高度图和 alphamap 修改创建的延迟操作。 |
CreateFromBounds | 构造一个 PaintContext,您可以使用它来编辑地形上的纹理,在由 boundsInTerrainSpace 和 extraBorderPixels 定义的区域中。 |