forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Как сделать текстуру с альфамаской. (http://forum.boolean.name/showthread.php?t=8669)

ABTOMAT 15.07.2009 01:36

Как сделать текстуру с альфамаской.
 
Про просьбам трудящихся описываю подробно, как делать.
Итак, у нас есть две текстуры. Текстура диффузного рассеивания:

Текстура альфаканала:

И такая вот модель, на которую всё это безобразие надо надеть

Начинаем с того, что совмещаем диффуз и альфу в один файл. Дело в том, что такие форматы, как jpeg, bmp и прочие форматы изображений, к которым мы привыкли, не держдат альфаканала. Собсно, это и не требуется, так как, трудно представить, куда его использовать например, для фотографий и прочих "обывательских" задач. Оправдано его использование на веб-страницах. Таков, например, формат PNG. Прозрачность, кроме того, присутствует и в GIF, но там пиксель может быть либо прозрачным, либо нет, да и Блитз его в качестве текстуры грузить не умеет, так что рассматривать я его не буду.
Итак, у нас на выбор такие форматы, могущие хранить альфу:
PNG, TGA, DDS

Совмещать диффуз и альфу я буду при помощи Adobe Photoshop CS (но и более поздние версии подойдут) Начнём с того, что откроем наши картинки в фотошопе.

TGA

1. Выбираем окошко с открытой картинкой альфаканала
2. Выбираем всё Select -> All (ctrl+A)
3. Копируем в буфер обмена Edit -> Copy (Ctrl + C)
4. Выбираем окошко с открытой картинкой диффуза.
5. Находим окошко Channels. Оно может быть либо отдельным окошком, либо в качестве одной из вкладок (как на скриншоте)

Если вы не видите такого окошка, поставьте галочку Window -> Channels. Окошко должно появиться.
6. Нажимаем на кнопку New внизу окошка:

7. У вас появился новый канал Alpha 1, он весь чёрный. Именно сюда нужно и вставить альфаинформацию, которую мы ранее скопировали в буфер обмена. Делаем это: Edit -> Paste (Ctrl+V)
8. Сохраняем в формате TGA File -> Save As (Ctrl + Shift + S), выбираем имя файла и его формат.

9. Проследите, чтобы была нажата галка Alpha channels!

10. Дальнейшие параметры не меняйте, нажимайте ОК.
11. Готово!

DDS

Для того, чтобы сохранить текстуру в этот формат, вам нужен плугин для фотошопа для сохранения в DDS (см. в аттаче) Насколько мне известно, Фотошоп версии CS2 и выше уже имеет поддержку этого формата и плагин не нужен. Кроме того, текстура должна иметь размеры степения двойки: 32,64,128, 256, 512, 1024 и т.д., иначе сохранить не даст.

1. Выяснить, есть ли у вас в фотошопе поддержка DDS. Например, можно попытаться сохранить картинку и посмотреть, есть ли DDS в списке.
2. Если DDS в списке есть, то переходите сразу к пункту. Иначе открываем папку C:\Program Files\Adobe\Photoshop CS\Plug-Ins\File Formats или иную, зависит от того, где у вас установлен фотошоп и какова его версия.
3. Копируем туда файл dds.8bi (см. аттач)
4. Запускаем фотошоп, открываем наши картинки.
5. Проделываем пункты 1-7 как для TGA.
6. Сохраняем в DDS File -> Save As (Ctrl + Shift + S), выбираем имя файла и его формат.

Проследите, чтобы была нажата галка Alpha channels!

7. Проверьте, чтобы все переключатели, отмеченные красным, стояли как на скриншоте:

8. У меня кнопка Save недоступнааа!!!111
Проверьте переключатель 2D Texture.
9. У меня он недоступеен!!!111
Проверьте размеры текстуры (нужны размеры степени двойки 32, 64, 128... ну ты понел)
10. А у меня...
Проверьте ещё раз.
11. Готово!

PNG

Открываем картинки в фотошопе.

1. Выбираем окошко с открытой картинкой альфаканала
2. Выбираем всё Select -> All (ctrl+A)
3. Копируем в буфер обмена Edit -> Copy (Ctrl + C)
4. Выбираем окошко с открытой картинкой диффуза.
5. Находим окошко Layers. Оно может быть либо отдельным окошком, либо в качестве одной из вкладок (как на скриншоте)

Если вы не видите таког окошка, поставьте галочку Window -> Layers. Окошко должно появиться.
6. В нём на строчке Background кликаем правой кнопкой мыши и выбираем Dublicate layer, нажимаем OK.
7. Появился новый слой. В окошке выбираем опять Background и кликаем на кнопке с мусоркой внизу окошка Layers, на вопрос отвечаем Yes.

8. Находим окошко Channels. Оно может быть либо отдельным окошком, либо в качестве одной из вкладок (как на скриншоте)

Если вы не видите такого окошка, поставьте галочку Window -> Channels. Окошко должно появиться.
9. Нажимаем на кнопку New внизу окошка:

10. У вас появился новый канал Alpha 1, он весь чёрный. Именно сюда нужно и вставить альфаинформацию, которую мы ранее скопировали в буфер обмена. Делаем это: Edit -> Paste (Ctrl+V)
11. Нажимаем на кнопку Load channel as selection.

12. В окошке Channels выбираем строчку RGB.
13. Обращаем выделение Select -> Inverse selection (Ctrl+Shift+I)
14. Вычищаем Edit -> Clear (клавиша Delete)
15. Сохраняем в PNG

16. Дальнейшие параметры не меняем.
17. Готово!

Сохранение в B3D.

Понадобится установленный на Макс плугин B3D Pipeline (ссылка в названии). Как его устанавливать и прочее - смотрите по той же ссылке.

1. Открываем нужную модель в Максе.
2. Открываем редактор материалов, кликнув по кнопке: (клавиша M)
3. Выбираем первую свободную ячейку с серым шариком. Давим на кнопку Standard

4. Выбираем в списке B3D Brush.
5. Давим на самую верхнюю кнопку None

6. Выбираем Blitz3D Map
7. Давим на кнопку None:
http://img404.imageshack.us/img404/6003/mapj.png
8. Указываем путь к файлу текстуры с альфаканалом (tga, png, dds)
9. Ставим галку Masked

10. Выделяем объект в окне просмотра. (кликаем на него или выделяем рамочкой)
11. В редакторе материалов применяем материал на него при помощи такой кнопки:

Показать текстуру в окне просмотра (только диффуз) можно этой кнопкой:


12. Готово! При экспорте в b3d не забудьте указать галки Materials и Textures!

Вот так выглядит модель при загрузке её командой LoadMesh:

Mr_F_ 15.07.2009 13:20

Ответ: Как сделать текстуру с альфамаской.
 
альтернативный вариант получения тексы с альфой (по крайней мере так делал я)): копируем диффуз на новый созданный имедж с альфой, затем Layers->Add Layer Mask->Reveal All, получаем маску (в layers появится справа от картинки самого слоя). Жмём Алт+ЛКМ по картинке маски и попадаем в её редактирование - пейстим сюда наше чб изображение маски.
Снова жмём Алт+ЛКМ по картинке слоя чтобы перейти обратно в его редактирование.

LLI.T.A.L.K.E.R. 05.04.2013 00:11

Ответ: Как сделать текстуру с альфамаской.
 
поднимаю на всякий случай

Platon 05.04.2013 10:04

Ответ: Как сделать текстуру с альфамаской.
 
Цитата:

Дело в том, что такие форматы, как jpeg, bmp и прочие форматы изображений, к которым мы привыкли, не держдат альфаканала.
bmp поддерживает 32-битное изображение ( и RLE он поддерживает, т.е. можно его юзать как альтернативу формата TGA ), поэтому альфу там можно хранить и блиц ее нормально загружает.
К слову в jpeg тоже можно хранить альфа-канал, но конечно блиц такого не поддерживает.

ABTOMAT 05.04.2013 11:56

Ответ: Как сделать текстуру с альфамаской.
 
Про BMP не знал.
Про JPEG — это часть стандарта или самодеятельность?

Platon 05.04.2013 13:50

Ответ: Как сделать текстуру с альфамаской.
 
Цитата:

Сообщение от ABTOMAT (Сообщение 256339)
Про JPEG — это часть стандарта или самодеятельность?

Самодеятельность :)
Там есть неиспользуемые в большинстве случаев чанки с маркерами APP#, если не ошибаюсь их 8 штук, первый иногда юзается для хранения метаданных.

MadMedic 06.04.2013 03:37

Re: Как сделать текстуру с альфамаской.
 
Вложений: 2
Про JPG и альфа канал. Есть два способа.
1) Хранить альфа слой в мета данных попиксельно - полная самодеятельность. Используется , например, в игре суперкорова. В аттаче jpg картинка, если открыть hex редактором (или хотя бы блокнотом) то последние 64х64 байтов - это альфа канал. В аттаче также соответствующая ей png с общепринятой альфой
2) Хранить информацию об альфе в виде векторной маски, также в метаданных. Используется реже, но используется и вроде как является принятым стандартом. Как правило в графических редакторах только.

Arton 10.12.2013 10:33

Ответ: Как сделать текстуру с альфамаской.
 
Попробовал все три способа, с png (с bmp тоже) не получилось. Лучше её просто с прозрачностью для альфы грузить.

TGA и dds отлично работают с альфой. Однако tga как маска, почему-то не работает (в хорсе всё пашет).

DDS попробовал самым последним, т. к. грузил через 9-й макс, у него на семёрке dds плагин не работает. К счастью у меня установлен ещё 2008-й.

DDS пашет на блице как альфа, так и маска, но надо в плагине при сохранение ставить не DXT3, а DXT5.

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

P. S. Библиотека выше нифига не помогает в случае с ашадовом.


Часовой пояс GMT +4, время: 12:24.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot