This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Professional (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Materials and Shaders
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Ландшафт (Landscape Terrain)

Система Landscape Terrain представляет собой передовую технологию моделирование местности - самого важного объекта наружных сцен. Object Landscape Terrain позволяет реконструировать практически любой произвольный ландшафт с широким спектром функциональных возможностей:

  • Практически бесконечная поверхность местности
  • Невероятная детализация до 1 мм на пиксель
  • Адаптивная аппаратная тесселяция с поддержкой карт смещения
  • Динамическая модификация во время работы - кратеры, воронки, траншеи
  • Простой и понятный API
  • До 1024 детализированных материалов
  • Система слоев с гибкими правилами наложения
  • Поддержка биноклей / оптических прицелов (x20 / угол обзора до 1 градуса)
  • Оптимизированный рендеринг и физическая производительность
  • Поддержка одновременного редактирования командой 3D художников
  • Отверстия на основе декалей

Система Landscape Terrain основана на принципе декомпозиции графических данных ландшафта, которые слишком велики, чтобы поместиться в графической памяти целиком, на меньшие прямоугольные секции, известные как "тайлы". Асинхронная потоковая передача этих плиток позволяет отображать только необходимые данные с полным уровнем детализации, независимо от поля зрения камеры с поддержкой нескольких камер. Гибкие настройки потоковой передачи позволяют настраивать рендеринг ландшафта даже для компьютеров с ограниченным объемом видеопамяти.

FOV

Примечание
Чтобы смоделировать выступы и пещеры, используйте статические меши .
Внимание
DirectX - рекомендуемый графический API для проектов, использующих систему Landscape Terrain. Если вы используете OpenGL, ознакомьтесь пожалуйста с настройками рендеринга .

Смотрите также#

Работа Landscape Terrain#

Система Landscape Terrain представлена двумя типами узлов:

  • Объект Landscape Terrain представлен бесконечной плоскостью. Это главный узел, который отвечает за визуализацию и расчеты: этот объект отображает геометрию и графические данные, представленные в мире, и предоставляет настройки обнаружения пересечений. Также в нем хранятся данные деталей (Details).
    Примечание
    В сцене может быть несколько объектов Landscape Terrain, но только один из них (активный) будет отрисован.
  • Landscape Layer Map узлы хранят произвольные графические данные, используемые для рендеринга (высота, альбедо и маски), и представляют прямоугольные слои ландшафта, которые могут быть расположены в сцене и смешаны друг с другом, составляя пейзаж.

Графические данные из Landscape Layer Maps и детали (исходные полноразмерные текстуры и сгенерированные MIP-карты) загружаются асинхронно потоками и передаются в основную виртуальную текстуру (Virtual Texture), на основе которой визуализируется Landscape Terrain. Виртуальная текстура состоит из 3 компонентов:

  • Albedo - текстура RGBA8, определяющая данные цвета ландшафта,
  • Normal - текстура RGBA8, обозначающая мелкие детали на поверхности ландшафта,
  • Height - текстура R32F, определяющая данные о высоте, согласно которым геометрия ландшафта тесселируется.
Примечание
Текстура нормалей основана на данных о высотах (Heights).

Вспомогательный режим отображения текстур. Раздел Terrain Virtual Texture содержит текстуры, связанные с ландшафтом.

Создание ландшафта#

Чтобы создать Landscape Terrain в UnigineEditor, выполните следующие действия:

  1. В Create меню выберите Landscape -> Landscape Terrain. Щелкните в произвольном месте внутри окна просмотра редактора, чтобы добавить ландшафт.

    Landscape Terrain создается с дочерним элементом Landscape Layer Map.

  2. Укажите данные о высотах, альбедо и масках для карты ландшафтного слоя, измените их при помощи Редактора кистей .
  3. Чтобы добавить еще один слой (inset), щелкните Create -> Landscape -> Landscape Layer Map.

Карты слоев#

Landscape Layer Maps представляют прямоугольные слои ландшафта. Создавая и располагая на сцене одну или несколько карт слоев, вы определяете внешний вид и функциональность ландшафта.

Каждый узел LandscapeLayerMap ссылается на ресурс .lmap, в котором хранится набор текстур:

  • Heightmap используется для создания геометрии Landscape Terrain,
  • Albedo текстура, представляющая данные цвета,
  • До 20 одноканальных масок .

Альбедо и карта высот являются основными компонентами ландшафта, определяющими его внешний вид и форму, маски предоставляют дополнительные возможности. Обратите внимание, что плотность графических данных ландшафта ограничена параметрами рендеринга независимо от плотности исходных текстур.

Все компоненты Landscape Layer Map можно редактировать через Редактор кистей .

Маски#

Landscape Layer Maps может хранить до 20 масок, составляющих слои ландшафта, которые не видны непосредственно, но могут использоваться в определенных графических и логических задачах.

Landscape Layer Map разработан как общий пул данных, данные маски которого могут использоваться для добавления деталей (Details) к поверхности Landscape Terrain, используемой в логике (например, как классификационная карта почвенного покрова), а также другими объектами, такими как Трава, например.

Пример биома с деталями на основе масок.
Примечание
Чтобы предварительно просмотреть маску ландшафта, выберите Helpers -> Landscape Masks и выделите желаемую маску. Также вы можете использовать консольную команду render_show_landscape_mask N, где N - это индекс маски от 1 до 20.

Маски названы для удобства, имена масок синхронизированы с текущим используемым ObjectLandscapeTerrain. Вы можете переименовать каждую маску как с помощью параметров ObjectLandscapeTerrain (дважды щелкнув заголовок маски и введя новое имя), так и с помощью параметров LandscapeLayerMap в соответствующих полях Name без необходимости повторного импорта.

Имена масок синхронизируются с ObjectLandscapeTerrain.
Примечание
Имена масок хранятся в объектах Landscape Terrain, т.е. имена, отображаемые в параметрах Landscape Layer Map, изменятся в соответствии с текущим включенным Landscape Terrain.

Каждая маска может быть представлена одноканальным изображением. В целях оптимизации данные масок хранятся в блоках - изображениях RGBA8 (каждый содержит 4 маски, по одной маске на каждый канал). Есть 5 блоков, так как на местности доступно 20 масок. Таким образом, данные маски 9th должны храниться в R-канале третьего блока (индекс = 2). Следующие параметры отображают информацию о соответствующей текстуре маски и могут использоваться для получения доступа к маске через API :

Mask Texture Индекс используемого блока маски.
Channel Используемый канал текстуры маски.

Смешивание карт слоев#

При наложении друг на друга Landscape Layer Maps смешиваются покомпонентно, обеспечивая удобство процесса разработки. Следующие режимы наложения можно установить для каждого текстура карты ландшафтного слоя индивидуально:

  • Additive - данные карты слоя добавляются поверх.
  • Alpha Blend - цвета этой карты слоя и нижележащей карты смешиваются.
  • Overlay - добавленные данные заменяют данные под ними.
  • Multiplicative - цвета альбедо умножаются.
Примечание
Карта высот поддерживает только режимы Additive и Alpha Blend.

Кроме того, можно указать маску непрозрачности для каждой текстуры (при условии, что для режима Data Filling установлено значение From Tileset). Для этого укажите текстуру и ее канал, которые будут обрабатываться как маска непрозрачности для соответствующей текстуры:

Порядок смешанных слоев имеет значение, используйте более высокое значение Order для карт слоев, которые должны быть сверху.

Карты слоев могут различаться по плотности и размеру, поэтому легко создавать вставки разного качества и изменять поверхность ландшафта во время выполнения .

Совместное редактирование#

Смешивание карт отдельных слоев делает систему Landscape Terrain удобной для совместного редактирования. Команда 3D-художников может одновременно создавать отдельные карты слоев и создавать большой пейзаж по частям без конфликтов.

В сочетании с функциями UNIGINE для совместной разработки (например, Node Layer, Node Reference) система позволяет нескольким художникам одновременно разрабатывать отдельные области и слои ландшафта практически любой сложности.

Чтобы подготовить мир с Landscape Terrain для совместного редактирования через VCS , выполните следующее:

  1. Подготовьте слои узлов:
    1. Создайте новый Node Layer для каждого Landscape Layer Map, представляющего статическую область ландшафта. Для удобства рекомендуется сбросить трансформацию каждого Node Layer.
    2. Сделайте каждый Landscape Layer Map дочерним узлом к соответствующему Node Layer.
  2. После изменения содержимого или параметров любого Landscape Layer Map необходимо только сохранить уровень родительского узла и зафиксировать измененный актив и ресурсы *.node через вашу систему контроля версий.
  3. После оформления заказа и перезагрузки мира изменения будут применены и будут видны на рабочих станциях других членов команды.
  4. Динамические и повторяющиеся Landscape Layer Maps (например, кратеры или фрагменты следов) можно сохранить как Node References.

Модификация во время выполнения#

Легко реализовать транспортные средства, оставляющие следы во время движения, или даже экскаватор, роющий траншеи. Доступны два способа модификации ландшафта во время выполнения:

  • Добавление слоев. Создание новых Landscape Layer Maps представляющих фрагменты траншей или ям для изменения рельефа местности. Этот способ аналогичен использованию Декалей : каждый слой представляет собой отдельный узел, поэтому вы можете управлять каждой модификацией отдельно. Кроме того, использование Landscape Layer Maps подразумевает отсутствие ограничений по плотности данных, что позволяет достичь реалистичных результатов с областями повышенной детализации.

  • Изменение буферов ландшафта. Низкоуровневая модификация ландшафта на базе CPU или GPU через API проста, как 1, 2, 3:
    1. Установите желаемую область, и Движок скопирует часть данных о местности для этой области в буфер.
    2. Измените буфер по своему усмотрению (высоту, цвет, маски или все данные сразу).
    3. По завершении Движок вставляет буфер обратно в ландшафт, заменяя старые данные.

    Для получения дополнительной информации о модификации на базе CPU и GPU во время выполнения, пожалуйста, обратитесь к статье Класс Landscape.

Настройте параметры потоковой передачи для достижения соответствующей производительности модификации ландшафта во время выполнения.

Тайлинг и потоковая передача#

Сцена может содержать тысячи Landscape Layer Maps, поэтому полноразмерные графические данные Landscape Terrain могут быть слишком большими, чтобы полностью поместиться в видеопамяти. Вместо этого все ресурсы разбиты на более мелкие прямоугольные секции - тайлы переменной плотности в зависимости от расстояния до камеры.

Отдельные тайлы асинхронно загружаются в основную виртуальную текстуру при необходимости - только если в данный момент видны камере - от самого низкого до самого высокого доступного уровня MIP. Все тайлы имеют фиксированное разрешение в видеопамяти - 128×128 px.

Неоптимизированные настройки потоковой передачи вызывают заметную загрузку тайлов при движении камеры.

Таким образом, уровень детализации Landscape Terrain и производительность сильно зависят от количества окон просмотра и их разрешения. При разработке проекта с использованием ландшафта следует учитывать производительность и потребление памяти и настраивать их для набора камер и разрешения экрана целевой платформы .

Гибкие настройки потоковой передачи позволяют настраивать рендеринг ландшафта даже для компьютеров с ограниченным объемом видеопамяти, но эти настройки зависят от используемого контента (расстояния, уровень детализации и т.д.) И требований (количества камер и окон просмотра и т.д.) и подлежат корректировке для каждого проекта индивидуально .

Для получения дополнительных сведений о настройке параметров потоковой передачи см. статьи Настройка визуализации и производительности а также Оптимизация ландшафта местности.

Детали (Details)#

Объект Landscape Terrain хранит визуальные настройки для 20 масок деталей, предназначенных для достижения лучшего уровня визуального качества при просмотре крупным планом. Детали представляют собой произвольные данные об альбедо, шероховатости и высоте (смещении), поэтому вы можете значительно улучшить внешний вид ландшафта. Детали применяются в соотвествии с масками Landscape Layer Map.

Примечание
Если ваш проект требует обнаружения столкновений с поверхностью местности, помните, что детали не участвуют в Обнаружение пересечений и столкновений , поэтому не рекомендуется применять интенсивное смещение с использованием деталей, поскольку может появиться визуальная неконсистентность.

Настройки детализации, доступные в параметрах ObjectLandscapeTerrain, позволяют определять внешний вид детали, добавлять до 1024 деталей в маску и определять материал каждой детали.

Эти параметры доступны на вкладке Node параметров ObjectLandscapeTerrain.

Для получения дополнительной информации о добавлении деталей, пожалуйста, обратитесь к статье Настройка деталей.

Пересечения и столкновения#

Система Landscape Terrain обеспечивает обнаружение пересечений и столкновений с поверхностью ландшафта так же, как и для обычных мешей. Чтобы включить обнаружение столкновений и / или пересечений для ландшафта:

  • Включите флаг Collider Object на вкладке Node.
  • Перейдите на вкладку Surface и включите флаги Intersection и Collision, настройте битовые маски .
  • Для карт ландшафтного слоя, которые должны участвовать в столкновениях и пересечениях, включите соответствующие флаги Collision и Intersection.
Примечание
Детали не участвуют в обнаружении пересечений и столкновений.

Пересечения обнаруживаются с переменной точностью, начиная с меньшего значения и заканчивая более высоким.

Обычно изменять эти значения не требуется. В случае ошибок обнаружения пересечения вы можете открыть параметры Landscape Terrain и попробовать настроить значения начальной и конечной точности и включить кубическую фильтрацию текстур для оптимального баланса, но будьте осторожны, так как это может значительно повлиять на производительность и точность:

Collision Bicubic Filter Включает бикубическую фильтрацию текстур для обнаружения столкновений.
Intersection Bicubic Filter Normal Включает бикубическую фильтрацию текстуры нормалей для обнаружения пересечения.
Intersection Bicubic Filter Height Включает бикубическую фильтрацию текстуры высот для обнаружения пересечения.
Intersection Precision Begin Начальная точность обнаружения пересечений.
Intersection Precision End Конечная точность обнаружения пересечений.

Отверстия на основе декалей#

В некоторых случаях вам может потребоваться вырезать участок поверхности местности. Для этой цели используется функция Отверстия на основе декалей, поддерживаемая Landscape Terrain.

Убедитесь, что функция Holes включена и поместите любую декаль (ортогональную, проецируемую или на основе меша) в желаемом месте и назначьте декали материал decal_terrain_hole_base:

  1. В меню Create выберите Landscape -> Hole Projected (или другой). Щелкните в окне просмотра редактора, чтобы добавить декаль.

  2. Отрегулируйте трансформацию и параметры материала декали.

Это создаст отверстие в поверхности Landscape Terrain.

Отверстие в виде декали с маской в форме окружности.

Поддерживается высокая точность пересечения с отверстиями ландшафта на основе декалей, что обеспечивает обнаружение столкновений а также все соответствующие функции редактора, такие как выделение , выравнивание по поверхности , и так далее.

Примечание
Точность при определении пересечений и столкновений существенно зависит от количества полигонов местности. Чем больше полигонов, тем выше точность.

Настройка поверхности ландшафта#

Интеграция статических мешей в ландшафт упрощается при использовании функции Terrain Lerp.

Включенное состояние Terrain Lerp материала mesh_base отмечает объект, который должен быть покрыт спроецированными текстурами Landscape Terrain, что делает ненужным настройку материалов для поверхностей этого объекта.

Эта функция подходит для создания любых вставок, таких как пещеры и туннели через горы на местности. Например, на картинке ниже туннель объединяется путем простого вырезания некоторого участка местности с декалью и заменив его мешем с включенным параметром Terrain Lerp.

Меш, интегрированный в ландшафт с включенной опцией Terrain Lerp.

Видеоурок: Landscape Terrain#

Последнее обновление: 14.12.2022
Build: ()