Крамцов

Крамцов 

DayZ SA

123subscribers

34posts

Так все таки, что использовать для SMDI: Spec/Glos или Met/Rough?

Здравствуй, дружок!
Давненько ничего не писал, так что не буду тянуть кота за хвост и сразу перейду к основной мысли:
Если смотреть чуть шире и не загонять свой бедный мозг в рамки названий, то в итоге в SMDI мы имеем два канала с данными: зеленый и синий.
И движку глубоко пофигу, откуда эти данные там взялись. Равно как и пофигу на то, какие постфиксы были у файлов, из которых мы эти данные взяли.И раз пофигу движку, то почему не должно быть пофигу нам? Нам, как и движку, важно не то, откуда пришли данные, а то, какие эти данные. Сейчас попытаюсь объяснить.
В случае с Metalness/Roughness мы имеем две карты в Grayscale. В случае со Spec/Glos мы имеем RGB карту для Specular и Grayscale карту для Glossiness.
В SMDI идут две карты в Grayscale. Вроде как это наводит на мысль, что нам нужен Met/Rough, но нет.
В зеленый канал идет Spec, а в синий Glos.
И вот тут, вероятно, возникают вопросы.
Те, кто имел дело со Spec/Glos в том же Substance Painter, видели, что Specular - это RGB карта. И что в зависимости от цвета, будет меняться цвет и цвет отражения на поверхности.
И если в SMDI идет Grayscale, а Specular у нас в RGB, то в голове запросто может появиться некая нескладуха.
Нюанс вот в чем: в случае с DayZ используется немного иная схема. За цвет отражения отвечает параметр Specular[] в *.rvmat.
Т.е. потребность задавать цвет отражения через RGB карту у нас отпадает. Но нам все еще необходимо знать, где именно и на сколько сильное отражение будет на модели.
А для этого нам хватит и grayscale карты. Чем ближе цвет к белому, тем сильнее будет отражение на поверхности.
Тут и кроется ответ, почему нам не очень подходит Met/Rough.
Metalness карта в 95% случаев несет в себе только белый и/или только черный цвета.
Т.е. когда шейдеры будут обрабатывать данные из канала G в SMDI, у нас будет засвеченная поверхность/поверхность вообще без бликов/жуткая каша. Результат итоговый, естественно, еще зависит и от настроек самого rvmat, но... добиться ХОРОШЕГО результата тут не получится. Особенно, если у модели несколько материалов, из которых она сделана.
Какой-нибудь приклад, к примеру, может иметь металлический каркас, но при этом тыльник будет резиновый, заглушки будут пластиковыми, и какие-нибудь накладки деревянными.
Все эти материалы, в идеале, должны иметь разную степень отражений. А еще у этих материалов могут быть потертости. Например на металлических частях могут быть потертости и царапины, там уже виден живой металл. И такие места должны быть немного светлее.
Как ты понимаешь, добиться этого весьма затруднительно, когда у тебя в канале, который отвечает за отражения, однородный цвет.
Еще один нюанс: заключается он в методе, которым зачастую пользуются, для получение металлической поверхности. В дифьюз карту (в основную текстуру) идет черный цвет, а эффект металла достигается за счет Specular.
Т.е. нам и Spec/Gloss может подойти не во всех случаях и придется как-то выкручиваться.
Теперь переходим к каналу B в SMDI.
В него вшивается Glossiness карта (иначе говоря - глянцевость).
Чем ближе к черному, тем более матовой будет поверхность, чем ближе к белому, тем более глянцевая.
И вот тут выползает еще один нюанс: Когда модель делают под Met/Roug, то Roughness, если говорить условно, играет ту же роль, что и Glossiness. Но значения инвертированы.
Т.е. Чем ближе к черному, тем более сглаженная будет поверхность, чем ближе к белому - более шероховатая.
Теперь ты понимаешь, почему бездумно пихать карты в SMDI - говно затея? Если нет - подумай немного.
И так.

Как же, все таки, сделать SMDI из Spec/Glos и Met/Rough?
Моя рекомендация вот в чем:
Отказаться от вот этих ваших фотошопов и заиметь минимальный набор знаний и навыков для работы с Substance Painter. И, соответственно, собирать все необходимые карты там.И эксперименты все проводить через него. Это, в итоге, проще и удобнее. И нагляднее. И лучше. И полезнее.
Но да, я понимаю, что это вряд ли произойдет, так что перейдем к варианту через фотошоп.
Для начала настраиваем rvmat следующим образом:
ambient[] = {1,1,1,1};
diffuse[] = {1,1,1,1};
forcedDiffuse[] = {0,0,0,1};
emmisive[] = {0,0,0,1};
specular[] = {0.35,0.35,0.35,1};
specularPower = 75;
PixelShaderID = "Super";
VertexShaderID = "Super";
В шестой стейдж, который с функцией Френеля, вписываем:
texture = "#(ai,64,64,1)fresnel(0.9,0.8)";
Это усредненные значения и они очень удобны для экспериментов над многострадальным SMDI.
И да, держим в голове основную мысль: не важно, откуда пришли данные в канал, важно, какие именно там данные! Мы можем использовать что угодно, лишь бы оно подходило под наши нужды. Но здравомыслие при этом откидывать тоже не стоит)
Откуда мы можем взять данные для канала G?
Ну, во-первых, из карты Spec. Расчехляем фотошопы и копируем из Spec один из каналов (на выбор, их аж целых три) в канал G.
Или переводим Spec в Grayscale и копируем его.
Во-вторых, мы можем взять один из каналов с основной текстуры.
Выбираем тот, который потемнее (как правило синий) и используем его.
Смотрим на то, что у нас получилось в канале и держим в голове то, что белый цвет - плохо. Как и черный.
В среднем (для крашенного метала), цвет канала должен быть #282828, т.е. темно-серым.
Откуда берем данные для канала B?
Либо Rough, либо Gloss.
Gloss мы просто вставляем в канал B, Rough - вставляем и инвертируем (и, вероятно, докручиваем)
На совсем крайние случаи мы можем взять самый светлый канал из текстуры и докручивать его, либо взять канал G из нормали.
Но это прям совсем всратый вариант. Максимально всратый. Не делай так без острой необходимости никогда. Иначе будешь проклят!
Когда оба канала готовы, заливаем красный канал белым цветом, сохраняем SMDI и идем смотреть на результат.
Скорее всего, с первого раза он нас не устроит. Так что снова идем в фотошоп и корректируем уровни через Яркость/Контрастность, либо Уровни. И делаем это до тех пор, пока не получится то, что нам надо.
НО! Но.
Я все равно настаиваю на том, что подобные варианты не продуктивны, работают от случая к случаю и на них нельзя полагаться. Так что при любых раскладах я рекомендую освоить Substance.
Умея с ним работать, для получения хорошего SMDI будет достаточно иметь модель с хорошей нормалью. Остальное можно будет сделать самостоятельно и достаточно быстро.
Ну и напоследок, вот как, оно может выглядеть на тех настройках, которые я скинул выше
SMDI
Канал G
Канал B
Go up