Описание
Контекст для операции рисования, который может охватывать несколько соединенных плиток Terrain.
Этот класс используется для применения операции редактирования к области Terrain, которая может охватывать несколько тайлов Terrain. PaintContext можно использовать для редактирования данных карты высот или splatmap, а также для сбора данных нормалей в режиме только для чтения (вы не можете записывать нормали, поскольку они получены из карты высот).
PaintContext вычислит соответствующие области на каждом Terrain и соберет исходные данные в один sourceRenderTarget. Затем ваша операция редактирования может считывать данные из sourcerenderTarget и записывать измененные данные в targetRenderTarget. После того как вы применили операцию редактирования, PaintContext также может записать измененные данные в targetRenderTarget обратно в каждый Terrain, гарантируя отсутствие швов между ними.
Самый простой способ использовать PaintContext — использовать вспомогательные функции в TerrainPaintUtility: TerrainPaintUtility.BeginPaintHeightmap, TerrainPaintUtility.EndPaintHeightmap, TerrainPaintUtility.BeginPaintTexture, TerrainPaintUtility.EndPaintTexture, TerrainPaintUtility.CollectNormals and TerrainPaintUtility.ReleaseContextResources
Вы также можете использовать PaintContext более непосредственно через его функции-члены. Как правило, они используются в следующем порядке:
- Конструктор, PaintContext.CreateFromBounds — создание PaintContext с целевым ландшафтом и областью для редактирования
- PaintContext.CreateRenderTargets — создание исходного и целевого RenderTargets
- PaintContext.GatherHeightmap, PaintContext.GatherAlphamap, PaintContext.GatherNormals — чтение из плиток Terrain в sourceRenderTarget
- Применить операции редактирования, чтение из sourceRenderTarget и запись в targetRenderTarget
- PaintContext.ScatterHeightmap, PaintContext.ScatterAlphamap — запись из целевого объекта RenderTarget в тайлы ландшафта (необязательно)
- PaintContext.Cleanup — уничтожить ресурсы RenderTarget (требуется, если вы вызываете CreateRenderTargets)
- PaintContext.ApplyDelayedActions — применение любых отложенных действий, выполняющих дорогостоящие обновления
Смотрите так же: TerrainPaintTool
Статические Свойства
kNormalizedHeightScale | Unity использует это значение внутри для преобразования значения высоты [0, 1] в значение текселя, которое хранится в TerrainData.heightmapTexture. |
Свойства
destinationRenderTexture | (Только для чтения) RenderTexture, которую записывает операция редактирования для изменения данных. |
heightWorldSpaceMin | Минимальная высота всех тайлов Terrain, которых касается этот PaintContext в мировом пространстве. |
heightWorldSpaceSize | Диапазон высоты (от минимального до максимального) всех плиток Terrain, которых касается этот PaintContext в мировом пространстве. |
oldRenderTexture | (Только чтение) Значение RenderTexture.active во время вызова CreateRenderTargets. |
originTerrain | (Только для чтения) Terrain, используемый для построения PaintContext. |
pixelRect | (Только для чтения) Прямоугольник пикселей, который представляет этот PaintContext. |
pixelSize | (Только для чтения) Размер пикселя PaintContext в единицах рельефа (как определено originTerrain). |
sourceRenderTexture | (Только для чтения) Цель рендеринга, в которой хранятся исходные данные тайлов Terrain. |
targetTextureHeight | (Только чтение) Высота целевой текстуры ландшафта. Это разрешение для одного ландшафта. |
targetTextureWidth | (Только чтение) Ширина целевой текстуры ландшафта. Это разрешение для одного ландшафта. |
terrainCount | (Только чтение) Количество тайлов Terrain в этом PaintContext. |
Конструкторы
PaintContext | Создает новый PaintContext для редактирования целевой текстуры на Terrain в области, определенной pixelRect. |
Публичные Методы
Cleanup | Освобождает выделенные ресурсы этого PaintContext. |
CreateRenderTargets | Создает исходную текстуру RenderTexture и конечную текстуру RenderTexture. |
Gather | Собирает указанные пользователем данные текстуры в sourceRenderTexture. |
GatherAlphamap | Собирает информацию об альфа-карте в sourceRenderTexture. |
GatherHeightmap | Собирает информацию о карте высот в sourceRenderTexture. |
GatherHoles | Собирает информацию об отверстиях Terrain в sourceRenderTexture. |
GatherNormals | Собирает информацию о нормалях в sourceRenderTexture. |
GetClippedPixelRectInRenderTexturePixels | Извлекает обрезанный прямоугольник пикселей для Terrain относительно текстур рендеринга PaintContext. |
GetClippedPixelRectInTerrainPixels | Получает обрезанный прямоугольник пикселей для Terrain. |
GetTerrain | Извлекает Terrain из PaintContext. |
Scatter | Применяет отредактированный PaintContext, копируя изменения обратно в указанные пользователем RenderTextures для исходных плиток Terrain. |
ScatterAlphamap | Применяет отредактированную альфа-карту PaintContext, копируя изменения обратно в исходные тайлы Terrain. |
ScatterHeightmap | Применяет отредактированную карту высот PaintContext, копируя изменения обратно в исходные тайлы Terrain. |
ScatterHoles | Применяет PaintContext отредактированных отверстий Terrain путем копирования изменений обратно в исходные тайлы Terrain. |
Статические Методы
ApplyDelayedActions | Сбрасывает отложенные действия, созданные изменениями карты высот и альфа-карты PaintContext. |
CreateFromBounds | Создает PaintContext, который можно использовать для редактирования текстуры Terrain в области, определяемой параметрами boundsInTerrainSpace и extraBorderPixels. |