|
| |||
|
| |||
| |
Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология. |
|
Terrain Design
автор: FACH | 16 Сентября 2010 | Просмотров: 5671
Автор: Дэвид Грин Перевод: ScarsSoul Оригинал: Terrain Design: Guidelines and Information
Обзор ландшафта
Unreal Engine 3 поддерживает гибкую систему ландшафтов, которая обеспечивает большое разнообразие визуальных стилей и применений. Множество различных пейзажей, рельефов и оформлений могут быть реализованы благодаря системе карт высот (heightmap), которая может воссоздать горы, холмы, долины, овраги и многое другое, а так же благодаря многослойной системе Материалов Ландшафта (multi-layer Terrain Material), которая поддерживает реалистичные текстуры земли, камня, песка и грязи.
Создание ландшафта
Ландшафт, как правило, создается с помощью одного из двух способов: вручную - непосредственно на меше ландшафта “вручную” создаются холмы и овраги; или импортом заранее созданной внешними инструментами карты высот ландшафта. Кроме того, карта высот может быть получена из DEMс - Digital Elevation Model information (Цифровая Высотная Модель - http://udn.epicgames.com/Three/TerrainsFromDEMs.html). Слои материалов, которые представляют землю, траву и скалы, могут быть созданы, используя альфа карту ландшафта, которые определяют, где смешивать текстуры на ландшафте.
Использование ландшафта и расположение Карты
Ландшафт может использоваться в небольших областях, таких как часть города, включая внутренние дворы и даже моделировать груды развалин; или вся игровая карта может быть основана на дизайне большой открытой местности, которая включает множество геологических особенностей, таких как горы и каньоны.
Ландшафт часто используется в сочетании со специально разработанными геологическими мешами – камни, холмы, скалы и даже поверхность воды. Дополнительные меши также используются для различной растительности (foliage) - трава, кусты и т.д. Дизайн карт для видеоигр часто использует способность ландшафта создать непроходимые горы или утесы вокруг игровой области, чтобы ограничить движение игрока и препятствовать тому, чтобы игрок мог уйти или упасть с края игрового мира.
Система ландшафта по существу рендерит X*Y массив треугольников меша, вершина которых Z определяет высоту треугольников в каждом точке пересечения. Одна из проблем, с которыми сталкиваются дизайнеры уровней - выбрать соответствующую схему размещения и разрешение меша ландшафта, с тем чтобы обеспечить лучшее качество изображения, сохранив производительность.
Размер Ландшафта
Unreal Engine 3 поддерживает максимальный размер мира 512k x 512k (524288 x 524288 Unreal Units). Это приблизительно эквивалентно 10 квадратным километрам (если использовать заданное в движке, по умолчанию, преобразование 1 UU = 2 см - 10 км x 10 км). Реальный размер игровой области, как правило, гораздо меньше, часто он менее 1 квадратного километра для карт с открытым пространством. Обратите внимание, что геометрия, такая, как небесная сфера (skybox), расположенная за пределами максимального размера мира, будут по-прежнему рендериться, но "мировая" геометрия ограничивается только этой доступной областью.
Разрешающая способность ХY карты высот ландшафта состоит из значения Terrain.NumPatches, т.е. 128x128 или 256x256, и значения Display.DrawScale, которое определяет размер каждой клетки (patch) ландшафта, в конечном счете по ним определяют общую площадь меша ландшафта. Выбор наиболее эффективного набора значений - размера клетки и количество клеток, необходим для достижения наилучшего баланса между детализации ландшафта и производительность рендеринга.
Не рекомендуется создать ландшафт, больше чем 1024x1024 клеток, по причинам связанных со снижением производительности и увеличением размера файла карты. Например, ландшафт 2048x2048, содержит 8 млн. треугольников, что медленно работает в редакторе и приводит к очень большому размеру файла карты. В большинстве случаев даже превышение размера 512x512 может привести к определенным техническим проблемам. В таком случае дизайн карты нужно пересмотреть, нужно ли использовать такой большой ландшафт.
Heightmap Bit-Depth
При использовании внешнего инструмента для создания файла карты высот, для последующего импорта в систему ландшафта Unreal Engine, всегда работайте с надлежащим 16-разрядным форматом карты высоты. Если Вы решили работать с 8 битным черно-белым (grayscale) файлом карт высот, из-за простоты поддержки в стандартных внешних программах, знайте, что полученный ландшафт будет использовать только 1/256 часть из доступного диапазона высот. Обычно это приводит к нежелательной ступенчатости и угловатости ландшафта.
При работе с внешними файлами высот, не рекомендуется использовать стандартные графические программы, поскольку они могут редактировать и показывать только 8-бит оттенка серого на современных видео системах. Это означает, что каждый цвет серого изображенного на 8-битной видео системе, на самом деле 256 уровней высоты, что не может быть показано визуально. Иными словами, на 8-разрядных дисплеях градация серого равная 0 (черный) на самом деле имеет 16-разрядное значения от 0 до 255, а для 1 -- 256 - 511 и т.д., таким образом, нет визуального соответствия для значений, что Вы рисуете.
Привязка к сетке
Свойство actor-а ландшафта Advanced.bEdShouldSnap должно всегда оставаться отмеченным (true) для того, чтобы после работы с ландшафтом, было гарантировано, что он останется, привязан к сетке редактора (grid). Это в комбинации с “power-of-two” (степень двойки) для Display.DrawScale и Display.DrawScale3D.X/.Y приводит к тому, что клетки должным образом размещаются на сетке редактора (соответствует сетке редактора) по всем краям.
Как только actor Ландшафта перемещен в нужное место на карте, отметьте Advanced.bLockLocation (true), тем самым, заблокировав actor Ландшафта, что предотвратит его от случайного перемещение в редакторе.
Степень двойки
Часто, работая с ландшафтом и другими игровыми объектами, Вы будете встречать фразу “power-of-two” (степень двойки). Числа “power-of-two”– это числа вычисленные по формулы 2^n, где n - любое число от 0 и больше. Так 2^0 = 1. 2^1 = 2. 2^2 = 4. 2^3 = 8. 2^4 = 16. и т.д. Общие значения “power-of-two”, используемые для ландшафта: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024.
Число клеток
Actor ландшафта поддерживает количество клеток (patches) меша указанное пользователем в свойствах ландшафта (Terrain Properties) Terrain.NumPatchesX и Terrain.NumPatchesY. Эти два свойства определяют число клеток для X и Y размерностей меша ландшафта.
Число клеток, умноженное на DrawScale ландшафта, определяет общую площадь, которую меш ландшафта покроет в редакторе.
Конкретные значения, которые поддерживаются свойством NumPatches, варьируется в зависимости от значений Terrain.MaxTesselationLevel и Terrain.MinTesselationLevel. Например, может ли NumPatches быть 40 или 85, 255 или 256 зависит от значения TesselationLevel.
Если свойства MaxTesselationLevel и MinTesselationLevel установлены в 1, то может быть определен любой произвольный размер ландшафта между 1 и максимально поддерживаемым. Это позволит создать ландшафт нечетного размера, такого как 41x79. Недостаток использования TesselationLevel = 1 в том, что все треугольники ландшафта будут отрендерены без использования LOD, динамической системы дистанционной тесселяционной оптимизации. Это может быть приемлемым для небольших ландшафтов, но для больших систем ландшафта это снизит производительность.
Не рекомендуется создать ландшафт, больше чем 1024x1024 клеток, по причинам связанных со снижением производительности и увеличением размера файла карты. Например, ландшафт 2048x2048, содержит 8 млн. треугольников, что медленно работает в редакторе и приводит к очень большому размеру файла карты. В большинстве случаев даже превышение размера 512x512 может привести к определенным техническим проблемам. В таком случае дизайн карты нужно пересмотреть, нужно ли использовать такой большой ландшафт.
Свойство MinTesselationLevel, как правило, установлено в значение по умолчанию 1. Если оно установлено в то же самое значение, как и свойство MaxTesselationLevel, то результат - то же самый, как и установка обоих свойств в 1, никакой тесселяции не происходит. Если MinTesselationLevel установлено в значение, равное половине MaxTesselationLevel, т.е. Min = 2 и Max = 4, тогда число областей тесселяции будет минимально, и увеличение расстояния от ландшафта не будет увеличивать оптимизацию четырехугольников. Другими словами, Min:Max 1:4 приводит к двум оптимизированным областям, а Min:Max 2:4 к одной.
Если MaxTesselationLevel установлен в значение, отличное от 1, то значения, поддержанные NumPatches, ограничены теперь множителями MaxTesselationLevel. Например, если MaxTesselationLevel = 4, NumPatches может быть 4, 8, 12, 16, 20, 24, ... и т.д., если MaxTesselationLevel = 8, NumPatches может быть 8, 16, 24, 32, 40, 48, ... и т.д. Настоятельно рекомендуется использовать тесселяцию, даже если это ограничивает доступный размер ландшафта только кратным значению MaxTesselationLevel.
Draw Scale
Draw Scale X and Y
Размер клетки ландшафта определяется свойствами Display.DrawScale и Display.DrawScale3D. Перемножение этих двух значений и даст размер клетки ландшафта. Другими словами, если DrawScale = 1.0 и DrawScale3D = 256.0, клетка будет иметь размер 256 Unreal Units (1.0 * 256.0), если DrawScale = 2.0 и DrawScale3D = 512.0, размер клетки 1024 uus (2.0 * 512.0), если DrawScale = 0.5 и DrawScale3D = 128.0, размер клетки 64 uus (0.5 * 128.0).
Свойство DrawScale, как правило, установлено в значение по умолчанию 1, а изменяют значение DrawScale3D, если необходим иной масштаб ландшафта, отличный от значения по умолчанию 256. DrawScale3D включает в себя свойства для каждой оси ландшафта X, Y и Z. X и Y влияют на ширину и длину меша ландшафта, в то время как Z влияет на высоту (диапазон высот) меша ландшафта.
Чтобы создать ландшафт определенной площади, например, 1 квадратный километр, необходимо подобрать соответствующее количество клеток и их масштаб. Для этого используем следующую математическую формулу:
Площадь ландшафта в Unreal Units = ( NumPatchesX * ( DrawScale * DrawScale3D.X )) * ( NumPatchesY * ( DrawScale * DrawScale3D.Y ))
Результат будет в Unreal Units, который может быть преобразован в стандартные размеры, в зависимости от коэффициента пересчета 1 uus = 2 см. Это значение движка по умолчанию. Различные игры, использующие UE3, могут использовать различные шкалы перевода, которые установит разработчик.
Набор значений, выбранных для DrawScale, будет зависеть от двух факторов, желаемого качества детализации ландшафта, и желаемой производительности рендеринга. Большая детализация ландшафта требует небольшого значения DrawScale, в результате чего, что бы реализовать требуемую площадь ландшафта, используется большее количество клеток, в то время как быстрый рендер требует небольшое их количество, а, следовательно, и большое значение DrawScale.
Хорошим решением будет использование для малых ландшафтов, таких, как например, внутренний двор, DrawScale3D.X /.Y в диапазоне от 32 до 128, в среднем 64, а для больших ландшафтов, таких как открытая местность, DrawScale3D.X /.Y в диапазоне от 128 до 512, в среднем 256.
Draw Scale Z
Свойство DrawScale3D.Z определяет степень детализации для каждой позиции вершины меша ландшафта вдоль оси Z (верх и вниз). Чем ниже значение DrawScale3D.Z, тем более ‘тонкие’ шаги высоты, а чем больше DrawScale3D.Z, тем они 'толще'. Поскольку в общей сложности есть только 65536 значения высоты, DrawScale3D.Z также определяет полный диапазон высот для ландшафта.
Дополнительная информация о DrawScale3D.Z приведена ниже.
Реальный размер клетки ландшафта
Размер клетки ландшафта определяется свойствами Display.DrawScale и Display.DrawScale3D. Эта таблица показывает примерный размер в пересчете на метры и футы, используя настройки Unreal Engine по умолчанию, 1 uus = 2 см (1 дюйм (inch) = 2.54 см).
![]()
Размер ландшафта и объем карты на диске
Полный размер ландшафта, число текстурных слоев, и другие свойства ландшафта, такие как карты освещения (lightmap), разрешение, определяет объем дополнительных ресурсов, добавленных к размеру файла карты. Большие ландшафты быстро добавляют значительное количество мегабайт к файлу карты.
Ниже приведен список размеров файлов для уровней, созданных следующим образом: - пустая чистая карта с актером ландшафта и одним направленным источником света (Directional Light); - нет слоев ландшафта; - не подготовленный/упакованный (uncooked).
![]()
Ниже приведен список размеров файлов для уровней, созданных следующим образом: - пустая чистая карта с актером ландшафта и одним направленным источником света (Directional Light); - одна 1024x1024 текстура, один материал, один TerrainMaterial, один TerrainLayerSetup; - не подготовленный/упакованный (uncooked).
![]()
Реальный размер ландшафта
В таблице ниже приведены размеры ландшафта эквивалентные реальным, при различных количествах и масштабах (draw scale) клеток (patches) ландшафта.
Размер ландшафта вычисляется как: NumPatches * ( DrawScale * DrawScale3D ) = Unreal Units.
1 Unreal Unit = 2см. 1 фут = 30.48см или 0.3048 метра. 1 м = 3.280839895 фута. 5280 футов = 1 миля.
Для определения требуемой площади ландшафта, найдите длину и ширину из этой таблицы в м/км или футах/милях, чтобы получить необходимые NumPatches и DrawScale.
Оптимизация ландшафта
Есть ряд особенностей Unreal Engine, которые помогают оптимизировать ландшафт в дополнение к выбору лучшего размера для намеченных целей.
- Используйте XY значения DrawScale между 256 и 512 и предпочтительно не ниже чем 128. Значения ниже, чем 128 создают плотные меши ландшафта, которые требуют большой мощности рендеринга. - Будет хорошо, если вы будете использовать тесселяцию ландшафта, установив значения Terrain.MinTesselationLevel = 1 и Terrain.MaxTesselationLevel = 4. Отключение тесселяции обычно приводит к большому количеству треугольников ландшафта в кадре, для чего требуется большая мощность рендеринга. - Ограничьте количество материалов, применяемых к ландшафту. Чем меньше и проще установки материала, тем быстрее он будет рендериться.
Обратите внимание, что Specular (зеркальное отражение) в данный момент отключено на материалах ландшафта (Terrain Materials) для увеличения производительности. Если Вы столкнулись с большими бликами цветов или другими подобными аномалиями после применения нового текстурного слоя или увеличения сложности существующих материалов, это значит, что у объединенного набора материалов ландшафта слишком много текстур или слишком много инструкций каким образом производить рендер. Хотя это зависит от видеокарты, общий лимит 16 текстур. Объединенные слои каждого компонента ландшафта не должны превысить лимит в 16 текстур, 3 из которых используются для lightmaps и по меньшей мере 1 для слоя blend map, оставляя нам максимум 12 текстур для использования в слоях ландшафта. Обязательно используйте кнопку "Check map for errors" (Проверить карту на ошибки), чтобы видеть, есть ли ошибки карты (http://udn.epicgames.com/Three/MapErrors.html) с объединенными материалами, примененных к ландшафту.
- Скройте треугольники ландшафта, которые никогда не видимы или расположены под другой геометрией и actor-ами, такими как кисти CSG или StaticMesh. Это достигается путем редактирования ландшафта с Visibility Tool, покрывая на клетки, которые должны быть скрыты. Области ландшафта, которые отмечаются как скрытые, должны быть достаточно большими, чтобы иметь существенное увеличение производительности, другими словами, не скрывайте одну клетку под каждым ящиком, бочкой или деревом.
Draw Scale XY and Sinking Map Assets
Как упоминалось ранее, свойство actor-а ландшафта Advanced.bEdShouldSnap должно всегда оставаться отмеченным (true) для того, чтобы после работы с ландшафтом он остался привязан к сетке редактора (grid). Это в комбинации с “power-of-two” (степень двойки) для Display.DrawScale и Display.DrawScale3D.X/.Y приводит к тому, что клетки должным образом размещаются на сетке редактора (соответствует сетке редактора) по всем краям. В большинстве случаев, клетки ландшафта будут иметь квадратные пропорции X и Y, так как любое редактирование ландшафта будет проще, если каждая четвертка клеток будет квадратом.
Why the Terrain Mesh XY Matters
Свойство ландшафта DrawScale.X/.Y определяет размер каждой клетки меша ландшафта. Эта величина так же определяет максимальный угол наклона клетки ландшафта для данной разности высот вершин. Меньшие размеры DrawScale.X/.Y дают более крутые склоны, которые иногда могут быть необходимы для ландшафтов, которые реализуют отвесные скалы.
![]()
Создавая такие объекты, как CSG (Constructive Solid Geometry) и StaticMeshes для использования на картах, есть обычная практика масштабировать их так, чтобы их размер соответствовал “power-of-two”(степень двойки) и они были привязаны к сетке редактора. Если клетки ландшафта тоже масштабированы таким образом, что бы иметь “power-of-two” размер, тогда объекты, такие как StaticMeshes утопленные в ландшафт, будут совпадать с краями клеток ландшафта, и эти клетки, которые не видимы внутри или под утопленным объектами, могут быть скрыты, используя Terrain Visibility Tool для возможного увеличения производительности. Если у объекта есть внутренняя область, к примеру, здания, участки ландшафта, которые находятся внутри здания, они должны быть скрыты, чтобы не мешать движению игрока внутри структуры.
Draw Scale Z versus Altitude Range
Свойство DrawScale3D.Z определяет степень детализации для каждой позиции вершины меша ландшафта вдоль оси Z (верх и низ). Оно определяет полный диапазон высот, которого могут достигнуть вершина ландшафта и, следовательно, треугольники. Создавая новый ландшафт, желательно изменить DrawScale3D.Z на значение ниже, чем значение по умолчанию 256 - рекомендуется значение в диапазоне 64 - 128.
Why the Z Matters
Значение DrawScale3D.Z имеет важное значение в двух областях, оно определяет полный диапазон высот, которого могут достигнуть вершина ландшафта и определяет степень детализации вершин Z, которая важна также для закрашивания. Меньшие значения DrawScale.Z дают более тонкое управление высотами вершины. Например, ссылаясь на информацию в таблице ниже, Значение DrawScale3D.Z = 2048, как результат - вершины могут быть скорректированы в высоту на 32 см каждая. Если ландшафт должен быть выровнен по краям здания или другого размещенного на ландшафте объекта, перемещение в 32 см довольно большое, а тут требуется более точное управление редактированием.
Диапазоны высот
В следующей таблице перечислены общие значения DrawScale3D.Z и эквивалентный максимальный диапазон высот от самого низкого до самого высокого значения карты высоты (heightmap) (0 или черный в формате G16, самая низкая высота, 65535, или белый в формате G16 - самая высокая высота). Значение DrawScale3D.Z, в реальных условиях эксплуатации, редко будет превышать 64. Если карта высот (G16 heightmap) импортируется из файла и это требует DrawScale3D.Z больше чем 64 - 128, карта высот должна быть изменена так, чтобы использовать больше доступного 16-разрядного диапазона так, чтобы любая степень детализации редактирования была более точной, и движение вершины во время закрашивания были более точными.
Фактическое отношение 1:512, где 1 Display.DrawScale3D.Z= 512 Unreal Units всего диапазона высот. Так разделив весь желаемый Unreal Units диапазон высот, который Вы хотите, на 512 получите необходимое значение DrawScale3D.Z.
UUs за шаг (UU/step) - максимальный диапазон высот, разделенный на 16-разрядный диапазон heightmap 65536.
1 Unreal Unit = 2см. 1 фут = 30.48см или 0.3048 метра. 1 м = 3.280839895 фута. 5280 футов = 1 миле.
#1 написал: Vermillion 22 Сентября 2010 23:04 | ICQ: 392202766 |
#2 написал: Venom 29 Ноября 2010 08:49 | ICQ: Не Указано |
#3 написал: FACH 29 Ноября 2010 13:42 | ICQ: 562039160 |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...
|
|
|
При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна! © 2008—2012, UNREAL-LEVEL.RU. Все права защищены. |