Коротко
- World Partition хранит большие уровни в одном постоянном файле и делит рабочую область на ячейки сетки.
- Во время выполнения ячейки загружаются и выгружаются в зависимости от расположения источников потоковой загрузки и параметров сетки.
- HLOD может отображать удалённые объекты из незагруженных ячеек с помощью прокси-геометрии.
- Перед созданием HLOD нужные акторы необходимо добавить в слой HLOD, а значение Mobility установить на Static.
В официальной документации Unreal Engine World Partition описывается как система, которая делит большие уровни на ячейки в пределах одного постоянного Level и загружает или выгружает их во время выполнения. В руководстве рассказывается, как настроить систему для архитектурного окружения, обширных ландшафтов и крупных визуализационных сцен, а также как использовать HLOD для работы с удалённой геометрией. В документации не указана конкретная версия Unreal Engine, поэтому названия меню и параметров приведены в том виде, в каком они встречаются в источнике.
1. Создайте проект или уровень World Partition
В некоторых шаблонах категории Games при создании проекта World Partition включён по умолчанию. Однако в шаблонах Blank, First Person, Third Person, Top Down и Vehicle Advanced параметр Enable Streaming по умолчанию отключён. Поэтому, если вам нужно не только разбить сцену на части, но и включить потоковую загрузку ячеек, проверьте параметр Enable Streaming в World Settings.
Чтобы создать основу для большой открытой территории, выберите File › New Level, укажите тип карты Open World и нажмите Create. В Open World по умолчанию включены World Partition, One File Per Actor, Data Layers и Hierarchical Levels of Detail. В примере из документации представлена карта с Landscape размером 2 км x 2 км и наружным освещением.
Для преобразования существующего уровня можно использовать Tools > Convert Level. Также можно запустить инструмент командной строки. В официальной документации приведён такой пример команды:
UnrealEditor.exe QAGame -run=WorldPartitionConvertCommandlet Playground.umap -AllowCommandletRenderingПараметр -ReportOnly позволяет вывести отчёт о предстоящих действиях, не выполняя преобразование. Параметр -ConversionSuffix помогает сохранить исходный уровень, добавляя _WP к имени преобразованной тестовой карты. Прежде чем использовать параметр -DeleteSourceLevels, который удаляет исходные уровни, оцените, какие файлы нужно сохранить и как устроен рабочий процесс команды.
2. Настройте потоковую загрузку ячеек под сцену
World Partition делит уровень на ячейки сетки, которые можно использовать во время выполнения. Загрузка и выгрузка ячеек зависят от расположения источников потоковой загрузки и параметров Runtime Grid. По умолчанию в качестве источника потоковой загрузки может использоваться Player Controller; кроме того, в сцену можно добавить компонент World Partition Streaming Source.
Например, чтобы ячейки вокруг точки телепортации загрузились до того, как игрок туда попадёт, в этой точке можно временно активировать источник потоковой загрузки. В компоненте есть параметры Target Grid, Priority и Target State. Target State задаёт, должны ли пересекающиеся ячейки переходить в состояние Loaded или Activated. Функция Blueprint Is Streaming Completed сообщает, завершилась ли потоковая загрузка ячеек, охватываемых компонентом.
Параметры Runtime Grid находятся в разделе World Partition Setup панели World Settings. В документации в качестве стандартной указана сетка 2D Runtime Hash, а также отмечено, что использование нескольких сеток может отрицательно повлиять на производительность. Значения ниже приведены в документации как примеры; их не следует считать универсальными рекомендуемыми настройками для любой сцены.
| Параметр | Пример из документации | Эффект |
|---|---|---|
| Cell Size | 256 м x 256 м x 256 м | Задаёт размер ячеек. |
| Loading Range | радиус 768 м | Определяет расстояние от источника потоковой загрузки, в пределах которого загружаются ячейки. |
3. Создайте слой HLOD для удалённого окружения
Потоковая загрузка ячеек может приводить к тому, что объекты в незагруженных в данный момент областях не отображаются. Система World Partition HLOD представляет такие области с помощью proxy mesh; согласно документации, этот подход может уменьшить количество draw call на кадр и повысить производительность.
Чтобы создать новый слой HLOD, выберите в Content Drawer пункт + Add, затем Miscellaneous › HLOD Layer. Выбирайте тип слоя с учётом содержимого сцены:
Instancing отображает исходные Static Mesh с низкоуровневыми настройками LOD через компоненты Instanced Static Mesh. Документация относит к подходящим примерам для этого типа imposter-объекты, например деревья и растения.
Merged Mesh объединяет акторы Static Mesh в один proxy mesh.
Simplified Mesh объединяет акторы в один proxy mesh и упрощает геометрию.
Для Merged Mesh и Simplified Mesh доступны отдельные настройки. В зависимости от типа слоя можно настроить UV для lightmap, упрощение материалов, объединение мешей и параметры создания proxy. HLODMaterial задаёт базовый материал для запекания материалов в объединённых или упрощённых слоях; в документации отмечено, что для большинства сценариев достаточно материала по умолчанию.
4. Создайте HLOD и проверьте результат
Чтобы создать HLOD, добавьте акторы в слой HLOD, установите для них Mobility на Static и включите создание HLOD. Слой можно назначить через свойство HLOD в панели Details актора, свойство Default HLOD Layer в Data Layer или через World Settings. Затем используйте Build > Build HLODs либо запустите commandlet WorldPartitionHLODsBuilder.
Влияние на рабочий процесс архитектурной визуализации
World Partition позволяет управлять нужными частями сцены вместо того, чтобы загружать всё сразу — это полезно для крупных комплексов, кампусов и моделей окружения. При командной работе One File Per Actor может сократить необходимость брать файл Level на редактирование, поскольку акторы хранятся в отдельных файлах. HLOD помогает сохранять видимость удалённых элементов ландшафта и зданий.
При этом размер ячеек и дальность загрузки нужно проверять с учётом потребностей проекта; примеры из документации не следует без проверки применять к каждой сцене. Обработка большой геометрии с небольшим шагом выборки в настройках Simplified Mesh может потребовать много памяти. Отключение distance field у объединённых мешей, отображаемых на расстоянии, может помочь сэкономить память. В документации не указаны сведения о лицензии, цене или конкретных требованиях к оборудованию; перед внедрением также следует проверить используемую версию Unreal Engine и настройки проекта команды.
Распространённые ошибки
Считать, что потоковая загрузка ячеек включена: в некоторых шаблонах параметр Enable Streaming отключён; проверьте его в World Settings.
Назначать всем акторам один и тот же тип HLOD: для деревьев можно рассмотреть instancing, а для объединённых структур — другие типы слоёв.
Забывать установить Mobility на Static перед созданием HLOD: согласно документации, это одно из необходимых условий.
Считать примерные размеры сетки универсальным решением: размер ячеек и дальность загрузки следует проверять с учётом масштаба сцены.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных и визуализационных бюро в Турции главное преимущество World Partition — возможность не загружать крупные сцены окружения целиком и упростить совместную работу над одним Level. В проектах кампусов, обширных ландшафтов и наружных презентаций можно использовать потоковую загрузку ячеек вместе с HLOD.
Однако не стоит без проверки переносить в проект примерные значения размера ячеек и дальности загрузки: их нужно тестировать с учётом конкретной сцены. При использовании Simplified Mesh следует учитывать, что небольшой шаг выборки может потребовать много памяти. В документации нет сведений о лицензии, цене и требованиях к оборудованию; бюро важно отдельно проверить совместимость с используемой версией и производительность на имеющемся оборудовании.
Частые вопросы
Для чего нужен Unreal Engine World Partition?
Он делит большой уровень на ячейки сетки в пределах одного постоянного Level. Во время выполнения ячейки загружаются и выгружаются в зависимости от расположения источников потоковой загрузки.
Что даёт HLOD в Unreal Engine?
HLOD может отображать удалённые акторы из незагруженных ячеек World Partition с помощью proxy mesh. Согласно документации, это помогает уменьшить количество draw call и повысить производительность.
Какие условия нужны перед созданием HLOD?
Акторы необходимо добавить в слой HLOD, установить для них Mobility на Static и включить создание HLOD.



