Как сделать спрей без фона
Как сделать спрей без фона
Для тех, кто не хочет делать все вручную, существует веб-приложение: https://mishcatt.github.io/VTF-Editor/
Примерно так можно вычислить вес в КБ для форматов DXT3 и DXT5:
Можно заранее вычислить это значение и проверить превысит ли размер спрея 512КБ.
На протяжении всего руководства я буду делать спрей и отсылаться на свой вариант в качестве примера. Исходная гифка из примера:
Я пытался написать это руководство так, чтобы по нему можно было создать спрей с любой комбинацией свойств: анимированный, прозрачный, переливающийся, поэтому в некоторых местах могут возникать ответвления и дополнительные пометки.
Для создания спрея нам понадобятся программы VTFEdit, VIDE и какой-нибудь растровый графический редактор.
Это первая программа, которая нужна для создания файла текстуры нашего спрея
Теперь давайте разберёмся какой спрей мы хотим.
Можно нарисовать все кадры и мипмапы [ru.wikipedia.org] в графическом редакторе. В этом случае можно пропустить этапы разбиения гифки на кадры и подгонку размеров к степеням двойки и нарисовать всё уже в правильных размерах.
На этой странице перед разбиением на кадры так же можно подогнать размеры, удалить кадры, изменить скорость или добавить текст или эффекты. Для этого можно после загрузки гифки на сайт нажать на одну из этих кнопок:
Если это не было сделано до разбиения на кадры, то придется выполнять одни и те же действия над каждым кадром. Ничего страшного если кадров несколько, как это было у меня, но если кадров значительно больше, то есть два варианта, либо использовать xnConvert либо вернуться назад и произвести нужные модификации перед разбиением.
Изменение размеров изображения или холста в Paint NET
В моём случае ширина кадра уже была равна 128 (т.е степень двойки 2^7), а вот высота была равна 96 пикселям. я решил увеличить её до 128.
После расширения холста появились белые полоски, их можно удалить используя инструмент Выбор прямоугольной области, а потом нажать на клавишу Delete
Так как в гифке было всего два кадра, можно увеличить разрешение изображения и уместиться в 512 КБ. Более высокое разрешение важно в моём случае, т.к. при низком разрешении пиксельное изображение в игре превратится в размазню.
Следующей по величине степенью двойки идём 2^8 = 256, такой размер и сделаем
Если у вас тоже пиксель-арт изображение, то при увеличении размера стоит выбрать Метод соседних пикселей, чтобы у нас не было размытого изображения.
Теперь можно сохранить изменения.
При сохранении вылезет окошко с параметрами сохранения, там нужно указать 32-битную глубину цвета, если мы хотим прозрачный спрей.
Те же действия проделаем с оставшимися кадрами.
Чтобы наш спрей переливался и выглядел с разных расстояний по-разному нам нужны разные кадры для разных расстояний. Можно выбрать другую гифку, в которой такое же количество кадров (и проделать с ней те же операции), а можно каким-нибудь образом изменить текущие кадры (например изменить цветовой тон).
Стоит так же учитывать, что, кадры предназначенные для дальних расстояний должны быть меньшего размера, по сравнению с теми, что предназначены для ближних. Например Исходный размер всех кадров, которые будут видны при ближнем рассмотрении спрея, 256×256, следующий набор кадров должен быть размера 128×128, то есть в два раза меньше. И так далее, чем больше наборов кадров, тем красивее, но, как правило, для того, чтобы был заметен эффект переливания, больше двух наборов кадров не требуется.
Для красоты я решил сделать еще один набор кадров уже размера 64×64 и опять изменил оттенок на 120 (а потом можно будет зациклить, то есть использовать для 32×32 изображение из 256×256)
Теперь у меня есть три набора кадров, по 2 кадра в каждом.
Приступим к созданию текстуры спрея.
Откроется окно параметров текстуры. Ниже я привел скриншоты моих параметров. Там, где помечено красным, нужно установить такое же значение, за исключением Aplha format (здесь можно выбрать тот формат, который вам нужен), остальное можно оставить без изменений.
Если вам не нужен эффект переливания, то можно убрать галочку Generate Mipmaps и сократить вес файла примерно в 2 раза.
После установки параметров текстуры можно нажать на кнопку Ок
На вкладке Image можно (но не в моём примере) установить флаг Point sampling, если не важен эффект переливания и нужно, чтобы границы пикселей чётко прорисовывались.
На вкладке Info показывается вес файла текстуры (Size). Тут можно проверить не превышает ли он 512 КB. Если так получилось, что вес выше 512КБ, еще не поздно Сделать Import заново, выбрать меньше кадров или указать другой формат текстуры. Если по прежнему не получается уложиться, придётся уменьшать размер изображений (в два раза). Проще всего это сделать при установке параметров текстуры на первой вкладке General поставить галочки Resize и Clamp и указать нужный размер.
Следующие действия можно не выполнять, если вам НЕ нужен эффект переливания.
Разворачиваем второй снизу набор кадров, нажимаем правой кнопкой мыши на первый кадр (Frame 0) в развёрнутом списке и выбираем пункт From file.
В открывшемся окне выбираем подготовленный нами заранее первый кадр второго набора
Таким же образом подменяем второй кадр второго набора на свой.
У меня есть ещё третий набор кадров, и мне его тоже нужно подменить (розовый слайм).
В списке осталось еще несколько наборов кадров вплоть до размера 1×1. Там можно воспользоваться пунктом From Image. и, так сказать, зациклить наборы кадров. То есть четвёртый набор кадров будет уменьшенной в 8 раз (2^3, т.к. «циклятся» три набора кадров) копией первого набора
И по аналогии пятый набор будет уменьшенной копией второго, и так, пока не закончатся наборы кадров.
Чтобы игра увидела наш файл текстуры спрея, нужно создать файл материала (VMT), создадим его!
Осталось только зайти в игру, в главном меню зайти в настройки, на вкладке Other выбрать из списка свой новый спрей и нажать OK.
В этом разделе руководства перечислены возможные проблемы, с которыми вы можете столкнуться при создании или проверке спрея. Если вашей проблемы тут нет или ни одно из решений не помогло, пишите в комментарии.
Возможно, в пути к VIDE.exe есть пробелы или нелатинские символы (русские буквы например) или программа запущена прямо из архива. Распакуйте из архива папку с программой в нормальное место (не рабочий стол) куда-нибудь в корень жесткого диска, например, чтобы вышло как-нибудь так «D:/MySprays/VIDE/VIDE.exe».
Скорее всего текущим игровым режимом или сервером выключена возможность ставить спреи. Зайдите в другой режим, например в песочницу.
Могут быть и другие причины, но о них я и сам не знаю, обычно создание текстуры и материала спрея заново помогало.
На этом наконец-то всё, надеюсь, было хоть что-то понятно, я не запутал вас лишними уточнениями, и у вас всё заработало с первой попытки.
Если что-то не получается, задавайте вопросы в комментарии, и я постараюсь ответить на них (в ЛС не отвечаю). Так же хочу заметить, что сообщения вида «Сделай мне спрей» я за вопросы не считаю и буду игнорировать.
Об ошибках в руководстве тоже можно уведомить в комментариях.
Если сильно нужно, могу попытаться записать видео по этому руководству, может кто-то так лучше понимает и усваивает.
Как сделать спрей без фона
Обычно новички используют встроенную в саму игру возможность использовать свою картинку в качестве спрея. Однако игра делает это дело скверно. Не верите?
Для начала, попытаемся понять, что делает TF2 с нашими картинками. Создадим тестовую картинку без прозрачности размером 512х512 пикселей, и «скормим» её игре. После этого поищем свежий файл spray.vtf в каталоге Steam’а. Нашли? Окей. Его размер около 40 кб; откроем его в утилите VTFEdit.
Смотрим, что написано во вкладке «info». А написано там такое – тип сжатия DXT1, размер 256х256 пикселей. То есть, игра мало того, что уменьшила размер картинки, так еще и отчасти испортила её специфическим текстурным сжатием. Теперь подсунем игре картинку в формате tga, с прозрачными областями. Повторяем процедуру, и видим, что используется сжатие DXT5, размер картинки 256х256, размер файла 87 кб.
Закроем VTFEdit, и запустим его заново. Опять пытаемся импортировать нашу картинку. Но на этот раз выберем сжатие DXT5. Еще стоит обратить внимание на вот что: снять галочки с Resize и Generate Normal Maps, а еще лучше включить галочку Generate Mipmaps, и там выбрать Mipmap filter: Box (upd: нет, только не Box: у него в vtfedit кривая реализация, уж лучше Blackman или «Кайзер») и Sharpen filter: none.
Типичные настройки импорта в VTFEdit:
Кроме того, после импорта, в левой панели стоит взвести два флажка: «anisotropic filtering» и «no level of details». Фактически, это означает «игнорировать настройки детализации игры и показывать спрей всегда с максимальным качеством.
Записываем спрей. Размер файла – 340 кб. Ура! Наш высококачественный спрей готов. Конечно, сжатие DXT5 немного испортило картинку, но выглядит она в своих 512х512 все равно лучше, чем, например, та же картинка в 256х256 без сжатия.
А реально используются лишь RGBA8888, DXT5, DXT3 и DXT1.
Цифры для сравнения: картинка 512х512 без сжатия – 1 Мб (не годится по размеру для спрея), в DXT5 – 256 Кб, в DXT1 – 128 Кб.
«Прозрачность» (и полупрозрачность) хранится в отдельном слое «A» (alpha-канал). И, соответственно, занимает место. до 1/4 в режиме без сжатия и до 1/2 второй в режиме со сжатием DXT3 и DXT5.
Если взвести галочку «Generate Mipmaps», файл спрея резко начнёт занимать примерно на треть больше места.
Почему? Да потому, что эта галочка позволяет сохранить в теле файла спрея его уменьшенные со сглаживанием копии. Они показываются игре, когда игрок отдаляется от текстуры. Чем дальше точка зрения, тем меньший кадр достается из обоймы и предъявляется усталому взору игрока. Это нужно для того, чтобы картинка в отдалении неприятно не мерцала муаром – который видеокарта просто не может устранить; видеоакселераторы умеют растягивать текстуры, но не умеют уменьшать их. Поэтому уменьшение производится заранее, еще на этапе подготовки любой текстуры в игре.
Выглядит это внутри нашего спрея примерно так:
Обратите внимание, картинка уменьшается вплоть до размера одной точки.
Что до подготовки мипмап в VTFEdit’е, на мой взгляд, лучший фильтр для мипмапов – «Box» c резкостью «none» или «sharpen soft». Дело в том, что алгоритм «Box» создан как раз для уменьшения картинки в кратное число раз, а именно так мипмапы и генерируются: каждая текстурка в них – уменьшенная вдвое копия предыдущей. UPD: Практика показала, что по-настоящему высококачественных алгоритмов изменения размера в составе VTFEdit-а увы, нет. Теперь я обычно пользуюсь для создания мипмап алгоритмом Blackman’а, c резкостью None. В таком случае резкости бывает маловато. Компенсировать этот эффект не выходит. Даже самый слабый алгоритм наведения резкости (sharpen soft) даёт слишком много резкости. Выходом могла бы служить выгрузка текстуры в DDS-формате (как при создании спреев-переливачек), и ручное составление мипмап, но увы, это слишком кропотливая работа, одна из тех, про которую говорят, что «игра не стоит свеч».
Кроме того, мипмапы используются в создании спреев-переливачек, но об этом дальше.
Ничего сложного. Просто отметьте несколько файлов при импорте в VTFEdit – и получите свою анимацию.
⅓ размера файла). Можно избавится и от прозрачности, чтобы получить вполтора раза больше места, если это уместно на конкретной картинке, разумеется. Или уменьшить размер кадра с 512х512 до 256х256 или даже еще ниже.
Вот некоторые цифры, полученные опытным путем, они помогут в создании анимации:
Темп анимации – 5 кадров в секунду. Кажется, это число изменить нельзя. (?)
Вы должно быть видели такие спреи – подходишь к ним ближе, и картинка изменяется.
Как это работает? В мипмапе, во всех её «кадрах», картинка должна быть одна и та же – только разного размера. Но если мы заменим один из кадров – получим именно то, что хотели.
Здесь нам потребуются некоторые специальные утилиты.
Я позже напишу инструкцию подробную инструкцию, а пока пусть будет черновичок:
Где-то мне попадался еще другой способ формирования мип-мап; и тот, второй способ мне нравился больше; состав инструментов был почти таким же, но, кажется без directx sdk, а замена картинки производилась прямо в Фотошопе. Но что-то не могу это воспроизвести. Упоминаю я здесь потому, что взялся описывать качественные техпроцессы, так вот, этот способ был менее удобным, но качество на выходе давал лучше, потому что качество сжатия dxt у nvidia-вского плагина выше, чем у тулзы из микрософтовского сдк.
Коротко: взводите эти флажки, если хотите получить спрей максимального качества.
Как сделать спрей без фона
Простой спрей
1. КСС импортирует спреи из файлов jpg, bmp, tga, vtf (gif и прочее не понимает)
2. Не обязательно перед импортом копировать куда-то в папку КСС исходный файл.
3. В игре жмите «Настройки»->»Импорт Spray»->найдите и выберите Ваш файл с картинкой->кнопка «Открыть»->кнопка «ОК».
КСС создаст в папке Х:\Program Files\Valve\Steam\SteamApps\user\counter-strike source\cstrike\materials\VGUI\logos два файла *.vtf, *.vmt.
6. Если Вы уже импортировали спрей и потом что-то захотели поменять в исходном файле-картинке (а имя файла оставили то же),перед повторным импортом удалите файлы *.vtf, *.vmt в папках
Х:\Program Files\Valve\Steam\SteamApps\user\counter-strike source\cstrike\materials\VGUI\logos
Х:\Program Files\Valve\Steam\SteamApps\user\counter-strike source\cstrike\materials\VGUI\logos\UI
Спрей с прозрачным фоном
1. Открываете в Фотошопе Ваш файл-картинку. Я взял вот такую )). Белый фон облегчает нашу работу
Приводите размер картинки в пикселах кратном двум (например, 128х128, 256х256 пиксел)
2. Выделяете на картинке ту область, которая будет отображаться на спрее. Я это делаю волшебной палочкой (благодаря белому фону) и инвертирую выделение. Но если фон неоднородный, то можно магнитным лассо.
3. Переходите на закладку «Каналы» и добавляете новый канал белого цвета (#ffffff) непрозрачностью 0%
и получаете следующее
4. Заливаете выделенную область белым цветом
5. Выбираем в меню «Файл-Сохранить как», сохраняем как TARGA-файл, убедившись что стоит галочка «Альфа-каналы», «32 бита/пиксел», и не стоит галочка «Уплотнение (RLE)»
Этот ТАРГА-файл можно импортировать в КСС как спрей, но не всегда КСС корректно распознает такой файл с прозрачным фоном, а в этом случае.
6. Качаете файл vtex.rar и распаковываете в любое место на диске
7. Ваш TARGA-файл копируете в папку vtex\hl2\materialsrc\sprays
8. Запускаете vtex\tga2vtf.bat и, если TARGA-файл был создан в соответствии с инструкциями, получаете в папке vtex\hl2\materials\sprays два файла *.vtf, *.vmt
9. Копируете эти файлы в папку \Steam\SteamApps\user\counter-strike source\cstrike\materials\VGUI\logos и в игре видите название своего спрея в списке (импортировать ничего не надо!)
10. Пункты 4,5,7,8,9 раздела «Простой спрей» применимы и здесь.
Анимированный спрей
1. В Adobe ImageReady (идет в пакете с фотошопом) конвертируете картинку так, чтобы каждый кадр выглядел отдельным файлом.
Для этого открываете файл анимации и выбираете file->export->animation frames as files.
2. Сохраняете каждый кадр в формат jpg. Потом идете в фотошоп и конвертируете каждый jpg файл в 32-битный формат TARGA (TGA) размером, кратном двум (например, 128х128, 256х256 пиксел)
3. Качаете ANiMATED.TEXTURE.CONVERTER_SMiDDY.rar и распаковываете в любое место на диске.
4. Кладете все targa файлы в папку /hl2/materialsrc/animated/ (если нет такой папки, то создайте) и переименовываете эти файлы в spray001.tga, spray002.tga, spray003.tga и так далее соответственно.
5. Редактируете в этой же папке файл spray.txt в NotePad (он же Блокнот) и меняете значение «endframe» на количество кадров в Вашей анимации.
6. Запускаете convert.bat и, если targa файлы были созданы в соответствие с инструкциями, Ваш *.vtf файл появится в папке /hl2/materials/animated/
7. Если Ваш *.vtf файл оказался больше, чем 120kb, тогда Вам придется урезать кол-во кадров (или уменьшить размер каждого кадра), до тех пор пока размер файла не уменьшится до 120 кб. В противном случае Вы не сможете использовать Ваш лого.
8. Копируете получившийся файл в папку Х:\Program Files\Valve\Steam\SteamApps\user\counter-strike source\cstrike\materials\VGUI\logos
9. В NotePad (он же Блокнот) создаете новый файл и копируете туда следующий код:
«LightmappedGeneric»
<
«$basetexture» «vgui\logos\spray»
«$decal» «1»
«$decalscale» «1»
>
Сохраняете («Сохранить как») этот текстовый файл под именем spray.vmt в ту же папку, что и spray.vtf.
10. Пункты 4,5,7,8,9 раздела «Простой спрей» применимы и здесь.