Детали и материалы
В этом туториале я расскажу вам все о деталях в материалах.
Содержание
Что это такое
Материалы, кроме информации о смешивании (blending), могут еще
содержать еще и информацию о моделях и
спрайтах на ней. Для примера посмотрите на эту траву в ХЛ2:
Как это работает
В папке мода (cstrike, hl2) должен содержаться файл detail.vbsp.
Он нужен только для
компилятора и не нуждается во включении в архив с картой или вшивани в
BSP. После компиляции, доведенной до конца, детали сами появятся на
вашей карте. Каждый абзац в этом файле обращается к именам, указанным в
vmt-файле. В ХЛ2 этот файл очень полный и содержит детали на все случаи
жизни, а в КСС к сожалению содержит всего лишь два пункта: для Prodigy
и Compound:(
Применение в КСС
К сожалению, в то время, как в ХЛ2 легко использовать детали и
создавать классную растительность, в КСС те же самые текстуры мало чего
позволяют, так как их почти нет=(. Мы попробуем создать пример,
используя
blendrockgrass00a (материал ХЛ2). Сначала создадим браш и покроем его
нашей текстурой и...???... ничего не происходит!!! Почему же? Давайте
заглянем внутрь vmt-файла(кто не знает, нужно нажать на Open Source в
окошке с каталогом тестур):
"WorldVertexTransition" { "$basetexture" "nature/rockfloor005a" "$basetexture2" "nature/dirtfloor006a" "%tooltexture" "nature/blendrockgrass004a_tooltexture" "$basetexturetransform" "center .5 .5 scale 1 1 rotate 0 translate 0 0"
"$basetexturetransform2" "center .5 .5 scale 1 1 rotate 10 translate 0
0" "%detailtype" "coastline_redgrass01" "$surfaceprop" "dirt" "%keywords" "coastline" "$bumpmap" "nature/rockfloor005a_normal" } Нас интересует следующая строка:
"%detailtype" "coastline_redgrass01" Материал буде использовать пункт coastline_redgrass01
в качестве свойств деталей для нашего материала. Ну что, теперь пришла
пора заглянуть в detail.vbsp,
лежащий в half-life 2\hl2, и
посмотреть в нем пункт coastline_redgrass01:
"coastline_redgrass01" //reduced size by 0.75(размер уменьшен до 0.75) { "density" "600.0" Group1 { "alpha" "1" Model1 { "sprite" "288 0 128 128 512" "spritesize" "0.5 0.0 19 25" "spriterandomscale" "0.2" "amount" "0.2" "detailOrientation" "2" } Model2 { "sprite" "0 0 128 128 512" "spritesize" "0.5 0.0 23 30" "spriterandomscale" "0.2" "amount" "0.1" "detailOrientation" "2" } Model3 { "sprite" "144 0 128 128 512" "spritesize" "0.5 0.0 15 15" "spriterandomscale" "0.2" "amount" "0.15" "detailOrientation" "2" } Model4 { "sprite" "144 144 128 128 512" "spritesize" "0.5 0.0 18 21" "spriterandomscale" "0.2" "amount" "0.2" "detailOrientation" "2" } //shrub(куст) Model5 { "sprite" "144 288 128 128 512" "spritesize" "0.5 0.0 38 38" "spriterandomscale" "0.2" "amount" "0.2" "detailOrientation" "2" } Model6 { "sprite" "0 288 128 128 512" "spritesize" "0.5 0.0 23 23" "spriterandomscale" "0.2" "amount" "0.1" "detailOrientation" "2" } Model7 { "sprite" "288 288 128 128 512" "spritesize" "0.5 0.0 42 42" "spriterandomscale" "0.2" "amount" "0.1" "detailOrientation" "2" } } Group2 { "alpha" "0.0" } }
И вы скажете мне: "Них%% как тут все запутано[beep]!!!" Нееет... тут
все очень легко: просто скопируйте все это безобразие в detail.vbsp,
лежащий в папке cstrike, и, о чудо! моя трава
выросла!!!:) А я не сыпал туда никаких удобрений, чесслово;)
Внутренние детали
Материал, используемый для создания деталей в ХЛ2 и КСС - это detailsprites.vtf,
который находится
в materialsource.gcf в папке hl2/materials/Detail. А
вот и он:
Мы видим 9 спрайтов, каждое размером 128x128 пикселей (это очень
важно).
Настройки Это может показаться сложным, но без этого никуда... Ниже приведены
параметры, которые я применил к карте КСС:
"coastline_redgrass01" { "density" "300.0" Group1 { "alpha" "1" Model1 { "sprite" "288 288 128 128 512" "spritesize" "0.5 0.0 15 15" "spriterandomscale" "0.2" "amount" "0.4" "detailOrientation" "2" } Model2 { "sprite" "144 288 128 128 512" "spritesize" "0.5 0.0 18 21" "spriterandomscale" "0.2" "amount" "0.1" "detailOrientation" "2" } } Group2 { "alpha" "0.0" } }
- density 300.0: плотность(кучность) травы. Чем
больше значение, тем больше будет на вашей земле травы. Заметьте, я
поставил значение, вдвое меньшее, чем в ХЛ2, так как это все-таки
мультиплеер+чтобы не тормозило на слабых компах. Значение будет
одинаково для всех спрайтов этого материала.
- sprite 288 288 128 128 512: здесь написаны
координаты нужного нам спрайта: 288,
288 - координаты точки A, 128, 128 - координаты
точки B относительно
координат точки A, 512 - общий размер материала.
В итоге наш спрайт будет выглядеть вот так:
- spritesize 0.5 0.0 15 15: тут все ясно, можете
сами поиграться с размерами.
- spriterandomscale 0.2 величина
рандомности(беспорядочности, случайности) расположения спрайтов.
- detailOrientation 2: ориентация(естесственно на
карте, а не половая:)), используются значения 1 и 2.
Также в качестве деталей можно использовать модели. Я думаю не стоит
говорить, что они будут расходовать больше ресурсов(хотя я это уже
только что сказал;)). На Prodigy это сделано так:
"model"
"models/props/de_prodigy/prodgrassa.mdl"
Свои детали
Конечно же, за этим последуют возгласы: "Вау, какая фича, но я хочу
сделать собственную травку/камешки/еще-че-нить!" Короче, по правде
говоря, у меня не было времени протестировать этот способ, так что это
только теория, но надеюсь, она вам поможет:)
Создайте текстуру по такому же шаблону, что и detailsprites.vtf
и замените ей
оригинальный файл в папке materials/Detail.
Все должно работать, правда, я сомневаюсь, что игрокам это
понравится:((прим. переводчика можно попробовать также не стирать
ничего, а просто добавить новых спрайтов, увеличив размер самой
текстуры)
Также можно попробовать вшить свои детали в BSP с помощью
BSPZip. При использовании этого метода ваши детали будут загружаться в
память вместе с картой и тогда детали на других картах останутся
прежними.
Автор: Dawa
Перевод
AndrewDragon`а Приятного вам маппинга:)
|