Урок создания спрайтов, оверлеев, и других особых текстур
В этом уроке мы ознакомимся с вами с созданием спрайтов, оверлеев, светящихся, двойных (blend-текстур для дисплейсментов) и текстур с анимацией. Это специальные текстуры, которые разработчики используют в различных картах.

Вводная информация
Создание спрайтов, оверлеев, светящихся, двойных и анимационных текстур отличается лишь содержимым *.vmt файла, а изображение можно сделать любое и переделать в текстуру. О создании собственных текстур вы можете ознакомиться в одном из наших уроков под названием — Создании собственных текстур. Если вы еще не создавали простейших текстур, сначала прочитайте тот урок. В данном же уроке мы изучим *.vmt файлы разных видов текстур, но перед этим рассмотрим создание текстур с анимацией, так как их механизм создания немного другой.

Для начала нам нужно сделать несколько изображений кадров для будущей текстуры, каждое изображение - отдельный кадр анимации. Все они должны иметь формат TGA. Создайте где-нибудь папку materialsrc, в ней создайте ещё одну папку, например, myTexture. В эту папку поместите ваши изображения — это необходимо, чтобы компилятор текстур понял, в какую папку класть готовую текстуру, в данном случае он положит её в cstrike/materials/myTexture. Нужно, чтобы изображения имели имена такого вида: image001.tga, image002.tga, image003.tga и так далее по порядку будущих кадров.

Теперь создайте текстовый файл с таким же именем, как у изображений (в данном случае — image.txt) и впишите туда следующее:

"startframe" "1"
"endframe" "8"

Где 8 — это количество кадров анимации. Половина работы сделана, теперь нужно запустить компилятор с помощью *.bat файла. Создаём текстовый файл в той же папке с любым именем и пишем туда следующее:

"путь к компилятору vtex" image.txt

Где image.txt — это имя нашего текстового файла, в котором указано количество кадров. У кого Steam, путь к компилятору будет такой: C:\Program Files\Steam\steamapps\7950849\sourcesdk\bin\orangebox\bin\vtex.exe

У кого пиратская версия, у вас vtex находится тут: папка с вашим SDK\bin\orangebox\bin\vtex.exe

Сохраните этот текстовый файл, затем измените расширение с txt на bat и запускайте. *.VTF текстура будет создана в папке cstrike/materials/myTexture и будет иметь имя image.vtf

Возможно, было немного непонятно, но в следующий раз при создании текстуры с анимацией вам будет намного проще! Теперь перейдём к *.VMT файлам.

У текстуры с анимацией *.vmt файл выглядит так:

"LightMappedGeneric"
{
        "$baseTexture" "tesla/tesla"
        "Proxies"
        {
                "AnimatedTexture"
                {
                        "animatedTextureVar" "$basetexture"
                        "animatedTextureFrameNumVar" "$frame"
                        "animatedTextureFrameRate" "15"
                }
        }
}
В параметре $baseTexture нужно указать имя своей текстуры относительно папки materials, это как всегда. Также можно поставить параметр $translucent, если текстура имеет прозрачность.

Картинка, которая будет спрайтом, не имеет прозрачности, все прозрачные области должны быть чёрного цвета:



*.vmt файл вот такой:

"Sprite"
{
        "$spriteorientation" "vp_parallel"
        "$spriteorigin" "[ 0.50 0.50 ]"
        "$basetexture" "sprites/glow"
}
$basetexture — путь к текстуре

$spriteorientation — ориентация спрайта, может принимать следующие параметры:
— vp_parallel — спрайт всегда повёрнут к игроку, причём чем дальше он - тем больше.
— oriented — спрайт никогда не поворачивается.
— vp_parallel_oriented — спрайт всегда повёрнут к игроку и всегда одинакового размера.

Оверлеи очень похожи на декали, к картинкам особых требований нет, могут быть как прозрачными, так и нет.
"LightmappedGeneric"
{
        "$basetexture" "overlays/gravelpath01b"
        "$translucent" 1
        "$decal" 1
        "$surfaceprop" "gravel"
        $vertexalpha 1
}
Отличие оверлея от декали - его можно накладывать на дисплейсмент, для это у него есть параметр $vertexalpha, равный 1. Двойные текстуры (или blend-текстуры), которые используются для дисплейсментов, на самом деле являются двумя обычными текстурами. Эти текстуры просто объединены в один *.vmt файл:
"WorldVertexTransition"
{
        "$basetexture" "nature/dirtfloor006a"
        "$basetexture2" "nature/gravelfloor004a"
        "%tooltexture" "nature/dirtfloor006a"
        "$surfaceprop" "dirt"
        "$surfaceprop2" "dirt"
}
Заголовок должен обязательно быть WorldVertexTransition.

$basetexture и $basetexture2 — имена текстур, $surfaceprop и $surfaceprop2 — их типы материалов.

%tooltexture — в игре не используется, он нужен только в программе Hammer Editor для отображения текстуры на поверхностях, параметр должен быть таким же, как и $basetexture.

Светящиеся текстуры — это уже посложнее. В этом случае нам уже нужно 2 изображения:





Первое изображение — обычная текстура, которая вы хотите сделать светящейся, а второе — та же текстура, только в ней все области. Текстуры не должны светиться, закрашены чёрным цветом. Поняли смысл? Вот еще пример:





Светиться будет только стекло, но не рама, потому что на второй картинке рама закрашена чёрным. Теперь делаем светящуюся текстуру на основе полученной информации. Создаём 2 рисунка — один обычный, другой - особый, на котором будут только светящиеся части, а остальные - закрашены в чёрный. Превращаем их в VTF через VTFEdit и правим *.vmt файл:
"LightmappedGeneric"
{
        "$basetexture" "train/info"
        "$surfaceprop" "glass"
        "$translucent" "1"
        "$selfillum" "1"
        "$envmapmask" "train/info_ref"
}
$envmapmask — здесь указываем путь ко второму рисунку, обязательно ставим параметр $selfillum и у нас будет светящаяся текстура. Разумеется, если всё сделали правильно.

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