Создание материалов (текстур) для 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. Взять его можно здесь: vtfplugin.zip . После установки плагина в меню "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. Скачать ее можно здесь:
vmtCREATE.rar

Программа ставится копированием содержимого архива в папку sourcesdk\bin
Первым запуском прога спросит пути к папкам materialsrc и materials соотв. :




укажите свои. Думаю знаете о чем речь.

Далее программа предложит сделать соответствующие настройки . Нам нужно выбрать тип материала LightMappedGeneric и свойство поверхности ($surfaceprop) - gravel





Теперь материал "гравий" в игре будет соответственно звучать, ну и в зависимости от исходного TGA выглядеть. ВСЕ доступные свойства материалов Вы можете найти во вкладке Surface Prop этой программы..

Следующий шаг. Создадим материал с эффектом BUMP MAPPING.
Придется скачать c внешки плюшку от 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.
Источник: http://cs-mapping.com.ua/

Автор: s3rgun

CMT (CS Mapping Tutorials) - © 2006-2011+. Created by VM
[ Script Execution time: 0.0044 ]