Для этого нам понадобятся:
Форматы файлов спрея
Спрей поддерживает такие графические форматы: JPEG, BMP, TGA и VTF. Размер спрея должен быть в теории 2 в степени n пикселя (макс. 4096). На практике лучше всего смотрятся 128х128 и 256х256. Объем спрея не должен превышать 120 kb 512 kb. Поскольку BMP "тяжелый" формат, большого смысла его использовать в качестве спрея нет. Самым простым спреем без прозрачности будет картинка 256х256 формата jpeg или с прозрачностью - формата tga. Так же можно использовать в качестве спрея текстуру от Valve в формате VTF с ее фичами - прозрачность, анимация, mipmaps.
Создаем спрей с прозрачностью
С помощью Photoshop открываем нашу картинку. Пусть это будет, например, логотип Ubuntu "The Circle Of Friends".
Чтобы сохранить прозрачность изображения нам понадобится создать альфа-канал. Сначала выделим непрозрачные пикселы изображения. Чтобы сделать это, откроем вкладку слоев (справа внизу) и зажав Ctrl кликаем на мини-изображении нашего слоя.
Для создания альфа-канала переходим во вкладку каналов и нажмем на пиктограмму "Сохраняет выделенную область в новом канале" (такой себе круг в прямоугольнике). Должно выйти такое:
Снимаем видимость с нашего альфа-канала. Кадрируем изображение до нужного размера инструментом "Рамка" вписав значения ширины и высоты 256 px. И сохраним его в формате tga с альфа-каналом.
Наш спрей готов.
Создаем анимированный спрей
Для анимированного спрея мы делаем практически все то же самое. Единственное отличие - для каждого кадра создается свой tga файл. Чтобы уменьшить объем выходного файла можно уменьшить его размер до 128х128. Если конечный файл удовлетворяет объему, можно оставить как есть.
Как работать с фотошоп объяснять не буду. Допустим у нас уже есть анимация в формате gif. Чтобы импортировать файл в Photoshop нужен установленный плагин QuickTime. Если он есть - открываем Файл - Импортировать -> Кадры видео в слои. В поле "Имя файла" указываем *.*. Теперь выбираем наш gif файл. (Кроме того, для создания анимации будут полезны команды меню окна "Анимация" "Создать слои из кадров" и "Создать кадры из слоев").
Теперь, когда все кадры у нас в слоях, мы экспортируем эти слои, для этого открываем Файл - Сценарии - Экспортировать слои в файлы. В появившемся меню выбираем формат файла TGA, 32 bit (если есть прозрачность), папку сохранения и тыкаем на экспорт. Вот в нашей папочке есть файлы кадров в формате tga.
(Слои экспортируются от верхнего к нижнему, если анимация у вас идет наоборот, то можно сделать две команды меню окна "анимация": "обратный порядок кадров" и "Создать слои из кадров", а затем удалить предыдущие слои и экспортировать.)
Далее, когда файлы кадров анимации у нас есть, нам необходимо сделать из них файл VTF. Для этого открываем программу VTFEdit и заходим в меню File - Import. Выделяем все наши файлы (убеждаемся что кадры названы по порядку) и жмем ОК. У вас появится окно настройки опций. Если не знаете что с ними делать, не делайте ничего, жмите ОК.
Перейдем во вкладку "Image". Если мы все сделали верно, при изменении значения Frame мы увидим наши последующие кадры. Тут же можно просмотреть анимацию нажав кнопку Play. На вкладке Info обращаем внимание на размер выходного файла. Напомню, что лимит 120 Кб. (У меня работал спрей 256х256 с анимацией, прозрачностью, размером 341 Кб, так что точный лимит не знаю Уже знаю. После обновы в 2010 - 512 kb :-p) Если все в порядке, нажимаем кнопку "Сохранить", что даст нам готовый к использованию анимированный спрей.
Для продвинутых: Создаем динамический спрей
Кроме всего прочего нам нужен DDS плагин для фотошопа и программа DDS to VTF Converter (VPKTool). Устанавливаем все это дело.
Итак, коротко. Создаем обычный спрей. Можно с альфа каналом. Сохраняем как D3D/DDS (*.DDS) предварительно выполнив сведение слоев! В окне настроек выбираем"DXT5 ARGB 8bbp|interpolated alpha", а еще лучше - "8.8.8.8 ARGB 32 bpp | unsigned" (чтобы не сжимать пока картинку в DXT5), ставим галочку на "Generate MipMaps".
Закрываем наше изображение и открываем сохраненное. !Внимание, ставим галку на Load MIP maps.
То, что мы видим - наш спрей с разного расстояния обзора. Большая картинка - вблизи, маленькая - вдалеке. Здесь мы можем заменить любую картинку своей, и вблизи и вдалеке мы будем видеть разный спрей, который будет меняться при приближении-отдалении.
Теперь сохраняем наш спрей в формате DDS уже в "DXT5 ARGB 8bbp|interpolated alpha", но отмечаем пункт "Use existing mip maps".
Далее запускаем вторую программу - VPKTools. Открываем вкладку "Texture Tools". Выбираем наш файл и нажимаем "Convert DDS to VTF". В итоге у нас получится спрей в формате VTF. Открыв его в VTFEdit и меняя значения пункта mipmap мы можем увидеть результат нашего творчества.
Наш спрей готов.
Создаем анимированный спрей
Для анимированного спрея мы делаем практически все то же самое. Единственное отличие - для каждого кадра создается свой tga файл. Чтобы уменьшить объем выходного файла можно уменьшить его размер до 128х128. Если конечный файл удовлетворяет объему, можно оставить как есть.
Как работать с фотошоп объяснять не буду. Допустим у нас уже есть анимация в формате gif. Чтобы импортировать файл в Photoshop нужен установленный плагин QuickTime. Если он есть - открываем Файл - Импортировать -> Кадры видео в слои. В поле "Имя файла" указываем *.*. Теперь выбираем наш gif файл. (Кроме того, для создания анимации будут полезны команды меню окна "Анимация" "Создать слои из кадров" и "Создать кадры из слоев").
Теперь, когда все кадры у нас в слоях, мы экспортируем эти слои, для этого открываем Файл - Сценарии - Экспортировать слои в файлы. В появившемся меню выбираем формат файла TGA, 32 bit (если есть прозрачность), папку сохранения и тыкаем на экспорт. Вот в нашей папочке есть файлы кадров в формате tga.
(Слои экспортируются от верхнего к нижнему, если анимация у вас идет наоборот, то можно сделать две команды меню окна "анимация": "обратный порядок кадров" и "Создать слои из кадров", а затем удалить предыдущие слои и экспортировать.)
Далее, когда файлы кадров анимации у нас есть, нам необходимо сделать из них файл VTF. Для этого открываем программу VTFEdit и заходим в меню File - Import. Выделяем все наши файлы (убеждаемся что кадры названы по порядку) и жмем ОК. У вас появится окно настройки опций. Если не знаете что с ними делать, не делайте ничего, жмите ОК.
Перейдем во вкладку "Image". Если мы все сделали верно, при изменении значения Frame мы увидим наши последующие кадры. Тут же можно просмотреть анимацию нажав кнопку Play. На вкладке Info обращаем внимание на размер выходного файла. Напомню, что лимит 120 Кб. (
Для продвинутых: Создаем динамический спрей
Кроме всего прочего нам нужен DDS плагин для фотошопа и программа DDS to VTF Converter (VPKTool). Устанавливаем все это дело.
Итак, коротко. Создаем обычный спрей. Можно с альфа каналом. Сохраняем как D3D/DDS (*.DDS) предварительно выполнив сведение слоев! В окне настроек выбираем
Закрываем наше изображение и открываем сохраненное. !Внимание, ставим галку на Load MIP maps.
То, что мы видим - наш спрей с разного расстояния обзора. Большая картинка - вблизи, маленькая - вдалеке. Здесь мы можем заменить любую картинку своей, и вблизи и вдалеке мы будем видеть разный спрей, который будет меняться при приближении-отдалении.
Теперь сохраняем наш спрей в формате DDS уже в "DXT5 ARGB 8bbp|interpolated alpha", но отмечаем пункт "Use existing mip maps".
Далее запускаем вторую программу - VPKTools. Открываем вкладку "Texture Tools". Выбираем наш файл и нажимаем "Convert DDS to VTF". В итоге у нас получится спрей в формате VTF. Открыв его в VTFEdit и меняя значения пункта mipmap мы можем увидеть результат нашего творчества.
Зачетная статья, но есть одна проблемка с Mip Map (Динамическими спреями). ЕСли делать по Вашей инструкции, то не работает, т.к. генерируются мапы от 0 до 9 помоему. и еулевая, которая самая большая, в КСС (например) не отображается, ее нужно ставить первой, т.е. заменять не самую большую а следующую за ней. Может я не так что-то делаю? Или это можно исправить?
ОтветитьУдалитьДелал таким образом спреи для L4D, L4D 2 и CSS. Не знаю в чем может быть проблема, но работает метод во всех трех играх + можно использовать прозрачность. Единственная проблема - нельзя сделать анимацию, т.к. нечем запаковать ее в VTF с сохранением мап. Расстояние с которого один рисунок сменяет другой - разное для разного разрешения экрана.
ОтветитьУдалитьПробуйте при сохранении с генерацией мап (первое сохранение) использовать настройки как на скрине (только с пунктом Generate MIP maps естественно). Кроме того используйте актуальные версии плагина. Можно заменять не только первый рисунок спрея (мапу), но и второй. Третий и далее - не актуально.