PaintContext
класс в UnityEngine.TerrainTools
Выполнено в:UnityEngine.TerrainModule
Описание
Контекст для операции рисования, которая может охватывать несколько связанных плиток Terrain.
Этот класс служит для применения операции редактирования к области ландшафта, которая может охватывать несколько фрагментов Terrain. 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 | Диапазон высот (от Min до Max) всех плиток Территория, которые эта PaintContext касается в мире. |
| oldRenderTexture | (Только для чтения) Значение RenderTexture.active в момент вызова CreateRenderTargets. |
| originTerrain | (Только для чтения) Территория, использованная для постройки PaintContext. |
| pixelRect | (Только для чтения) Прямоугольник пикселей, который представляет PaintContext. |
| pixelSize | (Только для чтения) Размер PaintContext пикселя в единицах местности (как определено originTerrain.) |
| sourceRenderTexture | (Только для чтения) Цель рендеринга, в которой хранятся исходные данные из плиток Terrain. |
| targetTextureHeight | (Только для чтения) Высота текстуры целевой местности. Это разрешение для одной местности. |
| targetTextureWidth | (Только для чтения) Ширина текстуры целевой местности. Это разрешение для одной местности. |
| terrainCount | (Только для чтения) Количество плиток Территория в этом PaintContext. |
Конструкторы
| Конструктор | Описание |
|---|---|
| PaintContext | Создает новый PaintContext, для редактирования текстуры на поверхности, в области, определенной pixelRect. |
Открытые методы
| Метод | Описание |
|---|---|
| Cleanup | Освободит выделенные ресурсы этого PaintContext. |
| CreateRenderTargets | Создает sourceRenderTexture и destinationRenderTexture. |
| Gather | Собирает заданные пользователем данные Текстуры в sourceRenderTexture. |
| GatherAlphamap | Собирает информацию альфа-карты в sourceRenderTexture. |
| GatherHeightmap | Собирает информацию heightmap в sourceRenderTexture. |
| GatherHoles | Собирает информацию об отверстиях в sourceRenderTexture. |
| GatherNormals | Собирает обычную информацию в sourceRenderTexture. |
| GetClippedPixelRectInRenderTexturePixels | Получает отрезанный пиксель прямоугольника для Terrain, относительно PaintContext текстур рендеринга. |
| GetClippedPixelRectInTerrainPixels | Получает обрезанный прямоугольник пикселей для Terrain. |
| GetTerrain | Получает Территорию из PaintContext. |
| Scatter | Применяет отредактированный PaintContext путем копирования изменений обратно в заданные пользователем RenderTextures для исходных плиток Terrain. |
| ScatterAlphamap | Применяет отредактированную альфа-карту PaintContext путем копирования изменений обратно в исходные плитки Территория. |
| ScatterHeightmap | Применяет отредактированную карту высот PaintContext путем копирования изменений обратно в исходные плитки Территория. |
| ScatterHoles | Применяет отредактированные отверстия рельефа PaintContext путем копирования изменений обратно в исходные плитки рельефа. |
Статические методы
| Метод | Описание |
|---|---|
| ApplyDelayedActions | Сброс отсроченных действий, созданных модификациями PaintContext heightmap и alphamap. |
| CreateFromBounds | Создает PaintContext, который можно использовать для редактирования текстуры на Территории, в области, определенной boundsInTerrainSpace и extraBorderPixels. |