Roughness map что это
Roughness map что это
В этой статье мы разберемся, как настраивать материалы в короне (которая рендер, а не болезнь 💁♂️). Никаких сложных материалов и карт я сейчас показывать не буду — перенесем это в отдельные посты.
Материалы — одна из тех сложных тем, которую легче понять самому, чем объяснить кому-нибудь, но я попробую (а раньше, во времена v-ray вообще жопа была с материалами).
Вот небольшая навигация по посту:
После обновления Corona Render до версии 7, появился новый материал — CoronaPhysicalMtl. Логика его настройки несколько меняется.
Далее в тексте вся информация представлена о CoronaLegaсyMtl.
🤷♂️ Что такое PBR и вообще
Сейчас в большинстве рендер-движков используется принцип PBR, что это такое читаем здесь, а для тех кто прям закопаться хочет — здесь и здесь. Если кратко — это набор картинок, которые указывают, где свет на модели должен сильнее отражаться (прям вам в глаз). Ещё этот набор не обязательно должен состоять из изображений, это могут быть числовые значения и параметрические карты.
Так выглядят карты
Обычно набор карт такой:
🏫 Настраиваем материал кирпича
Если вы хотите настроить материал какой-нибудь другой поверхности — без проблем, просто скачайте себе другие текстуры с любого сайта или сборника, процесс не будет сильно отличаться. Например, на сайте texturehaven.com полно бесплатных текстур разных поверхностей.
Первым делом идём и скачиваем набор карт для материала кирпича, например здесь. Все карты нам не нужны, достаточно скачать Diffuse, Displacement, Normal и Roughness.
Качайте эти карты, достаточно в формате jpg размером 4k
Все доступные материалы и карты можно создать несколькими способами:
Теперь открываем окно настройки материалов в максе (можно просто нажать “M” на клавиатуре) и создаём пустой материал CoronaMtl перетаскиванием его из списка доступных в область редактирования (ищем во вкладке Materials, в подвкладке Corona).
Слева вытаскиваем CoronaMtl, можно назвать его “Bricks” раз мы скачали текстуры кирпичной стены
Ок. Материал создали, теперь нужно провести небольшую первоначальную настройку материала — включить отражения. Хз почему, но почему то в CoronaMtl они выключены по-умолчанию. Просто крутим параметр Reflection level на 1,0.
Здесь крутим Reflection level
Далее нужно подключить текстуры, которые мы скачали ранее, к материалу. Добавляем текстуры — создаём карту CoronaBitmap и указываем путь к текстуре (ищем CoronaBitmap во вкладке Maps, в подвкладке Corona). Можно использовать и обычный Bitmap, но разработчики короны говорят, что их карта работает лучше и быстрее, да и крутилок там побольше на будущее.
Как создать карту или материал кликом правой кнопки мыши Когда всё вытащите, должно быть так
Теперь присоединяем карты в нужные слоты материала — тянем от кружочка карты линию до кружочка материала.
В слот Diffuse вставляется карта, задающая цвет материала, она может называться Diffuse, Albedo или Base Color. (разные источники по-разному называют текстуры).
В слот Reflection color вставляется карта, задающая силу отражения, она может называться Reflection, Specular, Metallic.
В слот Reflection glossiness вставляется карта, задающая размытость отражений/шероховатость материала. Она может называться Glossines или Roughness. При использовании в короне карты Roughness её нужно инвертировать — добавляем карту Output и ставим галочку “Invert” или отмечаем эту же галочку в настройках самой CoronaBitmap.
Инверсия нужна для правильной работы карты — дело в том, что Roughness задаёт шероховатости на поверхности объекта и её логика в том, что чем белее карта, тем более шероховатая должна быть область; а принцип карты reflection и reflection glossines заключается в том, что чем белее карта/цвет, тем больше света отражается от объекта в этом месте и тем более четкое отражение должно быть соответственно (глянцевость крч.). А т.к. шероховатость это противоположность глянцевости нужно карту инвертировать. (Поэтому если вы скачаете где-нибудь карту Glossines или Specular — инвертировать не нужно будет, всё уже ок.)
Если у вас одна карта, отвечающая за отражения, можно попробовать вставить её и в слот Reflection color и в слот Reflection glossiness.
В слот Bump вставляется карта, задающая плоский рельеф материала. Она может называться Bump или Normal (или может быть сразу оба варианта). Карта Normal должна быть подключена в слот Bump через еще одну карту — CoronaNormal с включенной галочкой “Add gamma to input”. В слот Additional bump можно вставить карту Bump, если она у вас есть.
В слот Displacement вставляется карта, задающая настоящий, объемный рельеф. Она может называться Displacement или Height.
Должно получиться примерно так Включаем превью
Если мы посмотрим, что у нас получается, то увидим, что кирпич какой-то плоский. Т.е. рельеф вроде-бы есть, но он как на стрёмных обоях из двухтысячных с текстурой кирпича. Чтобы исправить это крутим до приемлемого значения параметр “Max level” в разделе “Displacement” настроек материала.
Настройка уровня “выдавливания” Правильный кирпич с Displacementом
Получился норм кирпич.
🤹♂️ А можно ли сделать материал, не используя текстуры?
Всё, что мы делали выше, получилось легко и просто, благодаря тому, что все нужные карты у нас уже были. А что делать, если нужно настроить какой-нибудь простенький материал без текстур, чтоб просто был определенного цвета и блестел/не блестел так, как нам нужно? А для всего этого нужно задать определенные циферки в настройках материала! Давайте разбираться, какие цифры на что влияют.
Основные параметры материала
Далее рассмотрим каждый параметр отдельно
Цвет объекта
Diffuse — влияет на цвет объекта. Можно вставить карту или просто настроить цвет. А можно вообще выключить, указав 0,0 в разделе Diffuse level (обычно ноль задают у металлов и стекла).
При diffuse level близком к 0 цвет становится черным
А что делать, если текстура, которую вы скачали, в одном цвете, а вам нужно покрасить его в другой или обесцветить? Если вы не хотите открывать ФШ или хотите сразу видеть результат, можно сделать это прям в максе и есть несколько способов. Давайте рассмотрим на примере материала ткани т.к. у них обычно сложный Diffuse и у них чаще всего меняют цвет.
Способ 1. Подключаем карту Diffuse через еще одну карту Color Corretion и крутим параметр Hue Shift для изменения оттенка и другие параметры для изменения яркости/контрастности.
После использования карты Color Correction красный шарик стал желтым
В этом способе больше телодвижений, но более контролируемый результат
Также важно отметить, что не бывает абсолютно белого и абсолютно черного цвета. Для черных объектов рекомендую минимальный уровень RGB = 5, а для белых максимальный RGB = 150-180.
Отражения
Reflection level — влияет на силу отражения, можно просто задать число от 0 до 1 и в дополнение к нему вставить карту или цвет — чем белее, тем больше отражает.
Если в этот слот вставить карту с цветом, то отражение будет иметь оттенок, обычно это используется для настройки материалов цветных металлов (золото, медь и т.д.).
Тут прост сила отражения меняется
Reflection glossiness — влияет на размытость изображения, можно вставить карту или просто настроить число от 0 до 1 — чем белее, тем более четкое будет отражение.
При уровне 0,5 кажется, что шарик и не отражает ничего, но ведь он отражает! Сравните с первой картинкой, где мы крутили diffuse level
Reflection Frensel IOR — также влияет на силу отражения — чем больше число, тем сильнее отражение. В большинстве случаев оставляем как есть, можно увеличивать в металлических материалах и материале зеркала.
При IOR = 15 материал шарика похож на хром или зеркало
Преломление и прозрачность
Refraction level — используется для создания стеклянных материалов, материалов жидкостей и др. прозрачных материалов. Это не просто прозрачность — это степень преломления света материалом. Если наложить материал с refraction level = 1 на сферу, то свет, проходя через неё, будет менять свое направление.
Для наглядности добавил текстуру на задний план. Материал шарика справа похож на стекло
Refraction glossiness — влияет на размытость проходящего через материал света — чем меньше число (или чем чернее карта), тем мутнее будут внутренности материала.
Видно помутнение полосок на центральном и левом шариках
Refraction IOR — коэффициент преломления света — влияет на степень искажения света, при преломлении внутри объекта.
Происходит какая-то дичь. Меняйте это значение, если точно знаете, что делаете
Opacity — обычная прозрачность объекта. Чем белее карта (или ближе к 1 число), тем более непрозрачным будет объект.
Шарик просто пропадает, как крутить прозрачность в ФШ
Рельеф
Displacement — как мы выяснили выше, эта функция выдавливает настоящую геометрию из объекта, может сделать плоскую стену объемной. Min level задает минимальное отклонение от изначальных границ объекта (это насколько выдавятся черные части карты, которую вы засунете в слот displacement), max level задает максимальное отклонение (для белых частей карты displacement).
Очень ресурсоёмкая функция, сильно увеличивает время рендера. Не используйте её где попало, используйте только когда прям действительно нужно.
Числа на скриншоте — условные
Bump — карта, которая создаёт рельеф на поверхности объекта, не меняя его геометрию. По-сравнению с displacement эта карта создаёт только видимость рельефа, на самом деле никакие дополнительные полигоны не создаются и не выдавливаются, много ресурсов не использует и не замедляет рендер.
В слот bump можно вставлять карты в оттенках серого, где черный цвет — наибольшее заглубление рельефа, а белый — выпирание соответственно. Также сюда можно вставлять специальные карты нормалей с помощью CoronaNormal, как мы рассматривали на примере материала кирпича.
Силу бампа можно задать цифрой от 0 до 100 в соответствующем разделе в самом низу настроек материала.
Чем больше число, тем более выражен эффект
Вы, наверное, заметили, что в настройках материала есть еще куча всяких параметров. О некоторых из них я расскажу в будущих постах.
Размер текстуры / UVW mapping / Развертка
Выше мы рассмотрели настройки материалов и какие текстуры в какой слот нужно кидать, но есть еще один не менее важный аспект — макс должен как то понять, куда должна ложиться текстура на объекте и какого размера она должна быть.
Представим, что вы замоделили некий объект, наложили на него материал дерева, включили рендер и… Получилась какая-то хрень:
Текстура легла криво
Для решения этого вопроса существует такая вещь как развертка. Грубо говоря, это развернутая на плоскость поверхность 3D-объекта. Развертку можно создавать несколькими, различающимися по точности способами.
Способ 1 (самый простой). Наложить на объект модификатор UVW Map с параметром “Mapping” — Box и задать размер текстуры в единицах измерения вашего проекта.
Модификатор UVW Map
Если после наложения модификатора текстура ориентирована не в ту сторону, в которую вам нужно (обычно такое бывает именно с материалом дерева), модификатор можно повернуть так, как вам нужно — выбираем во вкладке модификатора Gizmo и крутим.
Если вам нужно повернуть ориентацию древесных волокон на какой-то отдельной части объекта (а такое тоже часто бывает, например, при моделировании корпусной мебели) — накладываете модификатор Edit Poly, выбираете в нём нужные части объекта.
Выбрали части объекта, текстуру на которых мы хотим повернуть
Далее, не снимая выделения, накладываем еще один модификатор — UVW Xform. В параметрах модификатора задаём “Rotation” = 90. Таким образом мы повернули текстуру на выделенных элементах объекта на 90 градусов.
Крутим направление волокон с помощью UVW Xform Теперь всё нормально лежит
В этом способе размер текстуры задаётся в параметрах модификатора UVW Map.
Способ 2. Второй способ почти идентичен первому. Единственное отличие — размер текстуры будет задаваться в самой текстуре, а не модификаторе UVW Map. У такого варианта есть свои преимущества — например, если у вас на один объект наложено несколько материалов (например на стенах в интерьере такое часто бывает) — при использовании этого способа удобнее будет настраивать размер текстур.
Просто на этапе наложения модификатора UVW Map жмем галочку “Real-World Map Size”. А размер текстуры настраиваем в параметрах самой текстуры CoronaBitmap (тоже нажав там галочку “Real-World Map Size”.
Включаем Real-World Map Size в модификаторе UVW Map Включаем Real-World Map Size в карте
В итоге получается то-же самое, что и в первом способе, просто так удобнее управлять размером текстур в объекте с разными материалами на нескольких элементах.
Способ 3. Подключить текстуру через карту CoronaTriplanar. Помогает в тех случаях, когда нужно наложить абстрактную текстуру на объект без развертки. Работает без каких-либо модификаторов. Крутить ориентацию текстуры на отдельных элементах неудобно (нужно создавать отдельный материал).
Настройка CoronaTriplanar Получается так. Как видите, для дерева не очень вариант
Способ 4. Сделать развертку модели, но это уже тема для отдельного поста 🙅♂️.
💁♂️ Готовые материалы
Если вы дочитали до этой части поста (вау, эти посты кто-то читает!) и вы всё равно-не понимаете/нет времени, как настроить нужный материал, у меня для вас хорошая новость — в короне есть большая встроенная библиотека материалов с удобными превью.
Есть несколько способов открыть библиотеку материалов. Самый удобный — нажать на специальную иконку из тулбара, который появился у вас после установки короны (надеюсь вы не закрыли этот тулбар).
Просто открываете библиотеку, выбираете нужный материал, перетаскиваете его в область редактирования или сразу на объект.
Слева — куча категорий материалов, справа — куча материалов с превью.
Только там есть не все нужные материалы, иногда всё-таки нужно настраивать что-то самому.
Если хотите глубже разобраться, попробуйте посмотреть какие-нибудь видеоуроки. Например этот. Еще очень помогает почитать официальную документацию, но она на английском языке.
Как создавать PBR текстуры: практический курс. Часть 1
‘‘), array(«string» => ‘‘), ); if (!isset($_COOKIE[‘rek’])) < print($banners[$GLOBALS["banner_num"]]["string"]); >elseif ($_COOKIE[‘rek’] == «rek1») < print($banners[0]["string"]); >elseif ($_COOKIE[‘rek’] == «rek2») < print($banners[1]["string"]); >?>
Это продолжение первого тома теоретических изысканий о том, что такое PBR. Этот (второй) том посвящен практическим приёмам по созданию PBR текстур.
Свет и материя
Практические рекомендации по созданию PBR текстур
Физически корректный рендеринг (PBR) можно рассматривать скорее как методику, а не как жесткий стандарт. Существуют его принципы и инструкции, но не верно считать его стандартом. Таким образом, могут быть различия в его реализации. Эти различия обычно можно найти в типах карт, используемых в процессе шейдинга (создания материалов), трактовке BRDF (двулучевой функции отражательной способности (ДФОС)) и в том, как значения данных отвечающих за шероховатость / глянцевитость могут быть переназначены в отдельных случаях. Иногда изменяются даже названия карт, но в основе использования PBR заложены одни и те же принципы.
В этом руководстве мы обсудим два наиболее распространенных подхода при создании материалов:
как показано на рисунке 01:
Инструменты Substance для создания PBR карт, входящие в состав программ SubstanceDesigner, SubstancePainter и Bitmap2Material 3, поддерживают оба эти подхода. Substance PBR-шейдеры metall/roughness и specular/glossiness используют т.н. GGX-разновидности функции BRDF, в которой не используется переназначение величин шероховатости и глянцевитости. Тем не менее, если пользовательские переназначения все же необходимы – это может быть легко реализовано в Substance материалах. Кроме того, пользовательские шейдеры поддерживаются инструментами Substance, что означает, что вы можете адаптировать Substance инструменты для всех пользовательских пайплайнов.
В первом томе данного издания мы рассмотрели PBR с технической и теоретической точки зрения. Во 2-м томе мы будем обсуждать практическое применение PBR текстур и сформулируем набор принципов, основанных на фундаментальных знаниях, установленных в первом томе. Мы начнем с переопределения PBR с художественной точки зрения. После этого мы рассмотрим workflow создания двух типов материала: metall/roughness и specular/glossiness, отвечающих общепринятым принципам и правилам. Затем мы подробно определим различия в методах создания (авторинга) таких типов материалов. Поэтому, стоит коротко напомнить основные моменты, чтобы получить полное представление об общих принципах создания PBR текстур.
Что такое PBR?
Физически корректный рендеринг (PBR) является методом затенения (шейдинга) и рендеринга, при котором обеспечивается более точное представление о том, как свет взаимодействует с поверхностью. Эти представления могут быть отнесены к физически корректному рендерингу (PBR) или физически корректному шейдину (PBS). В зависимости от того, какой аспект рабочего процесса обсуждается, PBS, как правило, специфичен для процесса шейдинга, а PBR, характерен для рендеринга и освещения. В комплексе оба термина описывают процесс достижения определенной цели с физически корректной точки зрения.
Каковы преимущества PBR?
Рассматриваемые преимущества PBR с художественной точки зрения и эффективности производства, могут заключаются в следующем:
Что это означает для художника?
Мы, как 3D художники должны думать несколько иначе о картах, которые описывают свойства поверхности. Существуют новые типы карт с правилами их создания и принципами которые стоит соблюдать.
Мы должны отбросить понятия карт дифуза и спекуляра из традиционного рендеринга. Эти карты будут обсуждаться только как обходные пути, так сказать для аппроксимации взаимодействия света с материалами. Достижения в области программного и аппаратного рендеринга позволяет нам теперь более точно имитировать физику света.
Подход metall/roughness.
Подход metall/roughness определяется набором каналов, которые передаются в виде определённых текстур в PBR-шейдер. Основными картами при создании материала по подходу metall/roughness являются карты:
как показано на рисунке 02:
Мы обсудим каждый из этих типов карт ниже. PBR-шейдеры также используют карту ambient occlusion, карту нормалей, и даже карту высоты для параллакс-маппинга, как показано на рисунке 03. Эти типы карт являются общими для обоих видов материалов (см. выше) и будут обсуждаться в разделе «Общие карты для обоих воркфлоу».
При создании metall/roughness материала, значение отражательной способности материала задается картой базового цвета, а для диэлектриков – также картой отраженного цвета. Отражения при скользящих углах падения определяются BRDF-моделью. Карта металличности работает как маска и используется для того, чтобы дифференцировать (отделить) данные для металлической поверхности от данных для неметаллической, найденные на текстуре базового цвета.
Значения френелевского коэффициента F0 для диэлектриков (неметаллов) не определяются вручную, эту функцию берет на себя шейдер. Когда такой шейдер видит черный цвет на карте металличности, он обрабатывает соответствующие области в карте базового цвета как для диэлектрика и использует значение коэффициента отражения 4% (0,04 в линейном пространстве), как показано на рисунке 04. Как мы уже обсуждали в первой части, значение 4% считается наиболее распространенным для диэлектрических материалов. Важно отметить, что все значения, такие как: F0 для диэлектриков, отражающая способность, диапазон яркостей для альбедо (т.н. рассеянного цвета или чистого диффузного цвета), устанавливаются на основе реальных измерений. Яркости обеих карт на рисунке 04 также основаны на измерениях.
В первом томе мы обсуждали понятие сохранения энергии где говорилось, что интенсивность света, отраженного от поверхности никогда не будет выше интенсивности света, падающего на поверхность. С точки зрения работы материалов, шейдеры, как раз, и осуществляют управление сохранением энергии, как в случае с шейдерами Substance. При подходе metall/roughness закон сохранения энергии нарушить невозможно. Баланс между дифузом (отраженным цветом) и отражательной способностью контролируется маской металличности. Это означает, что мы не можем смоделировать ситуацию, когда диффузную и отражательную составляющую можно объединить с целью отразить/преломить больше света, чем первоначально получила поверхность.
Константа F0 для диэлектриков.
Инструментарий Substance или UnrealEngine 4 для metall/roughness материалов дает возможность контролировать зеркальность или блеск материала с помощью изменения значение константы F0 (коэффициента отражения по френелю) для диэлектриков. Это значение называется «specularLevel» в Substance. Значения константы F0 представлены интервалом 0,0 – 0,08, как показано на рисунке 05. Если вам в Substance Designer нужно вручную установить F0 для диэлектрика, вы можете сделать это, используя выход «specularLevel», как показано на рисунке 06. Мы подробно обсудим значения F0 для диэлектриков далее, при обсуждении подхода specular/glossiness.
Карта базового цвета – это RGB карта, которая может содержать 2 типа данных:
как показано на рисунке 07.
Цвет, представляющий на этой карте неметаллическую поверхность, означает отражённую длину волны (как было описано в первом томе). А силу отражения эта карта базового цвета показывает тогда, когда область поверхности обозначена как металл на карте металличности.
Рекомендации по созданию текстуры базового цвета.
Выше упоминалось, что карта базового цвета (альбедо) содержит данные для отраженного света в терминах диэлектрических материалов и, таким образом, эта карта должна быть лишена информации об освещении, например такой, как т.н. контактные затенения (Ambient occlusion). Однако, из этого правила могут быть исключения: например, для добавления микро-затенений, когда шейдер не сможет обеспечить этот уровень детализации только посредством канала Ambient occlusion, как показано на рисунке 09. Тем не менее, если микро-затенения добавлены к карте, она по-прежнему должна подчинятся рекомендациям касательно диапазона яркостей.
Значения яркостей для карты, которая описывает отражательную способность для металлов, должны быть получены реальными измерениями значений. Значения коэффициента отражения находятся в диапазоне 70 – 100%. Этот диапазон может быть отображен значениями sRGB 180 – 255. В разделе Substance PBR Utilities мы обсудим инструменты, которые обеспечивают предустановленные значения F0 для обычных материалов. Полезным информационным ресурсом, кроме этого, может стать блог Себастьяна Лагарда (Sebastien Lagarde), где приведены графики значений яркостей для карт металличности и шероховатости.
В следующем разделе, посвященном картам, описывающим металлы, будет показано, что базовый цвет также может содержать значения для описания отражательной способности металлов. Если информацию об участках поверхности с загрязнениями или окислениями добавить к карте базового цвета, то это приведет к тому, что отражательная способность участков металла будет понижена до диапазона, которые не должен соответствовать значениям чистого металла. Добавление участков загрязнений или окисления также должны быть учтены в карте металличности. Значения для отражений на metallic map также должны быть снижены в этих областях, чтобы обозначить, что эти участки больше не рассматриваются в качестве исходного металла. Например, на рисунке 10 видно, что ржавый металл рассматривается как диэлектрик и описан черным цветом в карте металличности.
Карта металличности (metallic map, в градациях серого, в линейном пространстве).
Карта металличности используется, чтобы определить, какие участки материала обозначают чистый необработанный металл. Карта металличности – это изображение в оттенках серого или, грубо говоря, чёрно-белая текстура. Она работает как маска для карты базового цвета, и указывает шейдеру, как необходимо интерпретировать данные, найденные в карте базового цвета. Данные в карте металличности не содержат реальных данных, которые непосредственно описывают качества металла. Эта карта просто указывает шейдеру, какие области на карте базового цвета должны быть поняты как диффузный цвет диэлектрика, а в каких областях – как отражающие участки для металла. В карте металличности, значение 0,0 (черный – 0 sRGB) представляет неметаллические области, а 1,0 (белый – 255 sRGB) – чистый металл.
С точки зрения определения понятия чистого металла и неметалла, карта металличности часто бинарная т.е. черная или белая, «металлическая» или «неметаллическая». На практике, когда шейдер «видит» белый цвет на металлической карте, он проверяет соответствующие области в карте базового цвета, чтобы получить значения коэффициента отражения для металла, как показано на рисунке 11:
Рекомендации по созданию текстуры металличности.
При создании карт для металлов следует учитывать две важные особенности:
Далее эти особенности будут учтены отдельно при обсуждении практических рекомендаций для создания PBS текстур.
Если вы хотите более подробно узнать о фотореалистичном рендеринге, то вам сюда.
А если вы хотите более глубоко понять как создавать фотореалистичные материалы с помощью V-Ray, то читайте эту статью.
Подпишитесь на обновление блога (вот 3 причины для этого).