Counter-Strike 1.6
Вход
Основы создания Бамп маппинга в движке Source
Taraizer — 16 Май, 2009 - 02:46
В этом туторе я напишу Основы Создания Бамп М аппинга для любой текстуры, чтобы она выглядела более рельефно, объёмно, а следовательно более реалистично. Для того,чтобы проделать все действия описанные в статье, вы должны обладать хотябы минимальными навыками работы в Adobe Photoshop. Ну чтож, приступим.
Инструменты
1) Во первых, Вам потребуется сам Adobe Photoshop CS 8.0 (желательно именно 8-ой версии, так как на 7-ой и ниже не тестировал, но принцип работы тот же,так что можно и в седьмом попробывать).
2) Во вторых, небольшая утилита Normal Map Generator, созданной компанией ATI для генерации карты высот. Качаем http://baton.mapping.vbios.com/razdel/mapping/tools/, или по ссылке http://baton.mapping.vbios.com/razdel/mapping/tools/NormalMapGenerator/NormalMapGenerator.7z
Существует специальный фильтр для Фотошопа, под названием NormalMapFilter от NVIDIA http://baton.mapping.vbios.com/razdel/mapping/tools/NormalMapFilter/NormalMapFilter.7z Но в работе он мне не очень понравился. Иногда поглюкивает, иногда вообще вылетает с ошибкой. А карта высот получается такая же. Так что пользуемя Normal Map Generator'ом.
Создаём Бамп карту
Для начала выбираем любую подопотную текстуру, а затем сохраняем её в отдельную папку в формате .tga.
Я выбрал текстуру плитки,которую я снял с цифрового фотоаппарата:
Запускаем Normal Map Generator, и сразу же вылезет окно с предложением выбрать .tga файл. Выбираем нащу текстуру, и генерируем карту высот (она появится в той же папке, что и ваша текстура). Должно получится нечто похожее на это:
Далее запускаем Photoshop, и отрываем нашу текстуру (не бамп карту). Заходим в панель Channels. У вас должно быть 4 Альфа канала (RGB, RED, Green, Blue)
Щёлкаем правой кнопкой мыши по Red, и дублируем канал. Новый канал называем Alpha 1.
Нам нужно, чтобы этот канал был тёмного оттенка (зачем, объясню ниже) .Выделяем канал Alpha 1 (значек глаза должен быть только на Alpha 1):
Идём в Image/Adjustments/levels. Появится это окно:
Перетаскиваем вправо левый и средний ползунок до того момента, как изображение не станет тёмного оттенка (но не чисто чёрным). У меня получилось вот так:
Будте внимательны, мы затемневали не Слой, а именно Альфа канал (слой не трогаем).
Вы спросите, а зачем нам этот дополнительный Альфа канал? Объясняю.
Чем темнее Альфа канал (который мы щас делали), тем меньше Бамп будет заметен в игре. Т.е, где бамп должен немного выделятся на текстуре, то делайте Альфа канал темнее. Если наоборот, Бамп должен быть сильным- то светлее. Если вообще не делать дополнительного Альфа канала, то Бамп будет полностью засвечивать текстуру белым цветом и она будет выглядеть просто убого.
Продвигаемся дальше. Не закрывая полученную текстуру, открываем нашу Бамп карту, созданную в Normal Map Generator'е.
На обоих изображений (текстура, и бамп карта) проделываем команду Layer/New/Layer From Background. Переключаемся на Бамп карту. Выбираем на панели инструмент Move Tool (горячяя клавиша V) и перетаскиваем синюю Бамп карту в окно с нашей текстурой плитки. Дальше мы выравниваем изображение с соответсвием обычной текстуры плитки.
Нам требовылось, чтобы в Бамп карте должен быть подкоректированный Альфа канал от обычной текстуры, чего мы сейчас добились:
Обратите внимание, если вы всё сделали правильно, то канал Blue должен быть белым.
Сохраняем полученную текстуру в .tga с 32 битным цветом, и средствами SDK компилируем её в .vtf.
Свойства текстуры
Давайте удостоверимся, что папка с текстурами будет называться "box", а текстуры: "stena"(обычная) и "stena_normal"(Бамп карта).
В .vmt текстуры "stena" прописываем следующее:
"LightmappedGeneric"
{
"$basetexture" "box/stena"
"$surfaceprop" "rock"
"$envmap" "env_cubemap"
"$bumpmap" "box/stena_normal"
"$normalmapalphaenvmapmask" 1
"$envmapcontrast" 1
"$envmapsaturation" 1
"$envmaptint" "[ .40 .40 .40 ]"
}
.vmt для Бамп карты не требуется
Обратите внимание на параметр "$envmaptint". Чем больше его значение, тем светлее Бамп карта. Тоесть, чтобы конечная текстура была более светлой, то с 40 поднемите значение например до 90.
Ну вот и всё. Сравните два скрина. На скрине с Бампом плитка выглядет более реалистичнее, объёмнее и рельефнее, по сравнению текстуры без Бамп карты (кликни для увеличения):
Моим способом можно делать Бамп для любых текстур. Для каждой текстуры нужен свой собственный уровень яркости Альфа канала, и значение параметра "$envmaptint". Да, и не забудте проставить env_cubemap. Эксперементируете товарищи, результат того стоит .