Осваиваем фильтры

Добавлен , опубликован
Раздел:
Работа с MPQ и импортом

Что такое фильтры и для чего они нужны?

Фильтры – это изображения, которые накладываются поверх выводимой на экран картины.
Фильтры управляются триггерно; правильно настроенный и вовремя выведенный на экран фильтр в состоянии обеспечить кучу разнообразных эффектов, задать атмосферу. Примером грамотного использования фильтров может служить плавный ввод-вывод изображения (затемнение) в кампаниях blizzard.
Интересной особенностью фильтров является то, что они могут принимать любой оттенок и выводится на экран по-разному (разные типы цветового смешения), т.е. можно один и тот же фильтр переделать до неузнаваемости.

Вывод фильтра на экран


Существует три триггерные команды, управляющие фильтрами. Рассмотрим их.
  • Спецэффекты/Fade filter ("исчезающий", затемняющий фильтр)
  • Спецэффекты/Advanced filter ("передовой", расширенный фильтр)
  • Спецэффекты/ Show\hide filter (отображает, либо скрывает фильтр)
  1. общий вид действия:
**< fade type >** over **< during >** seconds using texture **< filter texture >** and color (**< red >**%, **< green >**%, **< blue >**%) with **< alpha >**% transparency
fade type - исчезающий фильтр может выводиться 3-мя способами: затемнять, постепенно перекрывать обзор (прозрачность 100% -> прозрачность 0%); плавно вводить изображение (прозрачность 0% -> 100%); сначала перекрыть, а затем ввести изображение (прозр. 100% -> 0% -> 100%). Называются способы fade out; fade in и fade out - in соответственно.
during - время действия фильтра в игровых секундах.
filter texture - текстура, используемая фильтром.
red, green, blue - цветовые установки фильтра, указываются в процентах (0-100), что не всегда удобно, так как цвета зачастую задаются целым числом от 0 до 255.
Каким образом узнать значения желаемых цветов? Ответ достаточно прост: нужно умножить долю красного, зелёного и синего компонента на 0.39215686 (получается это число делением 100 на 255) и прописать полученные значения в соответствующие поля команды. Простейшим источником значений составляющих любого цвета является палитра стандартного графического редактора Paint.
alpha - установка процента прозрачности "верхней грани" фильтра. Задается аналогично цветовым установкам.
Если оставить равным 0.00, то по истечении < dur > секунд фильтр типа вывода < fade out > полностью перекроет обзор; он будет непрозрачен. Если же, к примеру, поставить здесь 50.00, то по истечении < dur > секунд фильтр будет прозрачен наполовину.
  1. общий вид действия:
Apply a filter over **< dur >** seconds using **< blend mode >** on texture **< filter texture >**, starting with color (**< red1 >**%, **< green1 >**%, **< blue1 >**%) and **< alpha1 >**% transparency and ending with color (**< red2 >**%, **< green2 >**%, **< blue2 >**%) and **< alpha2 >**% transparency
В отличие от Fade-фильтра, здесь можно указать цветовую гамму фильтра в начале и в конце действия; так же Advanced-фильтр использует несколько видов смешения цветов (blend modes). Вот их примерная характеристика:
  • Нет смешения. При отсутствии смешения фильтр всегда ведёт себя одинаково. Он постепенно из начальной цветовой гаммы переходит в конечную, в зависимости от времени действия. При этом игровой экран невидим, т.е. вам не видны ни юниты, ни рельеф ни что-либо другое - фильтр закроет обзор вне зависимости от того, какое значение вы поставите в < alpha >.
  • Нормальное смешение. В данном случае на экране появится фильтр с начальной цветовой гаммой, постепенно переходящей в конечную цветовую гамму. Следует также отметить, что в данном виде смешения «начальный» фильтр прозрачен, а «конечный» - нет.
  • Аддитивное смешение. Действует точно так же, как и нормальное смешение, однако и «начальный» и «конечный» фильтры будут прозрачными.
  • Модулированное смешение. Модулированное смешение создаёт впечатление того, что по экрану разливается какая-то тёмная жидкость. В этом случае все цвета фильтра превращаются в тёмные, и на игровом экране видна лишь прозрачная область фильтра. Всё остальное покрыто тёмными цветами. Однако этот получившийся чёрный фильтр может быть подвержен цветовому изменению, в частности, если вы измените вторую цветовую гамму, то тёмные цвета в полученном фильтре примут соответствующие оттенки. Точно также и в первой цветовой гамме.
  • Модулированное 2-е смешение. В этом случае действие выполняется точно так же, как и в обычном модулированном, но только в этом случае «разливающаяся по экрану жидкость» будет не тёмной, а цветной. В остальном копирует свойства модулированного 1-го смешения.
  • Альфа смешение. Очень странный вид. Сначала ничего не происходит, т.к. фильтр остаётся прозрачным. А во второй половине временного промежутка действия фильтр появляется, и то – наполовину. Кроме того, он появляется именно в конечной цветовой гамме без какого-либо постепенного преобразования; судя по всему, данный тип создан для выведения постоянной прозрачной маски.

**Создание своих собственных текстур для фильтров**


Для работы с текстурами нам понадобятся:
  • Хороший графический пакет для создания текстуры фильтра (стандартный Paint в Windows’е вряд ли подойдёт).
  • Warcraft III Viewer (или аналогичная программа, способная конвертировать широко распространённые графические форматы в *.BLP - файл текстуры игры).
Для начала нам необходимо будет нарисовать сам фильтр. Все текстуры для фильтров в Warcraft’e могут быть любого размера, т.е. он растягивается на экране. Однако, как правило, чем больше изображение, тем лучше, почему - сами увидите. Обратите внимание, что в нашем фильтре обязательно должен присутствовать альфа-канал прозрачности, так как при его отсутствии вы не сможете увидеть юнитов и другие объекты на карте. Лично я для создания прозрачности поступаю следующим способом:
  • Создаю рисунок для фильтра в каком-либо графическом формате;
  • Сохраняю всё в формат TGA;
  • Открываю полученный файл хорошим графическим редактором;
  • Выделяю ту часть, которая должна будет показываться на экране;
  • Сохраняю файл;
Обратите внимание, что вся невыделенная часть не будет показана на экране! А если ничего не выделите и сразу преобразуете файл в формат blp, то картинка покажется полностью и вы не увидите своих юнитов и объекты!
Далее вам необходимо преобразовать текстуру в формат TGA или BLP (размер стороны BLP текстуры должен быть степенью двойки (2х2, 8х4, 16х16, 32x32, 64x64, 64x128, 256x256 ... 512х512-максимиум), необходимо эту размерность соблюдать, иначе игра либо повиснет, либо вылетит с ошибкой), и затем импортировать её в карту, ну а в дальнейшем применить рассмотренные выше триггерные действия для вывода ваших фильтров на экран.

**Добавление своих фильтров в игру**

Добавить свой фильтр-текстуру достаточно легко, делается это 2-мя способами.

I

Единственное, что нам для этого способа понадобится - это программа, работающая с архивами MPQ.
  • Открываем файл war3Patch.mpq, находящийся в директории с игрой.
  • Находим в архиве папку \ReplaceableTextures\CameraMasks, импортируем туда свою текстуру в формате *.blp и запоминаем её имя.
  • ! Делаем резервные копии файлов \UI\WorldEditStrings.txt и \UI\TriggerData.txt !
  • Экспортируем файл \UI\TriggerData.txt куда-нибудь из архива и, экспортировав, открываем; затем находим там фразу-заголовок «// Cinematic filter textures», после которой идет список используемых текстур.
  • Теперь приписываем с новой строки к концу списка , а именно после строчки
CineFilterTexturePanda=cinefiltertexture,`ReplaceableTextures\\CameraMasks\\Panda-n-Cub.blp`,WESTRING_CINEFILTERTEX_PANDA
следующую строку:
CineFilterTexture**!!NAME1!!**=cinefiltertexture,`ReplaceableTextures\\CameraMasks\\**!!texture_name!!**.blp`,WESTRING_CINEFILTERTEX_**!!NAME2!!**
Где NAME1 – короткое имя нашей текстуры (латинскими буквами), texture_name – название blp-текстуры, которую мы импортировали и запоминали в п.2, NAME2 - имя переменной текстуры в эдиторе. Запомните это имя!
  • Сохраняем файл TriggerData.txt.
  • Экспортируем файл \UI\WorldEditStrings.txt из архива, находим в файле строку «// Trigger cinematic filter textures».
  • Теперь, опять же в конец списка под заголовком, т.е после строчки
WESTRING_CINEFILTERTEX_PANDA="Панда с детенышем"
с новой строки добавляем строку:
WESTRING_CINEFILTERTEX_**!!NAME2!!**=”**!!имя текстуры!!**”
где NAME2 – название той переменной, которую мы запомнили в предыдущем пункте, имя текстуры – название нашей текстуры, которая будет отображать в списке фильтров World Editor’a (можно на русском).
  • Теперь возвращаемся к редактору MPQ и удаляем \UI\TriggerData.txt и \UI\WorldEditStrings.txt из war3Patch.mpq.
  • Далее импортируем отредактированные нами файлы в архив в папку \UI.
Если после этих операций текстура не появилась во встроенном списке, как показано слева, то, скорее всего, вы что-то напутали. В таком случае, рекомендуется вернуть на место зарезервированные копии файлов и попробовать повторить все сначала ещё раз.
Тут же стоит отметить, что существует в чем-то более простой способ замены текстовых файлов, об этом способе подробно рассказано здесь. Базируясь на этом методе, вместо того чтобы заменять текстовые файлы TriggerData.txt и WorldEditStrings.txt в архиве с изрядной долей риска, можно просто создать папку \UI в корневой директории игры и положить оба отредактированных файла туда, не удаляя и не заменяя ничего в архиве.
Если внесенные изменения в файлах вам не понадобятся или же возникнут ошибки, связанные с некорректным дополнением вами файлов, вы всегда сможете их удалить без каких либо последствий - игра вернется к считыванию стандартных текстовиков в архиве. Таким же образом можно поместить в директорию с игрой текстуру к фильтру.
Главное, не забудьте, что I способ внедрения фильтра будет работать только у вас на локальном компьютере, если вы используете новый фильтр и дадите, например, знакомым эту карту, то вместо кастомной текстуры у них вылезет ошибка (думаю, не стоит объяснять, почему). Для фильтр-текстур, которые будут работать не только у вас дома, существует 2-й способ.

II

Еще разок обратим внимание на этот рисунок. Как видно, помимо списка стандартных эдиторных текстур под общим названием «Задано» есть еще снизу некий таинственный «Импортир». Дело в том, что в качестве текстуры для фильтра можно еще использовать любую импортированную текстуру. О том, как импортировать файлы в карту, сказано вот в этой статье: импорт файлов
На этом всё. Спасибо за внимание!
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
17 лет назад
0
страно.. вроде же много народу было против этой статьи.. кто ее выложил?
0
22
17 лет назад
0
Статья было довольно хорошо обновлена, поэтому и появилась на сайте.
0
21
17 лет назад
0
а почему мою статью не выложили?
многим понравилась же!
0
22
17 лет назад
0
Я бы так не сказал...
0
27
17 лет назад
0
интересно почемы бы ты так несказал?
0
22
17 лет назад
0
Jon, потому что статья та написана на плохом языке.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.