Для тех, кто любит рисовать текстуры

Автор dSpair, 06 ноября 2004 01:00:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.


Kolsy


Soul_Tear

Я уже примерял в своем уровне, можно сделать очень высокий лес при большом разрешении.

elvis

В свете последних возможностей стало реально использовать на объекты текстуры с количеством цветов вплоть до true color. В связи с этим вопрос - есть какая либо возможность определить какой цвет на текстуре будет нулевым, то биш прозрачным? Раньше было так - в редакторе понижаешь цвета до 256 - выводишь палитру - самый темный цвет - нулевой, а сейчас как быть?
1826 дней..  в прошлом.

Chuzhoi

#154
Не знаю, как здесь, но в других движках за это отвечает альфа-канал. Если нужна дискретная прозрачность, то обычно есть некий порог альфы (который по умолчанию равен половине диапазона - 128), выше которого пиксели считаются непрозрачными, а ниже - прозрачными.

А настраивается все это (включение прозрачности, тип прозрачности - дискретная/плавная, порог) обычно не в текстуре, а где-нибудь в другом месте, где определяются материалы. Я думаю, что в новом движке за это отвечают MTL-файлы, так что советую обратить внимание на них.

PS. Кстати, возможно, работать с материалами и не понадобится. Попробуй для начала просто сохранить текстуру с альфа-каналом. Если нужна именно дискретная прозрачность, можно попробовать формат DDS (подформат DXT1 с 1-битным альфа-каналом).

elvis

"Мне нужен компьютер, там чтоб процессор мог диски читать. Какой лучше - виновз или пентиум?" - я к чему - для знающих людей мои вопросы наверно выглядят именно так..  :biggrin:  короче я пока загрузился мануалами с цветными картинками чтоб наконец разобраться с этим альфа каналом и с чем его едят.. потом (возможно через неделю) опять буду задавать глупые вопросы.. )
1826 дней..  в прошлом.

Chuzhoi

Э... Извиняюсь, если путано объяснил. В общем, альфа-канал с точки зрения Фотошопа - это банальная прозрачность. Делается либо нажатием на Del, если есть выделение (делается только на отдельном слое, но не на Background), либо маской (Layer - Add Layer Mask - далее выбирается опция под настроение, затем в полученной маске рисуется прозрачность/непрозрачность).

Zontik

Одно уточнение: не самый темный цвет нулевой (это, по всей вероятности, просто довольно частое совпадение), а находящийся в палитре на первом месте. Теоретически это может быть любой цвет, например, однажды у меня это был белый.
Дискретность можно, конечно, настраивать самыми изуверскими способами, но я бы в таком случае сделал простой черно-белый, без полутонов, альфа-канал. Проще и очевиднее. MTL - это все же для более сложных применений.
Если же так важно решить проблему именно с помощью нулевого цвета - да ради бога, такая возможность тоже оставлена. Прежние 256-цветные и 256-размерные текстуры прекрасно работают и на новом движке.
Дайте глазам отдохнуть! Тёмное место

elvis

#158
Разобрался с альфа каналом. Жаль в Paint_Shope этой функции нет, установил себе GIMP благо к нему есть подробная обучалка
Разобраться - разобрался, но проблемы не закончились. Собственно весь сыр-бор я затеял ради так называемых мной приграничных пикселях.

Без них граница между прозрачным/непрозрачным участком текстуры выглядит рубленной (слева) Хорошо если это прямой участок, а если скругление? С новыми возможностями "серые" пиксели желательно сохранить в полупрозрачном виде, тогда вцелом текстура выглядит гораздо качественней. И вроде все получается,  выставил в GIMP нужный мне порог чувствительности альфы, на текстуре смотрится ОК,

а в игре эти приграничные упорно не желают оставаться прозрачными.   

:depress:  Собственно я уже готов сдаться, вернуться в формат GIF где нет дискретной прозрачности, но одно не дает покоя -

слева - текстура одного объекта из ФМ "Розовый коттедж", справа - как она выглядит в игре. Никакой белой бахромы из приграничных пикселей, они как и положено - полупрозрачны. Значит это возможно! Но КАК? Обиднее всего что Коттедж делался еще для версии 1.18   Да, там формат TGA, но моя текстура тоже TGA, значит не в этом дело.
1826 дней..  в прошлом.

elvis

У меня есть только одна версия - anim8or не принимает TGA поэтому текстурирую я временной GIF-текстурой, а затем уже, когда использую конвертеры,  правлю Е-фаил, заменяя в нем GIF на TGA. Может в этом дело? Может надо дополнительно изменять какие-то параметры в Е файле? Ибо на выходе все полупрозрачные пикселы выглядят как НЕ прозрачные..   :depress:
1826 дней..  в прошлом.

Chuzhoi

Проблема знакома, но решения в Dark Engine я не знаю.

В Doom 3 это решается с помощью материалов. В них можно задать два режима прозрачности - дискретный с заданным порогом и плавный. У тебя, судя по всему, установился дискретный режим, а в Rose Cottage - плавный. Поэтому рекомендую обратить внимание на возможность создания материалов (MTL) в новой версии движка - скорее всего, там такие вещи настраиваются.

Кстати, дискретная прозрачность иногда предпочтительнее плавной - например, если нужно изобразить что-нибудь типа сетки Рабица или декоративной решетки на камине (т. е. где нужны действительно четкие края). Плавная прозрачность больше подходит для действительно прозрачных объектов (типа стекла).

С белой бахромой можно бороться в самих графических редакторах - нужно исходную картинку помещать не на белый фон, а на такой, цвет которого максимально приближен к самой картинке (или чуть темнее), и уже к полученному изображению применять прозрачность.

elvis

#161
Эм... не совсем понимаю что такое материал. Это относится к тем текстурам которые покрывают браши? Т.е металл, дерево и т.д? Или это свойство тексту в 3Д-редакторе? если да - то я им никогда не пользовался..
ЦитироватьС белой бахромой можно бороться в самих графических редакторах - нужно исходную картинку помещать не на белый фон, а на такой, цвет которого максимально приближен к самой картинке (или чуть темнее), и уже к полученному изображению применять прозрачность.
учту. У меня фотография была изначально с белым фоном.
Да, и в Розовом коттедже есть объекты с "бахромой"..  подозреваю что все таки дело не в движке.. скорее всего в 3Д-редакторе собака зарыта.. или есть секрет какой навроде "phong" когда Е-фаил правишь.. Эх, знать бы кто этот объект для Розы делал да расспросить...
1826 дней..  в прошлом.

Chuzhoi

Материал - это некое описание, где определено, как именно текстура накладывается. В Doom 3 это обычные текстовые файлы, редактируемые Блокнотом. В Dark Engine теперь также имеется формат для описания материалов - но как он реализован, сказать не могу (возможно, по аналогии, но не факт). Попробуй поискать на TTLG по словам "mtl" или "materials".

Zontik

Я так и не сумел понять, в чем проблема. Вернемся к 1.18, где не было никаких "материалов". Учитывая, что все, работающее в 1.18, прекрасно действует и в 1.19.
Elvis, ты совершенно прав. Anim8or не понимает TGA-текстур. Поэтому приходится временно заменять их GIFами. Обратная подстановка происходит - по желанию - либо правкой промежуточного E-файла, либо исправлением BIN в HEX-редакторе. Первый вариант очевиднее.
И что же? С TGA-текстурами все работает так, как и должно. В чем же ошибка?
Скорее всего, где-то здесь.
ЦитироватьС новыми возможностями "серые" пиксели желательно сохранить в полупрозрачном виде, тогда вцелом текстура выглядит гораздо качественней. И вроде все получается,  выставил в GIMP нужный мне порог чувствительности альфы, на текстуре смотрится ОК
Я так и не понял сути изложенного, поскольку никогда не работал ни с Gimp, ни с PaintShop. Я делаю это все в Фотошопе. В самой старой версии, которую сумел найти (в новых это работает не хуже, так что моя приверженность старым версиям к делу не относится). Но кое-что показалось мне странным. Конкретно - вот это место.
Цитировать"серые" пиксели желательно сохранить в полупрозрачном виде
Плюс загадочная картинка ниже.
Прозрачность определяется альфа-каналом и только им. Черный цвет - полностью прозрачный, белый - абсолютно нет. Серый - полупрозрачный в зависимости от своей интенсивности (бледно-серый будет едва-едва прозрачным, к примеру). И если прозрачность какого-то места тебя не устраивает, ты должен править исключительно альфа-канал. Добавлять серые пиксели, менять их интенсивность и т.п. Фотошоп позволяет работать с каждым каналом отдельно или сразу с их комбинацией; при регулировке прозрачности каналы R, G и B следует отключать.
Что находится на других каналах - альфу абсолютно не беспокоит Видимое изображение может представлять собой ровно залитый одним цветом квадрат, но если в альфа-канале нарисован черно-белый треугольник - на объекте в игре будет именно треугольник. Плавные у него края, резкие, скругленные или прямые - определяет альфа-канал, а не то, что нарисовано в каналах RGB. То есть любая правка видимого изображения на прозрачность никак не влияет.
Почему на приведенной в качестве примера бахроме нет ни одного белого пикселя? Потому что в тех местах, где на видимом изображении наблюдается белый или серый цвет, в альфа-канале находится черный или, возможно, темно-серый. Как это достигается? Опять же, возвращаюсь к Фотошопу. Там это делается элементарно - с помощью операций с выделением. Выделяется весь белый цвет на видимом изображении, затем переносишь это выделение в альфа-канал и сужаешь область выделения - скажем, на 1 пиксель по всему периметру. Можно выделить границу, настроить ее размытие... вариантов - море.
Не знаю, какие возможности дает в этом плане Gimp, но даже в самом безнадежном случае можно, наверное, просто открыть отдельно альфа-канал и пройтись черной кисточкой по всем проблемным местам. А края образовавшихся при этом резких участков можно обработать серым цветом или даже просто применить ко всему изображению Blur-фильтр.
Вот, собственно, и все. А для чего нужен "порог чувствительности" - это находится за гранью моего понимания. Может, это просто хитрое название для чего-то совсем другого?
А теперь, если ты разобрался, для чего нужен альфа-канал и что с ним делать, прислушайся к совету выше:
ЦитироватьС белой бахромой можно бороться в самих графических редакторах - нужно исходную картинку помещать не на белый фон, а на такой, цвет которого максимально приближен к самой картинке (или чуть темнее), и уже к полученному изображению применять прозрачность.
В случаях с особо сложными объектами это хорошая дополнительная палочка-выручалочка. Проблема будет лишь в том, что могут возникнуть трудности с наложением такой текстуры в Anim8or - край будет едва заметен. Так что временный GIF лучше делать более контрастным, на том самом белом фоне.
Ну и в заключение - еще пару слов про "дискретный режим". В том же TGA это достигается куда как просто: исключаются все полутона из альфа-канала. Если останутся только черный и белый - вот это она и есть, дискретность. Хотя к этому моменту ты уже должен дойти до этого вывода сам.
Ну а дальше, если возникнет желание, можно потихоньку осваивать новые форматы специально для 1.19 и текстовый формат MTL-файлов. Ничего принципиально нового для тебя уже там не будет, разве что, может быть, в отдельных случаях кое-что станет немного удобнее.
И чуть-чуть на другую тему.
ЦитироватьЭм... не совсем понимаю что такое материал. Это относится к тем текстурам которые покрывают браши? Т.е металл, дерево и т.д? Или это свойство тексту в 3Д-редакторе?
И то, и другое называется одним словом. Бедный, бедный русский язык. Но ты их все-таки не путай. Первое - "материал" в понимании движка, а по сути - место расположения текстуры в иерархии и назначенные ей свойства (главное из которых - связанные с ним звуки шагов; остальные тоже бывают, но используются значительно реже). Второе - с этим ты столкнешься, когда начнешь делать светильники. Здесь основных два: прозрачность и "светимость", причем если второй еще как-то можно задать непосредственно в Anim8or, то с первым я там обломался по полной программе. В результате пришел к выводу, что лучше всего задавать их непосредственно в E-файле.
По умолчанию там будет что-то вроде:
3,"brc_ruby",,TMAP "brc_ruby.gif",0,TRANSP 0;
Исправляем:
3,"brc_ruby",,TMAP "brc_ruby.gif",0,TRANSP 70,ILLUM 80;
Что означает: весь этот материал в игре будет на 30% (т.е. 100 - 70 = 30) прозрачным и на 80% светиться даже в темноте. Если в редакторе добавить этому объекту свойство Self Illumination = 1 и обеспечить связью ControlDevice, он будет светиться при включении и гаснуть при выключении. Как стандартные светильники. Не испускать свет, а именно светиться (движок на ходу меняет свойство материала). Почувствуй разницу.
И не путай в Anim8or материал с текстурой. Текстура - это файл, а материал - шарик из линейки слева с загруженной в него текстурой. У тебя может быть одна текстура, но несколько разных использующих ее материалов. Как сделано с оригинальными светильниками игры: при включении светится только стекло, а рамка остается темной, хотя текстура одна. Но в 3D-редакторе на стекло ее накладывали отдельно, в виде отдельного материала, использующего ту же текстуру.
Думаю, пока хватит.
Дайте глазам отдохнуть! Тёмное место

DJ Riff

Цитата: elvis от 19 марта 2013 22:52:06Разобрался с альфа каналом. Жаль в Paint_Shope этой функции нет
В пайнтшопе она есть в версии 6 и далее уж точно. Нужно создать маску слоя. Если сам слой уже содержит частично прозрачные участки, то в качестве источника для маски нужно выбрать прозрачность этого слоя. После этого маску нужно сохранить в альфа-канале, и только после этого сохранить изображение в TGA или DDS.
Тьма тоже распространяется со скоростью света.