版本: Unity 6 (6000.0)
语言英语
  • C#

PaintContext

UnityEngine.TerrainTools 中的类

/

实现于:UnityEngine.TerrainModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

可能跨越多个连接的地形块的绘制操作的上下文。

此类用于将编辑操作应用于可能跨越多个地形块的地形区域。PaintContext 可用于编辑高度图或纹理图数据,也可用于以只读模式收集法线数据(您无法写入法线,因为它们是从高度图派生的)。

PaintContext 将计算每个地形上的相关区域,并将原始数据收集到单个 sourceRenderTarget 中。然后,您的编辑操作可以从 sourcerenderTarget 读取,并将修改后的数据写入 destinationRenderTarget。应用编辑操作后,PaintContext 还可以将 destinationRenderTarget 中的修改数据写回每个地形,确保它们之间没有接缝。

使用 PaintContext 的最简单方法是通过 TerrainPaintUtility 中的辅助函数。
TerrainPaintUtility.BeginPaintHeightmapTerrainPaintUtility.EndPaintHeightmapTerrainPaintUtility.BeginPaintTextureTerrainPaintUtility.EndPaintTextureTerrainPaintUtility.CollectNormalsTerrainPaintUtility.ReleaseContextResources

您还可以通过其成员函数更直接地使用 PaintContext。通常,它们的用法顺序如下:
1) 构造函数,PaintContext.CreateFromBounds - 使用目标地形和要编辑的区域构造 PaintContext
2) PaintContext.CreateRenderTargets - 创建源和目标 RenderTargets
3) PaintContext.GatherHeightmapPaintContext.GatherAlphamapPaintContext.GatherNormals - 从地形块读取到 sourceRenderTarget
4) 应用编辑操作,从 sourceRenderTarget 读取,并写入 destinationRenderTarget
5) PaintContext.ScatterHeightmapPaintContext.ScatterAlphamap - 将 destinationRenderTarget 写入地形块(可选)
6) PaintContext.Cleanup - 销毁 RenderTarget 资源(如果调用 CreateRenderTargets,则需要)
7) PaintContext.ApplyDelayedActions - 应用执行耗时更新的任何延迟操作


其他资源:TerrainPaintTool<T0>

静态属性

kNormalizedHeightScaleUnity 在内部使用此值将 [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 定义的区域中。