Руководство API скрипты
Экспериментальный: этот API является экспериментальным и может быть изменен или удален в будущем.

PaintContext

класс в UnityEngine.Experimental.TerrainAPI / Реализовано в: UnityEngine.TerrainModule

Описание

Контекст для операции рисования, который может охватывать несколько соединенных плиток 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 более непосредственно через его функции-члены. Как правило, они используются в следующем порядке:

  1. Конструктор, PaintContext.CreateFromBounds — создание PaintContext с целевым ландшафтом и областью для редактирования
  2. PaintContext.CreateRenderTargets — создание исходного и целевого RenderTargets
  3. PaintContext.GatherHeightmap, PaintContext.GatherAlphamap, PaintContext.GatherNormals — чтение из плиток Terrain в sourceRenderTarget
  4. Применить операции редактирования, чтение из sourceRenderTarget и запись в targetRenderTarget
  5. PaintContext.ScatterHeightmap, PaintContext.ScatterAlphamap — запись из целевого объекта RenderTarget в тайлы ландшафта (необязательно)
  6. PaintContext.Cleanup — уничтожить ресурсы RenderTarget (требуется, если вы вызываете CreateRenderTargets)
  7. 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.
Вы можете отблагодарить автора, за перевод документации на русский язык. Донат
API скрипты 2021.3