Создание материалов (текстур) для HL2/CS:Source. Начнем с того, что понятие "текстуры" в "Source” было заменено на
"материалы". Материал состоит из графического файла\файлов (в принципе
той же текстуры) формата *.vtf и файла *.vmt, который содержит в себе
описание свойств материала, о которых будет сказано ниже. (*.VTF) - что скрывает в себе этот файл. А скрывает он изображение TGA формата сжатое для потребления меньшего
кол-ва видеопамяти. Чтобы создать материал для "Source" необходимо
подготовить текстуру TGA формата с глубиной цвета 24 или 32bit, в
зависимости от назначения будущего материала. Размер TGA файла должен
быть обязательно кратным 2, а именно стороны текстуры могут иметь
размеры значений: 16,32,64,128,256,512,1024 и т.д. Существуют и
промежуточные значения кратные двум. Я перечислил самые "ходовые" из
них. (*.VMT) - это ТЕКСТОВЫЙ файл, в котором описаны СВОЙСТВА материала.
Звук, издаваемый им при попадании пули, равно как и звуки шагов игрока.
Прозрачность. То как материал будет отражать окружающие предметы
(cubemap) и в каких областях изображения (envmapmask). Bump mapping
(указывается файл карты нормалей [normal map] для текстуры). Переходим непосредственно к теме тутора - созданию материалов. Для
работы с TGA нам будет необходим Adobe Photoshop любой версии. Я
использовал Photoshop CS (8й). Задача - сделать материал "гравий".
Создайте в папке \\sourcesdk_content\cstrike\materialsrc директорию с
именем test. Подберите подходящее изображения гравия, и сохраните из
Photoshop`a (save as) указав формат .tga и глубину цвета - 24bit в вашу
директорию папке \\sourcesdk_content\cstrike\materialsrc\test , назвав
его gravy Для конвертирования *.tga ---> *.vtf понадобится VTF плагин для Photoshop. Взять его можно здесь: www.nemesis.thewavelength.net
. После установки плагина в меню "save as” появится формат *.VTF. При
сохранении для того чтобы оптимизировать качество выбираете из
предустановленных настроек какого типа текстуру вы создали. То есть : Compressed Texture - обычная текстура без альфы и не карта нормалей. Просто текса. :) Compressed Texture With Alpha – эта делается из ТГАшки с альфа каналом
для создания деколей или других видов материалов с прозрачными
областями. DuDv Map – не пригодится вам если вы читаете этот тутор :) Generic (Default) – без сжатия. Normal Map - карта нормалей, в простонародье - бамп. Normal Map With Alpha – карта нормалей с альфа каналом. Sky – если вы вдруг решите создать свой скайбокс. Uncompressed Texture – без сжатия Uncompressed Texture With Alpha – без сжатия с альфой. В нашем случае выбор в пользу опции Compressed Texture. Сохраняем текстуру в папку cstrike\materials\test под именем gravy. Теперь чтобы движок принял наш материальчик ему нужно объяснить что мы
ему скормим , как оно будет звучать, освещаться и т.п. Для этого
создадим VMT файл к материалу. Воспользуемся программой vmtCREATE.
Скачать ее можно здесь. Программа ставится копированием содержимого архива в папку sourcesdk\bin Первым запуском прога спросит пути к папкам materialsrc и materials соотв. : укажите свои. Думаю знаете о чем речь. Далее программа предложит сделать соответствующие настройки . Нам нужно
выбрать тип материала LightMappedGeneric и свойство поверхности
($surfaceprop) – gravel Теперь материал "гравий" в игре будет соответственно звучать, ну и в
зависимости от исходного TGA выглядеть. ВСЕ доступные свойства
материалов Вы можете найти во вкладке Surface Prop этой программы.. Следующий шаг. Создадим материал с эффектом BUMP MAPPING. Придется скачать
плюшку от nVidia для Photoshop которая позволяет открывать DDS файлы и
делать из текстуры NormalMap. После чего в фотошопе в меню Filter
появится подменю "nVtools". Возьмем тот gravy.tga что использовался в предыдущем пояснении. Ему же и придадим объем. Откройте gravy.tga в Photoshop и в меню "Filters" выберем"nVTools" - "Normal map filter". В этом окне ВСЕ настройки за исключением полей "Alpha field" и "3D View
options" отвечают за шкалу "объема" текстуры и регулируют высоту
выпуклостей. С этим надо экспериментировать. Но наша задача создать,
значит двигаемся далее. В поле "Alternate Conversions" отметьте точкой
значение "Max RGB" и нажмите "Ok". Наш гравий преобразится и станет
фиолетовых оттенков с уже видимым объемом. Сохраните результат в папку
cstrike\materials\test с именем gravy_normal. Открывайте в блокноте GRAVY.VMT и добавьте строку "$bumpmap" "proba/gravy_bump". Получим:
"LightmappedGeneric"
{
"$baseTexture" "proba/gravy"
"$surfaceprop" "gravel"
"$bumpmap" "proba/gravy_bump"
}Сохраните. Готово! теперь запустив карту с этим материалом увидим объем на текстуре.
Эффект CUBEMAP (отражение мира)
Сделайте материал типа "стекло" (имеется ввиду изображение окна или чего
то стеклянного) и откройте его файл *.vmt . Бампмэп ему не нужен.
Добавьте строку:
"$envmap" "env_cubemap"
Для того чтобы на карте корректно в стекле отражалось окружение, нужно
поставить неподалеку ентити "env_cubemap" и после компиляции в консоли
игры набрать "buildcubemaps". Эта команда служит для просчета отражений в
той ли иной части карты (считает столько cubemaps , сколько ентитей
env_cubmap есть на карте). Информация о cubmap после этой команды
записывается в BSP карты.
Материалы с эффектом прозрачности и альфа-канал в TGA. Открываем в Рhotoshop текстуру, на которой создадим эффект прозрачности.
Здесь нам поможет альфа-канал. Текстура: [window] Выделяем стекла - это
будут прозрачные области. Теперь как показано на рисунке: Переходим к вкладке "Channels" и жмем на кнопку создания альфы: при выделении которое вы сделали на изображении нажмите Del, после чего увидите следующее: . Сохраните это как cstrike\materials\test\window.vtf. Откройте его .VMT файл и приведите в такой вид:
"LightmappedGeneric"
{
"$baseTexture" "proba/okno"
"$translucent" 1
}Если все сделали нормально, то теперь уже в HAMMERe увидите, что материал прозрачен там, где и было задумано! :) Светящиеся материалы (SELFILLUM) Принцип их создания и использования абсолютно такой же, как и для HL1.
Но все же вкратце расскажу. Допустим у нас в cstrike\materials\test
лежит материал svet.vtf Создаете материал. в VMT добавляете строку "$selfillum" 1. Будет что-то типа:
"LightmappedGeneric"
{
"$baseTexture" "test/svet"
"$selfillum" 1
}Открывайте файл lights.rad , который лежит в папке cstrike, и пишите там
путь и параметры своей текстуры... На практике же просто добавляете
строчку текста: test/svet 255 255 255 40000 . С путем вопросов нет. А по цифрам слева -
направо: интенсивность красного (255), интенсивность зеленого (255),
интенсивность синего (255) оттенков, сила света (40000) - Это не
максимум. Таким образом, варьируя значения интенсивности цветов, Вы
можете задать материалу свет любого тона и насыщенности. С такими
значениями (255 255 255 40000) свет белый, очень яркий. ------- P.S.: Теперь, когда Вы умеете создавать материалы - создание
спрайтов, текстур для моделей, в общем ГРАФИКИ движка Source уже не
будет для Вас проблемой потому что все они так же представлены файлами
*.vmt и *.vtf и базы TGA. Поизучайте оригинальные *.vmt файлы Half –
Life 2, CSS и Вы увидите какие графические чудеса можно творить на
Source. tutorial by s3rgun |