Альфа-канал: прозрачность и цвет игрока

Добавлен , опубликован
Раздел:
Моделлинг

Вводная часть

На Wikipedia Альфа-канал описывается как
...процесс комбинирования изображения с фоном с целью создания эффекта частичной прозрачности.
Но я бы охарактеризовал Альфа-канал для WarCraft III проще:
Чёрно-белое изображение, встроенное в текстуру, отвечающее за прозрачность и полупрозрачное смешивание.

Основная часть

Необходимые программы:

  • Adobe Photoshop любой версии
Но если вы собираетесь конвертировать в *.blp вашу текстуру, то понадобится соответствующая программа, которых на нашем сайте море.
Возьмём, к примеру, BLP Laboratory
Вы также можете проверить вашу текстуру в деле, т. е. на модели, тогда вам понадобится еще ряд программ: Но в принципе можно обойтись и одним War3 Model Editor'ом, если вы будете редактировать уже имеющуюся и наложенную на модель текстуру.

Работа в Photoshop

Детально разъяснять его интерфейс и возможности я не буду, т. к. в Интернете существует множество уроков по этой замечательной программе.
Я сделал простую текстуру, которую потом наложу на обычную плоскость:

1.1

В чёрной области у нас будет полупрозрачный Альфа-канал.

Шаг 1

Открыв в Photoshop’е необходимую текстуру, нужно перейти на вкладку редактирования каналов (п. 1 на 1.2). В данной вкладке сразу же имеются 4 канала: "RGB", "Красный", "Зелёный" и "Синий". Также там сразу может быть канал "Альфа 1", тогда можно пропуститиь шаг 2.

Шаг 2

Если в каналах нет альфа-канала, то необходимо его создать - в самом низу окошка редактирования каналов есть 4 маленьких кнопки. Нам необходима та, что слева от корзины (п. 2 на 1.2) - нажмём её, и создастся новый, полностью чёрный, альфа-канал (п. 3 на 1.2).

Шаг 3

Альфа-канал для WarCraft представляет собой чёрно-белое изображение, встроенное непосредственно в текстуру и сохраняющееся, насколько я знаю, только в *.tga, *.png (как непосредственная прозрачность) и *.blp форматах (ещё в *.dds - но это к варкрафту не относится, и в *.bmp - но в нём альфа-канал теряется при конвертации в *.blp). Чёрный цвет - прозрачность, белый - непрозрачность.

1.2

При выборе Альфа-канала, автоматически включается только его видимость в Photoshop’е (п. 5 на 1.2), но можно включить в видимость все каналы, нажав на место "глазка" (п. 4 на 1.2 и 1.3) слева от канала RGB и Альфа 1, тогда прозрачность Альфа-канала становится полупрозрачным красным цветом, а непрозрачность отображается непосредственно исходной картинкой (1.3).
Альфа-канал можно произвольно редактировать любыми цветами - все они будут конвертироваться в серые оттенки.
После нехитрых операций с выделением, заливкой и копированием/вставкой, я получил такой Альфа-канал:

1.3

Шаг 4

Теперь осталось лишь сохранить нашу текстуру. Делается это простейшими командами:
Файл\Сохранить как...
Форматом сохранения выберите Targa (*.tga). После нажатия кнопки сохранить вам будет выдано следующее окно:

1.4

Выберите "32 bits/pixel" (1 на 1.4) и нажмите "ОК" (2 на 1.4).

Конвертация

Итак, если вы хотите конвертировать вашу текстуру и посмотреть Альфа-канал уже в *.blp-изображении, то этот раздел вам поможет.
Я решил использовать для этого BLP Laboratory (далее BLP Lab) (ссылка на которую дана в начале статьи).
Запускаем BLP Lab и выбираем:
Файл\Открыть... (п. 1 на 2.1)
В раскрывшемся окне выберите вашу текстуру в формате *.tga.
Уже сейчас вы можете просмотреть альфа-канал, нажав кнопку "Альфа-канал" (п. 2 на 2.1) или "Прозрачность" (п. 3 на 2.1).

2.1

Налюбовались?
Теперь нам осталась лишь конвертация сама по себе, для этого выберите:
Файл\Сохранить как... (п. 4 на 1.5)
Выберите фомат *.blp и сохраните в нужное вам место. Во всплывшем окне можете поиграть с настройками, описание которых можете найти в теме данной программы на форуме, а можете оставить всё по стандарту и нажать "ОК".
Теперь, если хотите, можете пооткрывать полученное *.blp-изображение в разных программах.

Использование в моделях

Теперь я наложу нашу текстуру на простейшую модель - плоскость.
Как работать с MDLvis'ом я рассказывать не буду, т. к. на XGM достаточно статей и уроков по этой программе.
Я создал плоскость и наложил на неё мою текстуру:

3.1

Прозрачность

А вот теперь первая часть того главного, ради чего мы создавали наш Альфа-канал.
Здесь нам понадобится War3 Model Editor (далее w3me).
Откройте вашу модель и перейдите в редактор материалов командой:
Окна\Редактор Материалов (4.1)
У меня в нём всего один материал, которым мы и будем заниматься
Поочерёдно дважды нажимая сначала на материал, затем на слой материала, вы перейдёте в окно "Слой материала", которое нам сейчас нужно.

4.1

Здесь мы можем выбрать 2 варианта смешивания, которые подойдут нам для прозрачности - это Transparent (п. 1 на 4.2) и Blend (п. 2. на 4.2).
Я также поставил галочку на "Двусторонний" (п. 3 на 4.2), т. к. в случае с плоскостью её использование необходимо.

4.2

  • Transparent работает как грубое смешивание прозрачности по Альфа-каналу с использованием только 2-х единиц измерения прозрачности: прозрачно и непрозрачно.
  • Blend работает мягче, используя все оттенки прозрачности в соответствии с цветами Альфа-канала, но данное смешивание очень странно работает с нормалями... как описать словами эти баги я не знаю, но думаю, изображение ниже раскроет их суть:
Дополнительная информация
Мне кажется, будет не лишним, описать оставшиеся 3 режима смешивания, а в частности Add Alpha, Additive, и Modulate.
  • Add Alpha создаёт прозрачность, основываясь на яркости цвета. При наложении, яркости цветов складываются (это можно легко проврить инструментом "Пипетка" в Photoshop (4.2.1), но такая проверка пройдёт только на чёрном фоне, т. к. с ним чёрные, а значит и прозрачные по яркости участки получают обратно свой цвет), альфа-каналы тоже складываются (попиксельно, разумеется). Одна из особенностей этого режима смешивания состоит в том, что с ним текстура материала становится такой же как и оригинальная только на чёрном фоне, все остальные цвета дают повышение яркости.

4.2.1

  • Modulate является полной противоположностью Add Alpha, он не зависит от альфа-канала, а прозрачность создаёт обратно повышению яркости, т. е. тёмный цвет непрозрачен, а светлый прозрачен. При наложении яркость цветов вычитается. Чем темнее фон, тем темнее материал, а значит, оригинальную текстуру он приобретает только на белом фоне.
  • Additive - это нечто между Add Alpha и Modulate, при наложении поверх тёмного цвета, все участки затемняются, при наложении поверх светлого - осветляются, но в отличие от Modulate затемниться до абсолютно чёрного материал с таким смешиванием не может, прозрачность строится аналогично. В отличие от Add Alpha, Additive никак не зависит от альфа-канала.
Здесь вы можете увидеть как фон и альфа-канал воздействуют на данные режимы смешивания:

4.2.2 | 4.2.3 | 4.2.4

Используя эти режимы смешивания можно добиться интересных и красивых эффектов, в том числе и для прозрачности и цвета игрока.

-

4.3

Однако, есть способ исправления этого бага: нужно подложить под слой с Blend'ом слой с таким же материалом, но со смешиванием Transparent.

4.3.1

На изображении 4.4 вы можете видеть разницу между режимами смешивания None, Transparent и Blend.

4.4

Цвет игрока

Теперь я расскажу вам о создании Тим-колора или говоря по-русски, Цвета Игрока.
Тут я буду использовать ту же самую модель, что и раньше. Вы, если хотите, можете взять какую-нибудь другую.
Сначала необходимо в список используемых текстур добавить Replaceable ID 1 (Цвет Игрока).
На изображении ниже наглядно показан порядок действий:

5.1

После того, как вы добавили Replaceable ID 1 в список текстур, нужно перейти в редактор материалов и сделать следующее с тем материалом, в котором используется ваша текстура с Альфа-каналом:

5.2

Также в случае с плоскостью целесообразно установить флажок на «Двусторонний».
Теперь необходимо передвинуть только что созданный слой с Цветом Игрока под слой с основной текстурой, т. е. вверх:

5.3

Внимание: для того чтобы цвет игрока правильно работал необходимо, чтобы вышележащий слой (выше по иерархии, но визуально он находится ниже в окне редактирования материла) имел режим смешивания Blend или Transparent.
Ну вот и всё. Теперь осталось лишь понажимать везде «ОК» и полюбоваться результатом.

5.4

Цвет игрока в частицах

Немногие знают, что частицы тоже можно наделить цветом игрока, но здесь есть один огромный недостаток: цветом игрока могут обладать лишь частицы, использующие текстуры Replaceable ID 1 (собственно текстура цвета игрока) и Replaceable ID 2 (свечение цветом игрока, как у героев). Эти значения устанавливаются в графе "ID текстуры" (п 2 на 5.5): 1 соответствует Replaceable ID 1, а 2 - Replaceable ID 2.
Вообще, туда можно поставить любой ID, но при, например, 31-ом, у вас будут излучаться текстуры дерева лордерона, которые будут меняться при попадании на порчу.
Также, чтобы видеть результат, нужно поставить соответствующую текстуру в отвечающий за неё уже другой "ID текстуры" (п. 1 на 5.5), но даже если вы там поставите совершенно иную текстуру, в игре он заменится на ID из пункта 2 (5.5).

5.5

Внимание: перед импортом в редактор измените текстуру Replaceable ID в графе текстуры (п. 1 на 5.5) на любую другую, например на Flare.blp, иначе редактор, при выборе модели в РО, выдаст ошибку и закроется.

Заключение

Вот я и рассказал вам про создание и использование Альфа-канала. Надеюсь, предоставленная мною информация оказалась вам полезна, а статья пришлась по нраву!
К статье приложены материалы, использовавшиеся в этой статье:
AlphaTest(psd).rar (106.7 Кбайт)
AlphaTest(tga).rar (29.1 Кбайт)
Used_model_with_texture.rar (26.3 Кбайт)
В связи с багами нормалей во всех приложенных моделях, в материалах я поставил дополнительный флажок на Незатуманенный (ошибка перевода – Незатуманенный – Незатенённый (подробнее)).//

Благодарности:

Спасибо Wolverine’у за то, что он выложил на сайт War3 Model Editor 1.05, Dron’у за информацию об утере Альфа-канала в *.bmp при конвертации в *.blp и Q w e r t y за информацию об исправлении бага нормалей.

Спасибо за внимание!

2
25
14 лет назад
2
Здорово, хорошая статья. Хотя про моделлинг я нахально пропускал. ^_^
Так что, тогда можно создать партикловый снаряд, который будет меняться при попадании на порченую землю?
2
31
14 лет назад
2
Спс, да, думаю можно)
2
26
14 лет назад
2
Cтатья полезная, сам по ней вот только научился. Одно "но", в моем случае конвертация БЛП.лаб-ой вызывает глюки с текстурой в ВЭ и Варе. Конвертация Вивером спасает дело.
1
31
14 лет назад
1
LLlypuK, скорее всего у тебя в блп лаб при сохранении значение "Количество карт" (мипмапы) слишком маленькое, и это вызывает баги в варе, ставь 7-8.
1
12
13 лет назад
1
мда...
нормально и ... думает____хорошо сдал, писал наверно очень долго, уважаю
Этот комментарий удален
1
1
12 лет назад
1
Хорошая статья, но возник вопрос. Есть чужая модель, у которой текстура содержит прозрачность и этим создаёт неровные края. При "подкладывании" тимколора прозрачные части на этих краях становятся залиты тимколором и портят модель прямыми краями. Можно в этом случае что-то сделать по месту? А, главное, как? mdlvis может редактировать привязку к текстуре, но не может работать с TeamColor, в War3 Model Editor может работать с текстурами, но довольно бестолков в плане редактора. Нужно либо ограничить распространение тимколорной текстуры, чтобы она не доходила до краёв модели, либо добавить точек и аккуратнее натянуть текстуру. Есть возможность редактирования готовой модели в каком-либо более продвинутом редакторе?
2
31
11 лет назад
2
ZliS, в mdlvis'е можно отделить часть модели с помощью вынесения в отедльную поверхность. Затем в w3me создать отдельный материал с тимколором и назначить его выделенной поверхности, а для остальной модели оставить материал без тимколора. Этот прием частенько используется у стандартных моделей в wc3)
4
1
11 лет назад
4
Спасибо за урок =) Мне очень помогло =)
1
1
9 лет назад
1
Благодарю за урок. Только вот сохраняет он мою текстуру в mdl не понимаю как сделать её обратно blp. Сорри если что туплю.
1
3
8 лет назад
1
В режиме Transparent значения альфа-канала от 0 до 197 плавно повышают прозрачность с 0% до 25%, а значения с 198 до 255 означают полную прозрачность.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.