rough ao текстура что это
Corona Renderer Helpdesk for 3ds Max plugin
How can we help you today?
Corona Ambient Occlusion (AO) Map Print
Modified on: Tue, 31 Aug, 2021 at 2:37 PM
Corona Ambient Occlusion (AO) Map
CoronaAO is a map that can be used to color the concave and convex areas of a surface. By default, when used as a diffuse color, it will darken crevices and cavities of objects while also brightening flat and raised areas. Corona AO can also be used to create advanced materials, such as rusted metal, worn wood, scratched paint, etc., or to provide «artistic» control over the overall scene appearance.
Note: For the sake of realism and physical accuracy, we do not recommend using ambient occlusion in order to enhance shading in the whole scene. Corona Renderer will take care of darkening concave areas without any special tweaks. Example of a scene with and without Corona AO:
(CoronaAO as seen in the material editor)
Corona Ambient Occlusion (AO) – Parameters
Occluded/Unoccluded Color and AO Distance
There are three inputs for Corona AO, the first two control the occluded and unoccluded color which can also be controlled with a texture. The third input controls the distance parameter of Corona AO through the use of a texture or a bitmap, which can additionally be controlled using the Max Distance parameter. The following examples showcase how occlusion is applied depending on the Max Distance. Low values provide contact shadowing and amplify possible cavities on the mesh by also being faster to render, while higher values cover larger surfaces/areas but also render slower.
(Max distance set 1cm, 10cm, 100cm)
Calculation Mode and Color Spread
There are three different methods of controlling how occlusion is calculated:
(Calculate from: Outside, Both(outside+inside), Inside)
In the following example, a dirt map is being used as occlusion color, with the help of Color Spread the occluded color can replace the unoccluded one by increasing the amount from 0.0 to 1.0. This makes the effect of occlusion stronger and more apparent.
(Color Spread: Amount 0.0, Amount 1.0)
Usually, there is no need to change the default value. Increasing the number of Samples will provide a cleaner render (less noise) in a shorter time at the cost of other effects such as GI and anti-aliasing. Lower values render faster but look noisier.
Low values of this parameter result in uniform ray distribution around the geometry normals. Increasing this value causes the rays to focus on the occluded areas only. The following example showcases how ray concentration changes while Ray Directionality goes from 1.0 to the default 0.0.
(Ray Directionality: Ammount 1.0, Ammount 0.5, Ammount 0.0)
Direction offsets can also be used for the X, Y, and Z axes separately. This is useful when simulating wear from leaking substances or liquids and other directional effects.
(Direction offset: X-Axis 10.0, Y-Axis 10.0, Z-Axis 10.0 )
In cases where enhanced occlusion or dirt is needed in a scene for artistic purposes, the CTexmap render element along with Corona AO applied as its texmap can be used to create a layer that can be later blended in 3rd party 2D editors with the Beauty pass for further control. The following comparison showcases the differences between a raw beauty render and one with a blended Corona AO CTexmap :
(Beauty pass and CTexmap CoronaAO output, see comparison link above)
Similar to what was mentioned in the previous examples with Calculation Mode and Color Spread, weathering and damage can be introduced to various materials using textured occlusion. In such cases, a grunge mask is needed to act as an occlusion color. It is best used with a high color spread (around 1.0), and inside calculation mode, which can introduce cracks and weathering on tile grouts or small cavities/crevices. Comparison :
(Grunge mask/map used as occlusion color & AO distance, see comparison link above)
Карта Ambient Occlusion (AO) Corona
Примечание: Ради реализма и физической точности мы не рекомендуем использовать ambient occlusion для усиления затенения во всей сцене. Corona Renderer позаботится о затемнении вогнутых областей без каких-либо специальных настроек. Пример сцены с Corona AO и без него:
| |
Материал с CoronaAO | Материал без CoronaAO |
CoronaAO в редакторе материалов
Окклюдированный/неокклюдированный цвет и расстояние AO
Для Corona AO есть три входа, первые два управляют цветом окклюзии и цветом без окклюзии, который также можно контролировать с помощью текстуры. Третий вход управляет параметром расстояния Corona AO с помощью текстуры или растрового изображения, которое можно дополнительно контролировать с помощью параметра Max Distance. Следующие примеры демонстрируют, как применяется окклюзия в зависимости от параметра Max Distance. Низкие значения обеспечивают контактное затенение и усиливают возможные пустоты на сетке, а также ускоряют рендеринг, в то время как более высокие значения охватывают большие поверхности/области, но и рендеринг происходит медленнее.
Режим расчета и распределение цвета
Существует три различных метода управления расчетом окклюзии:
Режим «Outside» включен по умолчанию, и он создает окклюзию, глядя на объект с внешней стороны (поверхность, обращенная к лицу). Это похоже на освещение объекта светом окружающей среды.
Режим «Внутри» учитывает окклюзию при взгляде на объект изнутри (поверхность, обращенная назад).
Режим «Снаружи + Внутри» рассчитывает оба режима одновременно и объединяет их.
Режимы: Снаружи, Оба (снаружи + внутри), Внутри
В следующем примере в качестве цвета окклюзии используется карта грязи, с помощью Color Spread окклюзионный цвет можно заменить не окклюзионным, увеличив значение от 0,0 до 1,0. Это делает эффект окклюзии более сильным и очевидным.
Обычно нет необходимости изменять значение по умолчанию. Увеличение числа сэмплов обеспечит более чистый рендеринг (меньше шума) за более короткое время за счет других эффектов, таких как GI и сглаживание. При меньших значениях рендеринг происходит быстрее, но выглядит более шумным.
Низкие значения этого параметра приводят к равномерному распределению лучей вокруг нормалей геометрии. Увеличение этого значения приводит к тому, что лучи фокусируются только на окклюдированных областях. В следующем примере показано, как меняется концентрация лучей при изменении значения Ray Directionality с 1.0 до 0.0 по умолчанию.
Смещение направления можно также использовать отдельно для осей X, Y и Z. Это полезно при моделировании износа от протекающих веществ или жидкостей и других направленных эффектов.
В случаях, когда в художественных целях в сцене требуется усиленная окклюзия или грязь, элемент рендеринга CTexmap вместе с Corona AO, примененным в качестве его texmap, может быть использован для создания слоя, который впоследствии может быть смешан в 2D-редакторах сторонних производителей с помощью Beauty pass для дальнейшего контроля. Приведенное ниже сравнение демонстрирует различия между необработанным рендером beauty и рендером с наложенным Corona AO CTexmap:
Как и в предыдущих примерах с Calculation Mode и Color Spread, выветривание и повреждения могут быть привнесены в различные материалы с помощью текстурной окклюзии. В таких случаях необходима гранжевая маска, выполняющая роль цвета окклюзии. Лучше всего использовать ее с высоким цветовым охватом (около 1,0), а также в режиме расчета, который может создать трещины и выветривание на затирках для плитки или небольших полостях/трещинах. Сравнение:
Гранж-маска / карта, используемые в качестве цвета окклюзии и расстояния АО
Более подробно ознакомиться со всеми курсами образовательного проекта CGBandit вы можете здесь: https://www.cgbanditcourse.com
Перевод статьи осуществлен образовательным проектом CGBandit c официального сайта coronarenderer.
Текстурирование, или что нужно знать, чтобы стать Художником по поверхностям. Часть 3. PBR и материалы
В прошлой части тутора мы разобрали принцип работы масок, что такое «текстура», и что абсолютно для всего используются каналы — параметры пикселя. Теперь рассмотрим всеми любимый PBR И соберем текстуры для создания мокрого грязного асфальта.
В этом уроке я буду очень много ссылаться на другие туторы и источники информации, чтобы максимально сократить объем самого тутора. Большая часть ссылок будет предоставлена в начале тутора, поэтому, если вы не понимаете чего-то из этого тутора — перейдите по ссылкам и почитайте информацию там. Когда будете готовы — возвращайтесь к тутору и продолжайте познавать азы художника по поверхностям. Если какие-то ссылки будут не доступны, пжлста, сообщите мне об этом в личку или в комментариях. Я обязательно поправлю это недоразумение.
Также, если что-то совсем будет не понятно — очень прошу сообщить об этом, чтобы я мог раскрыть эту тему более подробно.
Часть 1. Пиксель здесь
Часть 2. Маски и текстуры здесь
Часть 3. PBR и Материалы — вы ее читаете.
Часть 4. Модели, нормали и развертка здесь.
Часть 5. Система материалов здесь.
Расшифровывается эта аббревиатура так: Physically Based Rendering. Что в переводе значит «Основанный на физике рендер».
Как мы все знаем, мы не могли бы видеть ни один объект, если бы объекты не отражали свет, который на них падает. Все это работает очень просто — луч света падает на стол, отражается и попадает вам на сетчатку глаза.
В зависимости от поверхности, от ее состояния (отражает ли оно, как зеркало, или имеет шероховатость, есть ли капли грязи / воды / кофе на поверхности) вам в глаз приходит уже видоизмененный луч (скажем так). Причем, луч — это не совсем правильно, так как уже известно, что свет — это еще и волна. Но это уже слишком глубоко для нас, и здесь я могу ошибаться.
А суть остается неизменной — то, как мы видим объекты, выстраивается из того, как свет отражается от поверхности. И стандарт PBR описывает то, какие параметры должны учитываться, чтобы свет выглядел максимально кинематографично.
Расписывать о том, по каким правилам конструируется свет, как он отражается и отражается ли вообще, я не стану. Про то, как работает на уровне физики свет есть куча статей:
Параметры. Или как настраивается PBR.
Мы рассмотрим PBR с точки зрения общей концепции и на уровне работы с каждым параметром отдельно через каналы пикселей.
Из прошлой части тутора помним, что PBR на самом деле создается через суммирование параметров (вдаваться в формулы не стоит). То есть, PBR состоит из набора параметров:
Что касается Normal Map, то ее техническая реализация (какие каналы за какой наклон отвечают) разнится от настроек рендера. Так, например, в Unreal Engine 4 Зеленый канал отвечает за отрицательное значение наклона по вертикали, а в Unity за положительное.
Более подробную информацию можно прочитать здесь.
Еще есть огромная всеобъемлющая статья о том, как запекать Normal Map и как с ней вообще работать, на сайте render.ru здесь.
Ссылка на форум обсуждения карт нормалей и высот (параметр Height) здесь.
И википедийное описание рельефного текстурирования здесь.
Теперь стоит отметить, что рендер (отображение), основанный на физике, имеет несколько различных реализаций. Все они схожи между собой и пользуются все теми же каналами пикселей для корректировки конечного результата. Обычно разделяют 2 типа реализации:
В первом типе учитываются параметры Color-Metal-Roughness, во втором — Diffuse-Specular-Glossiness.
Оба типа реализации используют одинаково 3 параметра — АО, Normal map, Height.
Причем, в современном PBR параметр Height (высота) смешивается и прячется в Normal Map. По факту, проще выразить неровность через одну карту Normal Map, чем высчитывать еще и глубину/высоту пикселя, или что-то еще в дополнительных каналах. Все проще, чем кажется, и мудрить с десятками параметров лучше не стоит.
Хотя при создании текстур в Substance Painter параметр Height и вынесен отдельно, при запекании текстур он вшивается в карту нормали (все еще можно его выделить в отдельный канал, если захотеть).
Итого, конечный результат картинки состоит из наложения параметров в одном пикселе:
Давайте рассмотрим теперь то, как это работает в Substance Painter. Для этого мы снова создаем новый проект с обычным плейном и стандартными настройками (о них я рассказывал во второй части туторов). И создадим новый слой заливки:
Теперь рассмотрим стандартную текстуру нормалей из набора Substance Painter «Niche Rectangle Top Wide», которая располагается под тегом Hard Surface:
Далее мы перенесем эту карту нормалей в параметр слоя Base Color (из предыдущего урока мы должны помнить, как это делать). Так выглядит карта нормалей, если воспринимать ее, как изображение (изображение выше). Но теперь удалим ее из параметра BaseColor (мы это сделали для общего ознакомления), нажав на крестик в параметре:
И перенесем ее в параметр Normal:
Ваш конечный результат сразу обновился. Теперь, если зажать Alt и ЛКМ — можно крутить камерой и смотреть на плейн под разными углами. Свет, отраженный от пикселей, начнет переливаться, создавая иллюзию глубины. Как будто на плейне действительно есть какие-то впадины и выпуклости. Все это заметно под углом от 90 до 140-150 градусов. И чем больше угол наклона, тем больше становится понятно, что это расчет видеокарты, который определяет, как должен отражать свет каждый пиксель, чтобы создавать эту иллюзию. В качестве исходных значений мы передаем в видеокарту 3 параметра в виде каналов пикселя (иначе говоря, текстуру Normal map):
Теперь давайте извращаться. Удалим из параметра Normal эту карту и укажем ее в канале Metallic. Канал у Metallic один, а карта нормалей имеет 3 канала, соответственно, вставляя карту нормалей в этот параметр, Substance Painter обрежет 2 лишних канала (предполагаю, что GB) и оставит только один для расчетов:
В конечном результате видно теперь, что больше нет никаких выпуклостей и впадин, но сама поверхность стала походить на какую-то металлическую плату. Вы так же можете посмотреть, как будет выглядеть параметр Metallic один, без остальных параметров (BaseColor и прочих), переключив режим отображения на 1 канал Metallic (если вы ничего не меняли, то во вьюпорте справа сверху есть возможность переключения отображения):
Выбираем металлик и получаем следующий результат:
Как видим, это один канал в градациях серого, который определяет, какие пиксели должны выглядеть как металл, какие — как нечто среднее, а какие — не металл. 0 — не металлический. 1 — металлический.
Аналогично и с каналом Roughness — любая текстура подойдет для работы с ним. В зависит от того, какой конечный результат вам потребуется. Можете попробовать самостоятельно воткнуть в канал Roughness любую доступную вам текстуру и посмотреть на результат.
Сложные материалы
Под словом «материал», обычно подразумевается коллекция готовых параметров, совокупность которых дает кинематографичный результат — материал (иначе говоря, фактуру, поверхность).
Возьмем, к примеру, вот это кожаное кресло:
Визуально, кресло состоит из 3 материалов:
Подведем промежуточный итог:
Практика
А что нам нужно для того, чтобы собрать мокрый грязный асфальт со следами шин?
Для начала нам нужно определиться с количеством материалов, которые будут использоваться в нашем туторе:
Вот здесь (Ссылка) можно скачать текстуры для материалов, которые мы будем использовать в нашей практике.
Наша цель сейчас не создавать очень качественные текстуры, а познакомиться с тем, как можно с помощью параметров PBR и масок создать нечто интересное. Поэтому на данном этапе мы не будем пользоваться генераторами масок или грязи, а все будем делать вручную, чтобы понять суть. Когда вы понимаете суть, основу всего этого, вы сможете пользоваться генераторами куда более качественно, чем просто начнете их выкручивать в надежде получить идеальную маску / материал.
Если вы уже посмотрели файлы, то, наверное, обратили внимание на маску для шин. Она подготовлена отдельно, так как я не смогу ее сгенерировать на ходу в Substance Painter, поэтому я воспользовался рисунком шин, найденным в интернете и подготовил его через Photoshop для работы в Substance Painter:
Теперь создадим новый проект и добавим все наши файлы в него. Для этого мы выбираем стандартные настройки, но теперь нам нужно при создании проекта еще указать наши текстурные карты:
В проекте создадим 3 папки под каждый материал и проименуем их, чтобы не путаться:
В нашем случае очень важна иерархия папок (да и не только в нашем, а всегда важна). Иерархия определяет уровень материала, иначе говоря — что на чем лежит. Асфальт в нашем примере — это дно. На нем остаются следы от шин. А вот грязь может быть и на следах шин, и на асфальте. Поэтому грязь будет выше всех.
Теперь давайте сразу спрячем все, что должно быть спрятано, и оставим только асфальт. То есть, создадим черные маски на папках Rubber и Dirt:
Теперь создадим в каждой папке по 1-ому слою. А точнее, создадим слои и распределим их в папки. Не забываем о нейминге, чтобы потом не путаться (не смотря на то, что визуально не совсем понятно, что слои в папках — поверьте, они в папках):
Все новые слои имеют базовые средние параметры. Поэтому Base Color серый, нормаль не отображает выпуклостей, а Metallic и Roughness не создают впечатления какого-либо материала.
И сейчас нам нужно это исправить, указав в каждый параметр соответствующую текстуру (на примере асфальта):
Ваша задача сейчас распределить все текстуры материалов в нужные параметры слоев. После того, как вы все это проделаете, назначим маску для резины и создадим эффект следов. Так как у нас уже есть черная маска у папки, то нам нужно просто подключить файл со следами колесиков к этой маске. Для этого кликаем ПКМ по маске и выбираем Add Fill:
И в параметрах GrayScale указываем маску:
В результате на асфальте появятся следы резины, но их будет достаточно сложно разглядеть, так как это все таки PBR и кинематографичность (. ). Чтобы их увидеть, нужно Plane повернуть под определенным углом:
Сейчас эти два слоя (асфальт и резина) находятся на одном уровне. Но мы-то знаем, что резина находится НА асфальте, а значит, слой с резиной должен быть физически выше. И вот теперь мы воспользуемся тем самым параметром Height.
Найдите его в параметрах слоя Rubber и выкрутите его на максимум, чтобы прочувствовать, как он работает. Покрутите камерой, чтобы увидеть, как свет начал обрабатывать пиксели, которые вы настроили своими руками. Прочувствуйте свою мощь! =)
Ну а теперь выровняйте параметр на 0.1, чтобы это было не так явно и более правдоподобно:
Теперь настроим грязь. Исходя из реальности, можно предположить, что грязь должна забиваться в трещины асфальта в первую очередь. Но у нас нет маски, чтобы мы могли проявить слой грязи в трещинах. Однако решение есть — мы можем взять BaseColor асфальта и на его основе сделать маску для грязи.
Как это работает? Если посмотреть на BaseColor асфальта, то можно обратить внимание, что чем темнее пиксель, тем больше он похож на трещину. То есть, в этом изображении все темное — это трещины, а все светлое — это поверхность. И если мы хотим воспользоваться изображением, как маской, то нам достаточно было бы инвертировать цвета (темное сделать светлым и наоборот) пикселей, и у нас получилась маска для грязи.
Для этого отключим отображение слоя с асфальтом (нажав на глазик у папки с асфальтом), чтобы было проще воспринимать то, что мы делаем.
Далее, укажем, что в маске грязи должен быть файл и присоединим к ней файл Asphalt_BaseColor:
Как я и писал выше — светлым был асфальт, а темным — трещины. Соответственно, на больших поверхностях начала проявляться грязь, а в трещинах доминирует базовый серый цвет (базовые параметры / фон).
Теперь наша задача заставить эту текстуру восприниматься иначе — инвертировать цвета и усилить их, чтобы маска проявила грязь в трещинах. Проще всего это сделать с помощью дополнительного эффекта «Уровни» (Levels). Добавляем к маске дополнительный фильтр «Levels» так же, как мы добавляли Fill (ПКМ — Add Levels). И выкручиваем параметры примерно, как на картинке ниже:
И нажимаем на кнопку ниже «Invert» для инвертирования уровней интенсивности канала:
Теперь грязь располагается именно там, где нам нужно — в трещинах асфальта:
Включаем асфальт и присматриваемся к нашим трудам:
Но это слишком просто. Поэтому, давайте теперь добавим на наш асфальт оранжевую разметку. Для этого нам необходимо будет:
Вы так же можете отрегулировать параметры Metallic и Roughness на свой вкус, чтобы создать реалистичную краску. Я не стал этого делать, чтобы сократить время тутора.
Теперь, вспоминая правила иерархии слоев, расположим папку с дорожной линией между асфальтом и резиной:
Настало время ручного рисования. Выделите маску папки RoadLine и начертите на плейне полосу разметки. У меня получился примерно такой результат:
Теперь стоит добавить еще одну маску на сам слой с краской, чтобы создать ощущение отвалившейся краски. Для этого мы не будем создавать папку, а создадим маску прямо на слое и добавим любую стандартную маску Substance Painter. Чтобы сделать это — добавьте маску, а потом добавьте заливку (ПКМ по маске и Add Fill). В заливке укажите Текстуру Dirt 4, которая находится под тегом Procedural:
И смотрим результат:
Не забываем, что у слоя с краской нужно указать высоту. Предлагаю указать 0.05 — среднее между резиной и асфальтом.
Будьте внимательны, так как для этого нужно выделить именно слой, а не маску. Указать вручную значение можно, кликнув по цифре справа сверху от ползунка.
Ну и какой асфальт без воды?
Для этого создайте самостоятельно папку вместе со слоем. Пока НЕ добавляйте никаких масок.
Установите папку в иерархии на самый верх. Ведь вода же сверху, правильно? У слоя выкрутите на максимум Metallic и на минимум Roughness. Далее укажите высоту воды, равную 0.15.
И теперь отключите канал Color, нажав на кнопку, выделенную синей рамочкой:
Что произошло? Произошло смешение все нижних слоев согласно маскам и слоя с водой. Но у воды теперь нет канала цвета, а значит, она не может красить в нужные ей цвета пиксели. За то все другие каналы влияют на пиксели текстуры, и асфальт стал максимально мокрым и неприятным, как будто и вовсе не асфальт =)
Теперь домашнее задание: наложите маски так, чтобы асфальт был не полностью мокрым, а с небольшими лужами. Помните, что лужи не имеют неровностей на поверхности — подумайте, как нужно смешать слои так, чтобы лужи были гладкими. И что для этого нужно еще сделать? Я уверен, вы справитесь =)
В этом туторе мы разобрали то, как создавать текстуры. В целом, правильно применяя параметры, вы уже можете начинать текстурировать и даже смело можете назвать себя джуниор-художником по текстурам.
Мы узнали, как работает PBR.
Параметры в PBR необязательно должны быть уникальны. Это все еще обычные параметры, которые мы можем указывать через каналы пикселей.
Одни и те же текстуры мы можем использовать по разному. Это дает нам преимущество — нам не нужно загружать память лишними файлами с большим количеством пикселей, а достаточно загрузить один файл и подсказать программе, как его рассчитать.
Мы познакомились с материалами и тем, как они собираются. Теперь вы знаете, что не обязательно быть супер-крутым фотошоп-мастером, а достаточно найти готовые параметры, чтобы программа смогла из них представить корректно материал.
В следующих частях мы затронем такие темы, как развертка, плотность текселя (и что такое тексель), и подойдем, наконец, к самому интересному — созданию собственных шейдеров в UE4.
Программы Quixel и Substance Painter
Я всегда рекомендую новичкам, которые занимаются именно созданием текстур из материалов (не самих материалов), начать работать с Quixel. Поскольку эта программа умеет уже сотню готовых пресетов, которые очень легко контролируются и настраиваются, а через маски можно добиваться того же результата, что и у нас на практике через Substance Painter.
Что касается Substance Painter, то его сила начинает проявляться, когда в работу включается третья программа Substance Designer. Designer позволяет создавать свои материалы путем генерации нужных нам поверхностей. Дизайнер крут тем, что вы можете создать «умные материалы», которые будут иметь настройки внутренних масок, которые будут контролировать количество и качество внутренних материалов. То есть, «умные материалы» в данном случае — это контейнер, который содержит в себе несколько материалов и предустановленные маски, которые регулируются формулами и алгоритмами, которые художник прописывает в Designer.
Потом этот контейнер экспортируется в Painter, где происходит его тонкая настройка. Например, наш мокрый асфальт мы создали в Painter. Но могли бы собрать в Designer и подключить кучу дополнительных настроек, которые бы позволили нам изменять результат налету, в одном месте, а не переключаться среди кучи масок, как в Painter.
О PBR и переводе этой аббревиатуры
Очень часто PBR переводят, как физически корректный рендер. Я же считаю, что здесь важен точный перевод, потому что переводы типа «Физически корректный» в корне не верны, так как рендер в данном случае именно основан на физике, но не обязан быть корректным по отношению к физике. Вы можете сделать металл = 1, и шероховатость, равную 1, и включить дополнительно кучу других параметров, и это уже будет не корректный с точки зрения физики материал, а основанный когда-то на нем и переделанный вами в свой собственный набор параметров. То есть, создавая материалы на основе PBR, вы можете абсолютно полностью игнорировать законы физики и создать материал, который будет уникальным в своем роде.
Например, рисованные в своей стилистике камни. Как физически корректно мы должны отображать выдуманный материал, который не существует в природе?