Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
Terrain Alphamaps
автор: FACH | 7 Июля 2010 | Просмотров: 4162

Автор: Дэвид Грин

Перевод: ScarsSoul

Оригинал: Terrain Alphamaps

 

Обзор ландшафта

 

Ландшафт - по существу, 3D объект – плоский меш, размер которого x*y вершин. Фактическое число четырехугольных поверхностей, которые рендеряться = x-1 * y-1. Так 256x256 ландшафт требует карту высот (heightmap), который имеет пространственный размер 257x257. Окно Свойств Ландшафта (Terrain Properties) определяет размер ландшафта в клетках (patches) или четырехугольных поверхностях (NumPatchesX и NumPatchesY), который эквивалентен количеству вершины -1.

 

 

Обзор Альфа карт

 

Для поддержки нескольких текстурных слоев на ландшафте, таких как земля, трава и камень, используют альфа карту (alphamap), что определяет, где текстуры смешиваются (blended) на ландшафте. Эту альфа карту также иногда называют картой веса (weight map), поскольку она определяет вес каждой смешанной текстуры. Эта альфа карта - по существу черно-белая маска (grayscale mask), которая подобна изображению alpha channel* (альфа каналов).

 

* примечание: Alpha Channel - Дополнительный канал в текстуре, которая учитывает не только прозрачность, но также и полупрозрачность в текстуре. Более подробно об альфа канале, см. в туторе Текстурирование и Материалы (Texturing and Materials).

 

Каждый слой альфа карты ландшафта имеет тот же самым пространственный размер, что и основная карта высот (heightmap) ландшафта, или меш, т.е один пиксель альфа карты должен быть эквивалентен одной вершине ландшафта, так смешивание между текстурными слоями ограничено расстоянием между вершинами меша ландшафта. Следовательно, ландшафт 128х128, поддерживает фиксированное смешивание 129х129 пикселей альфа карты. Свойства ландшафта DrawScale3D.X/.Y определяют размер каждой области смешивания, таким образом, DrawScale3D.X/.Y = 256 в результате даст смешенный текстурный слой ландшафта размером 256 Unreal Units. Другими словами, один пиксель альфа карты соответствует DrawScale3D.X/.Y размеру на ландшафте.

 

Terrain Alphamaps

 

Каждое значение пикселя альфа карты определяет процент непрозрачности для смешивания текстур, которое будет применено к эквивалентной вершине на ландшафте. Поэтому альфа карта должна быть того же разрешения, что и карта высот (heightmap), что бы обеспечить смешивание соответствующих значений 1 в 1. Когда движок рендерит треугольники ландшафта, он считывает крест-накрест строки и столбцы слоя альфа карты, что бы получить значения смешивания для каждой текстуры в каждой вершине карты высот. Значение альфа карты равное 0 (черный) не приводит к смешиванию текстур на этой вершине, значение 127 (серый) приводит к 50% смешиванию текстур на вершине, а значение 255 (белый) приводит к 100% смешиванию текстур на вершине.

 

 

alt
 

 

 

Смешивание текстур между вершинами меша ландшафта является линейным градиентом, а не резким изменением. Другими словами, текстурный слой плавно смешивается с текстурой ниже от вершины к вершине. Например, на рисунке показана одна пара треугольников ландшафта (четырехугольник), верхняя левая вершина ландшафта имеет соответствующее полное белое значение альфа карты (255), в то время как другие две вершины треугольника имеют значение равное полному черному (0). Текстурный слой тогда будет плавно смешен по всей поверхности треугольника ландшафта от вершины к вершине. В этом примере основная текстура - синяя, а текстурой наложения является желтая, таким образом, белое значение альфа карты рендерит 100%-ый желтый цвет, а черное значение альфа карты рендерит 100%-ый синий цвет. Поверхность треугольника всегда показывает плавный градиент от желтого к синему.

 

 

alt
 

 

В системе ландшафта UE3, ни карты высот (heightmap), ни альфа-карта (alphamap) не видны в Generic Browser. Это отличие от предыдущей версии движка.

 

 

Terrain Layer Setup

 

Система ландшафта UE3 поддерживает основные требования для самых распространенных стилей текстурных слоев ландшафта, с помощью свойств объекта TerrainLayerSetup (система слоев ландшафта) – Height (высота) и Slope (наклон). Это так называемые процедурные настройки слоя.

 

Тут показан пример настройки TerrainLayerSetup, слой ландшафта состоит из двух слоев, нижний [1] основной сплошной слой, и верхний слой [0] ограниченный наклонам от 0 до 45 градусов (MaxSlope.Enabled = true, MaxSlope.Base = 0.5, где 0.5 = 45 градусов),  для текстурирования поверхности сходной с равниной, где вы обычно видите траву.

 

Terrain Alphamaps

 

Обратите внимание, что, когда несколько записей существуют в TerrainLayerSetup, они накладываются в нисходящем направлении, с рендерингом текстурных слоев от основания (самое высокий номер записи) к вершине (номер [0]).  В нашем примере TerrainLayerSetup-а, запись [0] рендерится сверху записи [1].

 

Хотя с помощью процедурного текстурирования легко настроить нужные Вам стили ландшафта, такие как - равнины (по высоте), скалы (по наклону) или снег на вершинах гор (по высоте), оно не может создать более сложные геологические текстурные слои, такие как горные хребты или речные промоины. Нельзя также создать слои текстур для вьющихся рек или дорог, где высота и наклон геологической системы, может изменяться на всем протяжении. Для этих случаев подходил или ручная “раскраска” в UnrealEd или использование внешне созданных файлов альфа карт.

 

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

 

Горные хребты (технически Древовидные хребты и Стратиграфические хребты) - прочный камень, который подвергся выветриванию. Речные промоины образованы вследствие речной эрозии - рекой текущей вниз по горе. Ландшафт в качестве примера альфа карты, который мы будем использовать в этом уроке, эмитирует текстурирование горного хребта.

 

 

Создание альфа карты во внешних редакторах

 

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

 

Есть множество сторонних программ построения ландшафта, таких как HMES, Leveller, Terragen, World Machine, и другие. Их способность алгоритмически генерировать различные стили карт высот или альфа карт варьируется. Мы не будем здесь рекомендовать конкретный пакет, все зависит от того, занимается этим профессиональные арт-студии или любители.

 

Для художников, наиболее распространенным приложением, для ручного создания альфа карт, скорей всего станет Adobe PhotoShop, но есть и ряд других графических пакетов, таких как Corel PhotoPaint, PaintShopPro и т.д.

 

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

 

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

 

 

Формат альфа карты

 

Файл альфа карты – это простое 8 битное черно-белое (grayscale) изображение, похожее на маску альфа канала (alphachannel), где черный - 100% непрозрачности, белый - 100% прозрачности, а градации серого между ними - различная степень прозрачности. Фактический формат файла, требуемый UnrealEd для того, чтобы импортировать альфа карту, является G16.bmp формат, подобный формату файла карты высот. Это возможно, если для создания альфа карты используется карта высот или созданное в графическом редакторе 8 битное черное-белое растровое изображение, перед импортом в UnrealEd конвертируется в файл формата G16 (8-бит данных, должен быть просто приведены к 16-битам (* 256 или <<8)). 16-разрядные данные альфа карты G16 автоматически преобразуется обратно к 8-битам, когда импортируются в UnrealEd. Если альфа карта создается в программном обеспечении, которое поддерживает 16-разрядные форматы, таком как Raw-16, то этот файл может использоваться непосредственно, без приведения данных и требует, только, преобразование в G16.

 

Внешний файл альфа карты всегда должен иметь размерность Terrain.NumPatchesX +1 на Terrain.NumPatchesY +1. Так ландшафт 128x128 требует альфа карту 129x129, ландшафт 256x256 требует альфа карту 257x257. При попытке импортировать альфа карту, которая не имеет надлежащего размера, произойдет ошибка.

 

Если альфа карта будет алгоритмически сгенерирован приложением, которое поддерживает размеры равное только степени двойки ("power-of-two"), то необходимо будет изменить размер изображения альфа карты и установить правильное разрешение путем добавления дополнительных строки и столбца пикселей по краям. UnrealEd для UE3 выравнивает альфа карту по левому верхнему углу, поэтому одну строку и один столбец добавляют с нижнего и правого края альфа карты, что бы она содержала то же самое число строк и столбцов как меш ландшафта.

 

В зависимости от формата файла, в котором создана альфа-карта, он должен быть приведен к 16 битам и/или преобразован в G16. Есть много стороннего инструментария, который поддерживает преобразование в G16, включая G16Ed и HMCS.

 

 

Ландшафт в качестве примера с внешней альфа картой

 

Используя комбинацию приложений, следующая карта высот была создана для использования как ландшафт в UnrealEd. Карта высот была сохранена как Raw-16 и преобразована в G16.

 

Terrain Alphamaps

 

Нужная “заготовка” альфа карты была алгоритмически создана вместе с картой высот, сохранена как Raw-16 и преобразовало в 16-разрядный черно-белый (grayscale) «*.TIF», чтобы позволить модификацию в графическом редакторе. Это оригинальный Raw-16 альфа карты:

 

Terrain Alphamaps

 

Альфа карта TIF-16 была отредактирована в графическом редакторе для увеличения кривой уровня яркости с помощью комбинации инструментов Интенсивность и Контраст (Intensity and Contrast) в несколько проходов, потом она была сохранена в качестве TIF-16, а затем конвертирована вновь в G16 для импорта в UnrealEd. UnrealEd для UE3 требует более высокого контраста альфа карты чем предыдущие версии Unreal Engine, таким образом альфа карта, как правило, должна быть более выразительной чем созданные для Unreal Engine 2 и 2.5. Конечный TIF-16 выглядит следующим образом:

 

Terrain Alphamaps

 

 

Создание ландшафта с внешней альфа картой

 

Тут последовательность шагов для того, чтобы создать ландшафт с созданной альфа картой.

 

Для дополнительной информации относительно создания ландшафта в UE3 и импортирования алгоритмически созданных ландшафтов см. UDN Terrain Topics.

 

1. Поместите на новую карту actor ландшафта. Установите его свойства Terrain.NumPatchesX и Terrain.NumPatchesY равными размеру созданной карты высот (в формате G16) -1, импортируйте файл карты высот.

 

2. Поместите DirectionalLight для имитации солнечного света. Установите Movement.Rotation.Pitch = -45 градусов.

 

3. Создайте новый TerrainMaterial для основного слоя - травы. Назначьте соответствующую текстуру.

 

4. Создайте новый TerrainMaterial для горных хребтов. Назначьте соответствующую текстуру.

 

5. Создайте новый TerrainLayerSetup для основного текстурного слоя травы. Обратите внимание, что текстурный слой может быть многослойным (multi-layer) и, при желании, иметь процедурные настройки, такие как основа земля, а трава на равнинах углом от 0 до 30 градусов.

 

6. Создайте новый TerrainLayerSetup для горных хребтов. Обратите внимание, что этот текстурный слой должен быть отдельным слоем, т.к многослойное процедурное текстурирование не поддерживает импортируемые внешние альфа карты.

 

7. Добавьте два TerrainLayerSetups к массиву Terrain.Layers actor-а ландшафта. Обратите внимание, что слои, в данном диалоге списков массивов, рендерятся по восходящей от [0], таким образом, слой [0] будет основным слоем, и все слои с более высокими номерами рендерятся поверх него.

 

Terrain Alphamaps

 

9. Перейдите в режим редактирования ландшафта (Terrain Edit), для этого откройте диалоговое окно Terrain Edit. В группе Import/Export, установите галки "Height Map Only?" (Только Высотная Карта?) и "Into Current" (В текущий) так, чтобы импортировалось в выбранный слой, выберите пункт "G16BMPT3D" в выпадающем списке, поскольку мы импортируем файл формата G16, выберите TerrainLayerSetup для горных хребтов, который должен получить нашу альфа карту (выбранный слой отмечен желтым), затем нажмите кнопку Import. Найдите внешних файла G16 альфа карты в диалоговом окне и откройте его. Если нет никаких проблем с файлом альфа карты, таких как, неверный формат или несоответствующий размер, альфа карта должна загрузиться в структуру ландшафта и примениться к выборному слою. Возможно, вам придется нажать на кнопку "Recache Terrain Materials" (Перекэширование Материала Ландшафта), чтобы обновить ландшафт в области просмотра. Обратите внимание, что основной TerrainLayerSetup является многослойным с процедурным текстурированием земли и травы, и отмечен большой "P" на его иконке, а TerrainLayerSetup в который была импортирована альфа карта, расположен ниже него.

 

Terrain Alphamaps

 

После полной сборки - Build All - в UnrealEd, ландшафт выглядит так, обратите внимание на горные хребты.

Terrain Alphamaps

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1 написал: NewGame
7 Июля 2010 16:19 | ICQ: Не Указано |


Группа: Гости
Регистрация: Не Указано
smile Хорошая статья, то что нужно, я как раз с этим только начал заниматся. Спасиб автору.
Публикаций: 0 | Комментариев: 0      
#2 написал: ScarsSoul
7 Июля 2010 16:51 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 31.03.2010
Хех, FACH - время свободное появилось? Публикация за публикацией =)


--------------------
Публикаций: 0 | Комментариев: 17      
#3 написал: FACH
7 Июля 2010 16:54 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Да время появилось)
З.Ы. Не забываем автору в репу давать)


--------------------
Публикаций: 134 | Комментариев: 778      
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...






При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна!
© 2008—2012, UNREAL-LEVEL.RU. Все права защищены.