Создание материалов (текстур) для 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. Взять его можно здесь:
http://nemesis.thewavelength.net/index.php?p=39 . После установки
плагина в меню “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.
Скачать ее можно здесь: http://exgray.cs-mapping.com.ua/ima...l/vmtCREATE.rar Программа ставится копированием содержимого архива в папку 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.
Источник: http://cs-mapping.com.ua/forum/showthread.php?t=2292 |