Sidebar

[HL2/CSS] Создание материалов.

  • Рекомендуется задавать вопросы только относительно темы с уроком. Для остальных вопросов существует раздел [url=/forums/pomosch.12/]«Помощь»[/url].

    Темы с просьбами помощи будут удаляться без предупреждения и без объяснения причины.

    Запрещается поднятие старой темы оффтопом. Ваше сообщение будет удалено, а в профиль будет выписано замечание.

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
[HL2/CSS] Создание материалов.

Создание материалов (текстур) для 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/images/tutorial/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.


tutorial by s3rgun
 
Последнее редактирование:

AndrewDragon

Уставший Дракон
VIP
10.01.2005
5 130
24
  • Золотая медаль 152
  • Золотая медаль 141
а я его еще давнее читал:D

Подумав, добавил:

черт, Вы должны добавить репутацию кому-то еще, прежде чем сможете снова добавить ее Dj_Bars
не забудь мне потом напомнить)
 

TRUP@C

Основатель CSM
Команда форума
Администратор
Спонсор
21.06.2004
5 638
  • Золотая медаль 325
  • Золотая медаль 213
  • Золотая медаль 235
  • Золотая медаль 233
Я с Барсом разделался насчет репы :)
 

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
*****ПРИМЕЧАНИЕ******
ЕСЛИ ВЫ СОЗДАЕТЕ КАРТУ НОРМАЛЕЙ НЕ СОХРАНЯЯ VTF из Photoshop с помощью плагина, а с помощью VTEX, то в названии карты нормалей нужно указывать "_normal" , т.е. gravy_normal. VTEX реагирует на сочетание "_normal" и отключает nice фильтр при компрессии карты нормали.
*********************
 

avi-nnk

New member
14.09.2005
13
если модель из метала и дерева

если модель из метала и дерева..можно ли такое в принципе сделать?
ведь текстура одна на всю модель и в vmt прописан один тип материала......

может в самой текстуре както можно назначить два материала ?????

просто хотелось бы чтоб когда стреляеш по железной части был металический звон, а если попадаешь в деревянную часть, соответственно деревянный звук.
!!!!!!! prop_physics_multiplayer !!!!!!
писали:
Сделай 2 материала, в свойствах одного звук дерева, в свойствах другого звук металла.
Например model_w.vtf (wood) и model_m.vtf (metal)
и натягивай соответствующие текстуры в Максе.
попробывал:
так и зделал. но когда модель компилиш ей какой материал назначать????? кароче я пробывал ничего не назначать....... нифига невыходит: модель звучит одинаково хоть и состоит из двух материалов model_w.vtf (wood) и model_m.vtf (metal)

звук металла это ведь -->"$surfaceprop" "metal"

вообщем может пример какой нить разместите...
 

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
Придется делать части одного объекта разными моделями :art: с разными проп свойствами при их компиляции.. Т.е. как грузовик на de_nuke. Корпус и стекла - 2 модели.
 

Вложения

  • 11.3 КБ Просмотров: 1 079

avi-nnk

New member
14.09.2005
13
да.... только если это prop_physics_multiplayer всё дико осложняется....
parent нету. а если один из них другой энтитьть где есть parent то она от пуль не шеволится .....уже неделю парюсь. задолбало всё. походу придётся смититься, и плюнуть на реальность в игре.... игра ведь в конце концов.
 

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
А..да..:) про prop_physics_multiplayer я тут недосморел..
Знач никак не получится.
 

DustmaN

Я
VIP
06.07.2004
6 525
2
0
  • Золотая медаль 223
  • Золотая медаль 122
  • Золотая медаль 231
Мне как раз такую фишку надо сделать. Текстура кирпича, на ней окно. Два разных типа.
Тогда такой вопрос: для декалей можно использовать отражения и surfaceprop? По идее - почему бы и нет, ведь такой же материал. Надо попробовать.
 

DustmaN

Я
VIP
06.07.2004
6 525
2
0
  • Золотая медаль 223
  • Золотая медаль 122
  • Золотая медаль 231
млин :( надо думать дальше...

Подумав, добавил:

ааа, лана, вырежу арки из брашей. +100 поликов на сцену не погубят.
 

Дикс

Циник
21.07.2005
1 827
штобы создать техстуру, не нужен батник. можно просто перетащить tga на vtex.exe
 

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
2 Дикс:

:D

Умный да? :bigsmile:
Ну давай, мастурбируй с втексом для каждой тгашки , профэссор :lol:
 
VIP
20.07.2004
4 742
41
48
  • Золотая медаль 214
  • Agy медаль
  • Серебряная медаль 145
  • Золотая медаль 115
+ я поржу как ты будешь делать ани текстуру

з.ы. вам не кажется что эксгрин вообще обнаглел? мало того , что он представляется бывшим барсом, так он ещё его труды себе присваивает... и куда только смотрит администрация!!!
 

Дикс

Циник
21.07.2005
1 827
2 бывшийСерый:
а, ну если "выделить-несколько-файлов" для вас не вариант, то это действительно мастурбация на сухую с крошёным мелом..

А вообще я два месяца не маппил, поэтому многое подзабыл и написал не совсем то. Правильнее создать батник с текстом:
(к примеру, для компиляции модельного материала)
"%sourcesdk%\bin\vtex" -shader VertexLitGeneric -vmtparam $modelmaterial 1 %1

а затем перетаскивать файлы на этот батник.
%1 - в данном случае это и есть имя файла, который перетащили на бат.

Подумав, добавил:

и вообще зачем так грубо отвечать? :mad:
 
Последнее редактирование:

s3rgun

creativ'щик
26.08.2005
2 633
44
2
38
Lsk | Area
  • Серебряная медаль 314
  • Золотая медаль 215
Дикс сказал(а):
2 бывшийСерый:
а, ну если "выделить-несколько-файлов" для вас не вариант, то это действительно мастурбация на сухую с крошёным мелом..
оптимальный вариант уже хорошо разжеван в моем туторе.
Может тебе его еще пару раз прочесть?

Подумав, добавил:

2 Скид:
не наглей :)
 
Последнее редактирование:

Game Server

Доноры Красавчики

Пользователи онлайн