- UnrealEd
- Изучение Unreal Engine, документация на русском языке
- Landscape Outdoor Terrain
- Ландшафтные особенности
- Большие размеры уровней
- Использование памяти Landscapes
- Heightmap и Weight Data Streaming
- High Resolution LOD-Independent Lighting
- PhysX Collision
- UnrealEd
- Изучение Unreal Engine, документация на русском языке
- Landscape – технический гайд по ландшафтам
- Технические детали
- Landscape-компоненты
- Секции компонента
- Расчет размеров поля высот
- Вопросы производительности
- Рекомендованные размеры ландшафтов
- Режим Layer Debug
UnrealEd
Изучение Unreal Engine, документация на русском языке
Landscape Outdoor Terrain
Ландшафтная система позволяет вам создавать ландшафт для вашего мира – горы, долины, неровную или наклонную почву и даже отверстия для пещер. Все это легко изменить – форму и внешний вид с помощью целого ряда инструментов.
Дополнительные сведения об открытии и использовании инструмента Ландшафт см. в разделе Создание ландшафтов .
Ландшафтный инструмент имеет три режима, доступные по их значкам в верхней части окна ландшафтного инструмента.
Manage mode – Позволяет создавать новые ландшафты и изменять компоненты ландшафта. Manage mode – это также режим, в котором вы работаете с Landscape Gizmos для копирования, вставки, импорта и экспорта частей вашего ландшафта. Дополнительные сведения о режиме в Manage mode.
Sculpt mode – Позволяет изменять форму ландшафта, выбирая и используя специальные инструменты. Дополнительные сведения о режиме скульптуры см. в разделе Sculpt mode .
Paint mode – Позволяет изменять внешний вид частей ландшафта, рисуя на нем текстуры на основе слоев, определенных в Материале ландшафта. Дополнительные сведения о режиме рисования см. в разделе Paint mode.
Создание ландшафта означает создание Landscape Actor. Как и в случае с другими Актерами, вы можете редактировать многие его свойства, включая назначенный Материал, на панели Level Editor’s Details. Дополнительные сведения о Details см. в разделе Details Panel.
Ландшафтные особенности
Особенности и методы, используемые ландшафтной системой рельефа, описаны ниже.
Большие размеры уровней
Ландшафтная система прокладывает путь для ландшафтов, которые на порядки больше, чем то, что было возможно в Unreal Engine ранее. Благодаря мощной системе детализации уровней (LOD) и тому, как она эффективно использует память, карты высот вплоть до 8192×8192 теперь возможны. Движок Unreal теперь поддерживает огромные открытые миры, которые позволяют создавать любое количество типов игр быстро, легко и без модификации стандартного движка или инструментов.
Использование памяти Landscapes
Для создания больших уровней, ландшафты (Landscapes), как правило, являются лучшим выбором, чем просто статичные меши.
Статичные меши будут использовать в 6 или 7 раз больше памяти для одной и той же плотности вертексов. Ландшафты также хранят свои данные в виде текстур и могут передавать неиспользуемые уровни LOD для удаленных областей и загружать их с диска в фоновом режиме по мере приближения к ним. Ландшафты используют регулярное поле высоты (regular heightfield), поэтому данные о столкновениях также могут храниться более эффективно, чем данные о столкновениях для статичных мешей.
Преобразование LOD1 в LOD 2
Heightmap и Weight Data Streaming
Поскольку данные хранятся в текстурах, стандартная система потоковой передачи текстур в Unreal Engine 4 может быть использована для потоковой передачи mip-карт по мере необходимости. Это относится не только к данным карты высот, но и к весам текстурных слоев. Только требование mip-карт, необходимых для каждого LOD, сводит к минимуму объем используемой памяти в любое время, что увеличивает размер ландшафтов, которые могут быть созданы с момента освобождения памяти.
High Resolution LOD-Independent Lighting
Поскольку наклоны для X и Y ландшафта сохраняются, для расчетов освещения доступны все нормальные данные высокого разрешения (не LOD’d).
Это позволяет всегда использовать самое высокое разрешение местности для пиксельного освещения даже на удаленных компонентах, которые были выведены из LOD’d.
Когда эти данные высокого разрешения (high-resolution normal data) объединяются с подробными картами нормалей, ландшафты могут достичь чрезвычайно детального освещения с очень небольшими расходами ресурсов.
PhysX Collision
Landscape использует объект PhysX heightfield для столкновений как для условного, так и для столкновений твердых тел. Физические материалы могут быть определены для каждого слоя, и система столкновения будет использовать доминирующий слой в каждой позиции, чтобы определить, какой именно физический материал использовать.
Можно использовать уменьшенное разрешение коллизионного поля высоты (например, разрешение рендеринга 0,5 x), чтобы сэкономить на требованиях к памяти для больших ландшафтов. Компоненты столкновения и рендеринга для удаленных ландшафтов также могут быть потоковыми с помощью системы потоковой передачи уровней.
Источник статьи: http://unrealed.ru/landscape/
UnrealEd
Изучение Unreal Engine, документация на русском языке
Landscape – технический гайд по ландшафтам
Чтоб система ландшафтов заработала максимально эффективно, вы должны знать о некоторых определенных технических ограничениях, которые нужно брать в расчет. В данном документе прописаны все ограничения, на которые нужно обратить внимание, а также изложена ценная информация, которая поможет вам сохранить баланс между красотой и производительностью ваших ландшафтов.
Технические детали
Валидные размеры полей высот ландшафтов не всегда очевидны в самом начале. Чтоб иметь возможность определить размеры для полей высот, которые валидны и оптимальны, нужно понимать внутреннюю архитектуру Ландшафтов. Чтоб создать систему, позволяющую использовать большие ландшафты, которые эффективны с точки зрения используемой памяти и производительности, архитектура ограничивает размеры полей высот, а это означает, что есть определенные размеры, которые валидны, и прочие, не подходящие. В прежних системах ландшафтов в Unreal Engine либо вообще не было никаких ограничений (любые размеры были валидны и могли работать), либо ограничения были не строгие. Ограничения для полей высот ландшафтов гораздо более сложные и строгие.
Landscape Actor закодирован цветом, так что легко сказать, что именно делает каждая секция. Границы Landscape окрашены желтым, края каждого компонента подсвечены светло-зеленым, края секции (если секция размерами 2×2) окрашены зеленым, а отдельные Landscape-квадраты окрашены в темно-зеленый.
Color: | Landscape Component |
---|---|
Yellow: | Landscape Actor Edge |
Light Green: | Landscape Component Edge |
Medium Green: | Landscape Section Edge |
Dark Green: | Landscape Individual Quad |
Landscape-компоненты
Ландшафты разделены на множество компонентов, которые представляют собой базовый юнит Unreal в плане рендеринга, расчетов видимости и столкновения. Components в Landscape все одинакового размера и всегда квадратные. Размер Landscape component определяется при создании Landscape, и выбор зависит от размера и деталей Landscape, который вы хотите создать
Данные высоты каждого компонента хранятся в одной единственной текстуре. Поэтому ее размер должен быть числом вершин в квадрате. Общий ряд вершин по краям двух соседствующих компонентов дублируется и хранится в каждом компоненте. По этой причине вы должны подумать о количестве квадратов в каждом компоненте.
Ниже представлен очень простой Landscape (подсвечен зеленым), содержащий 4 компонента. Каждый компонент состоит из простого квадрата. Один компонент отделен, чтоб показать, как дублируются те вершины, где встречаются компоненты.
Секции компонента
Компоненты можно опционально разделить на 1 или 4 (2×2) подсекции. Эти секции служат базовым юнитом расчетов Landscape LOD.
Использование подсекции 4 (2×2) дает вам тот же размер поля высот, как если бы вы использовали в четыре раза больше компонентов всего лишь с одной подсекцией каждый, но использование нескольких компонентов обычно приводит к большей производительности.
Размер каждой секции (количество вершин) должен быть в квадрате (максимально 256×256). Таким образом разные уровни LOD могут хранится в мипмапе текстуры. Так мы получим число квадратов в компоненте, также это число в квадрате минус 1. (если 1 секция на компонент) или числов квадрате минус 2 (если 4 секции на компонент).
Отдельный компонент, который проиллюстрирован ниже, содержит 4 секции. Каждая секция состоит из 9 (3×3) квадратов. И опять, вы можете заметить, что вершины, где секции встречаются, дублируются.
Расчет размеров поля высот
Как вы можете видеть, размеры для Landscape вытекают из количества квадратов в каждой секции, количеста секций в каждом компоненте и количества компонентов, представленных в Landscape. Определив количество компонентов и, найдя решение для каждого из этих компонентов, вы можете подсчитать размеры Landscape.
Вот несколько примерных сценариев:
Пример 1
Если мы начинаем с компонента с одной единственной секцией, которая содержит 64×64 вершин, то размер такого компонента составляет 63×63 квадратов . Скажем у нас есть Landscape размером 10×10 этих компонентов, то есть у нас 630×630 квадратов в общем в нашем Landscape. Теперь, если мы хотим импортировать высоты для такого Landscape, то у нас появится поле высот размером 631×631 вершин, потому что вершин всегда на один ряд больше, чем квадратов. Так что 631×631 – это валидный размер Landscape.
Пример 2
Если у нас есть компонент, поделенный на 4 подсекции, каждая из которых собрана из 64×64 вершин, то это ведет к 63×63 квадратам на секцию, и 126×126 квадрат на компонент. Если у нас 32×32 этих компонентов, то мы получаем 126 * 32 = 4032 квадратов в общем в каждом направлении. Так что общий Landscape будет содержать 4033×4033 вершин.
Эти примеры фокусируются на квадратных ландшафтах. Но, как бы то ни было, Landscape не обязательно должен быть квадратным. Например, в первом примере 10×10 не обязательные размеры. Предлагая 63 квадрата на компонент, вы можете иметь любой Landscape из компонентов AxB с конечным размером в вершинах (A*63+1 , B*63+1).
Вопросы производительности
Выбор размера компонента, противопоставленный общему количеству компонентов – это компромисс производительности. Компоненты меньшего размера позволяют совершать более быстрый переход LOD, но меньший размер предполагают большее количество компонентов.
Каждый компонент нагружает центральный процессор и каждая секция посылает команду, так что попытайтесь минимизировать эту нагрузку и число команд. Для самых крупных ландшафтов рекомендуется использовать 1024 компонентов максимально.
Рекомендованные размеры ландшафтов
Чтоб облегчить дело, вот вам размеры, которые максимизируют область, но минимизируют количество компонентов Landscape.
Overall size (vertices) | Quads / section | Sections / component | Component size | Total Components |
---|---|---|---|---|
8129×8129 | 127 | 4 (2×2) | 254×254 | 1024 (32×32) |
4033×4033 | 63 | 4 (2×2) | 126×126 | 1024 (32×32) |
2017×2017 | 63 | 4 (2×2) | 126×126 | 256 (16×16) |
1009×1009 | 63 | 4 (2×2) | 126×126 | 64 (8×8) |
1009×1009 | 63 | 1 | 63×63 | 256 (16×16) |
505×505 | 63 | 4 (2×2) | 126×126 | 16 (4×4) |
505×505 | 63 | 1 | 63×63 | 64 (8×8) |
253×253 | 63 | 4 (2×2) | 126×126 | 4 (2×2) |
253×253 | 63 | 1 | 63×63 | 16 (4×4) |
127×127 | 63 | 4 (2×2) | 126×126 | 1 |
127×127 | 63 | 1 | 63×63 | 4 (2×2) |
Режим Layer Debug
Режим Layer Debug визуализирует влияние определенных уровней на Landscape в Viewport. Вы можете включить режим Layer Debug в меню View, который находится в Viewport, в Landscape Visualizers.
При включенном режиме Layer Debug кнопки-пульки, позволяют выбрать отдельные цветовые каналы, которые перечислены в списке целевого уровня.
Выбор уровня применит шейдер к Landscape, и он покажет область, которую покрывает канал выбранного целевого уровня.
Источник статьи: http://unrealed.ru/landscape/landscape-tehnicheskoe-rukovodstvo/