Запекание в Marmoset Toolbag. Типы карт
Вторая часть из серии статей о запекании в Marmoset Toolbag. В этой статье говорится о картах, которые вы можете создавать, а также предоставляются примеры и полезная информация для каждого из типов выводимых изображений.
Оглавление:
Категория Surface
Карта Normals
Вывод Normals запекает карту нормалей касательного пространства ( tangent space normal map ). Существуют опции для отзеркаливания ( flip ) красного (X), зеленого (Y) и синего (Z) каналов, а также опция для переключения Размытия ( dithering ).
Карта Normals (Object)
Вывод типа Normals (Object) запекает карту нормалей объектного пространства ( object space normal map ). При создании ассетов для игр и фильмов, карты данного типа не используются напрямую, но они являются отличным источником для создания масок направленности ( directional masks ) для ваших текстур. Например, для добавления слоя пыли на верхнюю часть вашего объекта.
Карта Height
Карта Position
Карта Curvature
Вывод Curvature запекает карту выпуклостей ( convexity map ) и карту вогнутости ( concavity map ). По умолчанию, карта кривизны запекается в черно-белом стиле, где вогнутые детали изображены более светлыми, а выпуклые детали более темными. Карта кривизны полезна при создании масок для разного рода царапин, грязи находящейся в углублениях и других эффектов.
Карта Concavity
Карта Convexity
Карта Thickness
Карта Bent Normals
Карта Bent Normals (Object)
Вывод Bent Normals (Object) запекает карту типа Bent Normals в объектном, а не касательном пространстве.
Категория Lighting
Карта Ambient Occlusion
Вывод Ambient Occlusion ( AO ) запекает окклюзию освещения из HP источника. AO можно использовать в множестве шейдеров для добавления теней окружения, или как источник для генерации масок используемых при текстурировании. Карта AO может быть особенно полезна при создании эффекта пыли или грязи.
Параметр Ray Count определяет качество AO. Чем больше лучей используется тем более мягкой и гладкой будет карта AO. Но стоит отметить, что это замедляет процесс запекания. По умолчанию, используется значение 256 которое соответствует среднему качеству, значения от 512+ будут выдавать высокое качество, а значения ниже 256 можно использовать при тестовых запеканиях.
Параметр Floor Occlusion добавляет дополнительную окклюзию области, обращенной к низу. Floor occlusion может помочь вам в добавлении направленного AO. Что обычно наиболее полезно для статических объектов.
Опция Ignore Groups позволяет отбрасывать тень AO между разными группами запекания. Это помогает обособить разные части сложных объектов. Если у вас есть определенные элементы, которые можно убирать или они буду анимированными — например, прицел или магазин у автомата — вы можете переместить эти группы запекания в сторону, так что они не получат группу в группе AO.
Опция Dither добавляет небольшое количество шума, который будет бороться с артефактами в виде полос. Когда опция Dither активна, для получения хороших результатов запекания, может использоваться меньшее количество лучей.
Карта Diffuse Lighting
Вывод Diffuse Lighting запекает освещение и тени от Sky Light и направленных источников света ( direct lights ) в сцене. Свойства поверхности, определяемые материалами применяются к high poly объектам.
Карта Specular Lighting
Вывод Specular Lighting запекает зеркальные отражения ( specular reflections ) и тени от Sky Light и направленных источников света в сцене. Зеркально отраженный свет — это эффект, зависящий от положения камеры, и он не рендерится для задней части вашей модели.
Карта Complete Lighting
Вывод Complete Lighting запекает цвет материала, диффузную составляющую освещения, тени и зеркальные отражения из вашей сцены. Свойства поверхности, определяемые материалами применяются к high poly объектам.
Категория ID’s & Masks
Карта Material ID
Вывод Material ID запекает уникальный цвет для каждого материала, назначенного на HP объект. Цвет применяется автоматически, а сами цвета выбираются таким образом, чтобы максимально отличаться от других. Если вам требуются конкретные ID цвета, вы можете применить их непосредственно к карте Albedo, в материале, который используется HP объектом. Затем, просто запеките карту Albedo.
Карта Group ID
Вывод Group ID запекает уникальный цвет для каждой группы материалов ( material group ).
Карта Object ID
Вывод Object ID запекает уникальный цвет для каждого объекта с определенным материалом.
Карта UV ID
Вывод UV ID запекает уникальный цвет для каждого UV островка.
Карта Wireframe
Вывод Wireframe запекает карту, которая представляет UV развёртку low poly объекта.
Карта Alpha
Вывод Alpha запекает карту отверстий, имеющихся на high poly меше.
Категория Material
Карта Albedo
Вывод Albedo запекает значение альбедо (это работает с простыми значениями цвета, входным изображением ( image input ), или обоими вариантами) из материалов HP объекта.
Карта Specular
Вывод Specular запекает значение Specular (это работает с простыми значениями цвета, входным изображением или обоими вариантами) из материалов HP объекта.
Карта Gloss
Вывод Gloss запекает значение глянца ( gloss value ). Это работает с простыми значениями цвета, входным изображением или обоими вариантами) из материалов HP объекта.
Карта Albedo (для Metalness подхода)
Roughness Map
Вывод Roughness запекает значение шероховатости ( roughness value ) взятое из материалаов HP объекта.
Карта Metalness
Карта Vertex Color
Изображение представлено Xavier Coelho-Kostolny
Вывод Vertex Color запекает цвета вершин ( vertex color ) или данные типа polypaint взятые из zBrush в изображение.
Карта Transparency
Вывод Transparency запекает карту основываясь на значениях прозрачности ( transparency ) заданных в материалах HP объекта.
Карта Emissive
Вывод Emissive запекает карту основываясь на значениях излучения/эмиссии ( emissive values ) заданных в материалах high poly объекта.
В следующей статье под названием «Запекание в Marmoset Toolbag. Основы запекания» расскажем об основах переноса нормалей и о том, как устранять типичные проблемы.
Научиться работать в Marmoset Toolbag под руководством опытного ментора вы сможете, выбрав блок «Retopology & UV & Baking» курса «ZBrush. Создание 3D-персонажа». Вы можете выбрать отдельные блоки, или пройти курс полностью, изучив все этапы создания 3D-персонажа — начиная с блокинга и до финальной визуализации.
Можете просто и доходчиво объяснить, что такое UV, карты нормалей, запекание?
Пожалуйста, максимально развёрнуто и понятно))))))
Простой 5 комментариев
p. s. Я отблагодарю вас, когда стану миллиардером.
Тебе надо разобраться с основными понятиями комп. графики. (модель\меш, полигон, вертекс, edge, топология, ретопология, нормали, RGBA, каналы, маски, альфа и др)
А вот когда с ними разберешься, можно посмотреть в сторону PBR (Physically-Based Rendering)(скорее всего контент «под него» будешь пилить)
«UV-развёртку можно «разукрасить», а затем наложить на модель.»
Всё не так, нужно разукрасить не UV-развёртку, а подготовить набор текстурных карт для наложения на модель.
Никому ведь модель только с одной диффузной текстурой не нужна
UV-map это проекция всех поверхностей 3d модели на плоскость (ведь сами текстуры то плоские)
Вспомни бумажные модели (например куба)
Вот такая развертка нужна чтобы построить куб из бумаги
А чтобы получить UV-развёртку куба, нужно не собрать куб, а разрезать и развернуть.
Normal Map Baking
Вот есть у тебя модель ботинка (полигонов очень много) и тебе нужно перенести детализацию подошвы с этой самой модели ботинка, на более простую модель ботинка. (кто у персонажа подошвы ботинок разглядывает? Там ведь много полигонов не нужно)
Ты запекаешь карту нормалей (Normal Map) и на ней создается изображение подошвы. (Информация перешла с высокополигональной модели на карту нормалей) затем ты накладываешь её на простую модель ботинка и вуаля!
На почти плоской подошве появился псевдо рельеф
Освещение в движке реагирует на эту самую Normal Map и создает видимость рельефа, для наблюдателя. Смотришь и кажется что подошва богата на детали!
И так поступают со всей моделью.
«В одних источниках эти названия карт на английском, в других на русском» (там всё намного веселей!)
Введи в поисковик «Texture map terminology confusion»
Ищи статьи на русском где используется не перевод, а написание английских слов русскими буквами или просто где названия карт не переводятся.
Ни в коем случае не русифицируй свои программы (так ты всё только испортишь)
В зависимости от модели, от игрового движка или системы рендеринга тебе будут нужны разные «наборы» текстурных карт.
В движках есть редактор материалов и он может намекнуть какие текстурки он «кушает»
(именно в этом редакторе там где написано Bump map пихают Normal map)
Текстурных карт очень много и про остальные нет смысла писать. (Про PBR тем более)
p.s
Помни о правиле 80\20 (80% практика, 20% теория) если наоборот значит всё будет плохо. Утонешь в теории (ты не знаешь как к ней правильно подступиться)
Наши ответы тебе особо не помогут.
Пока сам не начнешь, не окунешься в работу. Не поймешь какие карты тебе нужны, и что ты вообще собрался делать.
Можете просто и доходчиво объяснить, что такое UV, карты нормалей, запекание?
Пожалуйста, максимально развёрнуто и понятно))))))
Простой 5 комментариев
p. s. Я отблагодарю вас, когда стану миллиардером.
Тебе надо разобраться с основными понятиями комп. графики. (модель\меш, полигон, вертекс, edge, топология, ретопология, нормали, RGBA, каналы, маски, альфа и др)
А вот когда с ними разберешься, можно посмотреть в сторону PBR (Physically-Based Rendering)(скорее всего контент «под него» будешь пилить)
«UV-развёртку можно «разукрасить», а затем наложить на модель.»
Всё не так, нужно разукрасить не UV-развёртку, а подготовить набор текстурных карт для наложения на модель.
Никому ведь модель только с одной диффузной текстурой не нужна
UV-map это проекция всех поверхностей 3d модели на плоскость (ведь сами текстуры то плоские)
Вспомни бумажные модели (например куба)
Вот такая развертка нужна чтобы построить куб из бумаги
А чтобы получить UV-развёртку куба, нужно не собрать куб, а разрезать и развернуть.
Normal Map Baking
Вот есть у тебя модель ботинка (полигонов очень много) и тебе нужно перенести детализацию подошвы с этой самой модели ботинка, на более простую модель ботинка. (кто у персонажа подошвы ботинок разглядывает? Там ведь много полигонов не нужно)
Ты запекаешь карту нормалей (Normal Map) и на ней создается изображение подошвы. (Информация перешла с высокополигональной модели на карту нормалей) затем ты накладываешь её на простую модель ботинка и вуаля!
На почти плоской подошве появился псевдо рельеф
Освещение в движке реагирует на эту самую Normal Map и создает видимость рельефа, для наблюдателя. Смотришь и кажется что подошва богата на детали!
И так поступают со всей моделью.
«В одних источниках эти названия карт на английском, в других на русском» (там всё намного веселей!)
Введи в поисковик «Texture map terminology confusion»
Ищи статьи на русском где используется не перевод, а написание английских слов русскими буквами или просто где названия карт не переводятся.
Ни в коем случае не русифицируй свои программы (так ты всё только испортишь)
В зависимости от модели, от игрового движка или системы рендеринга тебе будут нужны разные «наборы» текстурных карт.
В движках есть редактор материалов и он может намекнуть какие текстурки он «кушает»
(именно в этом редакторе там где написано Bump map пихают Normal map)
Текстурных карт очень много и про остальные нет смысла писать. (Про PBR тем более)
p.s
Помни о правиле 80\20 (80% практика, 20% теория) если наоборот значит всё будет плохо. Утонешь в теории (ты не знаешь как к ней правильно подступиться)
Наши ответы тебе особо не помогут.
Пока сам не начнешь, не окунешься в работу. Не поймешь какие карты тебе нужны, и что ты вообще собрался делать.
Что такое PBR? Часть V
Ранее в блоге.
Часть I — кратко затронул историю становления термина PBR и вывел главный тезис. PBR это не шейдер и не текстура или какой-то отдельно взятый рендер движок — это в первую очередь принципы и основы современной компьютерной графики, кто-то называет это философией.
Часть II — была посвящена такому понятию как PBS — Физически корректный шейдинг, как неотделимая часть физически корректного рендеринга. Кратко рассмотрел, что такое BRDF функции.
Часть III Реализация GTR (GGX) функции в V-ray. Альтернативные, физически корректные, BRDF модели. Аналитические BRDF модели (Merl библиотека). Коммерческие BRDF решения — VRscans (VrayScanedMtl)
Часть IV.I — PBR шейдинг в Дисней. Реализация в V-ray
Часть IV.II — PBR шейдинг в Дисней. Реализация в V-ray
Часть IV.III — PBR шейдинг в Дисней. Реализация в V-ray
Часть V — PBR текстуры (Заключительная часть цикла)
Финал
Финальная статья цикла, будет посвящена PBR текстурам. Сразу определю — PBR или «не PBR» текстур не бывает. Бывают текстуры отвечающие или не отвечающие PBR принципам.
Изначально, была идея написать статью исключительно о PBR текстурах. Она возникла после того, как я прикупил сборник как бы PBR текстур от CGAxis — не покупайте и даже не качайте с торентов этот сборник, если вам действительно нужны PBR текстуры.
Про этот сборник с большой натяжкой можно сказать, что его содержимое отвечает всем PBR принципам. По факту этот сборник откровенный «шлак», на который, в маркетинговых целях, налепили трендовую аббревиатуру «PBR».
PBR текстуры
Любой шейдер способен описать большинство свойств поверхности чистой математикой через BxDF функции. Но не всегда поверхность объекта имеет однородный диффузный или зеркальный цвет, не всегда объект может иметь ровную поверхность. В таких ситуациях на помощь приходят растровые текстуры, через которые можно усложнять шейдер, делая его визуально более реалистичным. Согласитесь что локальным цветом или процедурной текстурой не всегда можно получить удовлетворительный результат.
Через растровую текстуру можно задать не только сложный диффузный цвет поверхности, но и «запечь» некоторые её свойства. Использование текстур, в которых «запечены» свойства материала, пришло в массы из игровой индустрии. По сложившейся практике пользователю, предлагается три базовые текстурные карты — Diffuse, Specular\Metalness и Glossy\Roughness, по ситуации, подключают дополнительные технические карты — Opacity, Normal, Height, Ambient occlusion, Cavity, Emissive maps. Классический сет это четыре текстуры: Diffuse, Specular\Metalness и Glossy\Roughness, Normal
Важным недостатком так называемых «PBR текстур» является отсутствие гибкости. Так например — карта Glossy\Roughness предлагает мне уже зафиксированные значение шероховатости поверхности. А что если мне нужно сделать больше глянца, как быть? Понятно что мне, как пользователю с опытом, не составляет труда «подкрутить» все эти карты до нужного результата, а как быть менее опытным коллегам? Поэтому мне не особо понятен тот хайп, который был в свое время поднят вокруг PBR текстур.
PBR текстуры для меня, в первую очередь, это решение все же узкоспециальное, для таких направлений как VR, реал-тайм и игровые движки, где нужно максимально упростить и унифицировать шейдерные вычисления, когда текстуры запекаются комплексно для всей модели сразу. В этом контексте — PBR текстуры это простое и универсальное решение, своего рода кроссплатформенный набор «Сделай сам».
3d модель, шейдер которой сделан с соблюдением PBR принципов, будет рендериться, в любой современной рендер системе, без необходимости конвертировать материалы или что либо в них перенастраивать. Особенно если часть свойств шейдера, было зафиксировано (запечено) в текстурах, о которых я говорил выше. Это важное и ценное качество для 3d модели, особенно когда вы продаете её на стоке [Посмотреть стрим о 3D стоках]. Покупатель будет понимать, что купив ваш продукт, он получит универсальное шейдерное решение, которое будет давать одинаковый результат при рендеринге в независимости от используемой рендер системы.
Есть два шейдерных решения так или иначе поддерживаемых в большинстве рендер движков — Specular workflow и Metalness workflow. Эти решения отличаются набором необходимых текстур и соответственно слотами размещения. Итоговая разница не существенна, но заметна в ряде деталей. Забегая вперед сразу скажу, что Metalness workflow более удобен, более экономичен в расходовании видеопамяти (актуально для игровых движков), прост и поэтому стал теперь доминирующим рабочим пространством.
Specular workflow
Как сказал ранее, практически все свойства шейдеров, можно запечь в текстуру, но в этом нет необходимости, так как большинстве рендер систем многие свойства, задаются программно. Так, например, нет необходимости запекать индекс рефракции (IOR), поскольку его можно задать напрямую в шейдере. Поэтому запекается, только ограниченный, комплект текстур.
Для Specular workflow используется базовый сет из следующих растровых карт
Metalness workflow
Для Metalness workflow используется базовый сет из следующих растровых карт
В чем разница этих решений?
Очевидно, что некоторые текстуры подключаются к разным слотам шейдера и в принципе отличаются по содержанию. Разница между Glossy\Roughness картами небольшая: Glossy map это инвертированная Roughness map, переключение между режимами Glossy\Roughness поддерживается не во всех движках, но в любом случае адаптировать эту карту под нужный режим не составит труда при помощи Photoshop. Карта нормалей (Normal Map) не меняется в обоих решениях. Принципиальное отличие только в двух текстурах Diffuse и Specular\Metalness.
Для рабочего процесса Specular workflow — диффузная карта «закрашивается» черным в тех местах, где поверхность должна проявлять «металличность», там же, где поверхность является диэлектриком, задается необходимый цвет. Через текстурную карту Specular задается степень зеркальности объекта для диэлектрических участков через оттенок серого, а для металлических участков через необходимый цвет металла.
У рабочего процесса Metalness workflow— диффузная карта полностью цветная, как для металлических участков шейдера, так и на участках с диэлектрическими свойствами поверхности. Через черно-белую текстурную карту Metalness мы «сообщаем» рендер движку, где метал, где диэлектрик. По сути карта Metalness выполняет функции маски, а вся необходимая информация «снимается» с карты Diffuse.
Считается что Metalness workflow экономичней в контексте расходования видеопамяти, так как черно белая маска практически ничего «не весит». Я сравнил два сета и действительно сет для Metalness workflow на 20% легче сета Specular workflow.
Недостатки и тонкости работы с Metalness и Specular workflow
Я не буду перетряхивать все рендер движки, на предмет того, как у них организовано подключение так называемых PBR текстур и ограничусь только V-ray.
Классическая схема подключения текстур в Specular workflow
Недостатком этой схемы является то, что она предполагает полное отключение опции IOR, что фактически делает это решение физически некорректным, но…
Некоторые ресурсы предлагают адаптированный к V-ray сет для Specular workflow. В этом сете есть дополнительная IOR карта, которую нужно подключать к слоту Fresnel IOR и так же немного измененная по цвету Specular карта. Такое решение делает шейдер более корректным и отвечающим принципам PBR.
Хотя визуальная разница между этими двумя решениями будет едва ли заметна неискушенному пользователю.
Для подключения текстурных карт в режиме Metalness workflow, необходимо на вкладке BRDF переключиться в режим Use Roughness
Здесь тоже, всё не «слава богу», но получше чем у Specular workflow. Работа со множителем IOR в этом режиме возможна и я могу установить необходимое по ситуации значение, без использования дополнительных текстурных карт. Но, как мне «посчастливилось» выяснить, комплексное значение IOR у металлов значительно ниже чем у диэлектриков. И в примере который я сейчас разбираю, так же есть необходимость подключения дополнительной карты с разными значениями IOR для металла и для окислившейся поверхности (диэлектрика).
В связи с этим фактом, что у металлов есть комплексное значение IOR, которое хоть и не значительно, но влияет на результат, для Вас готовится отдельная статья по металлам, где я обновлю свое мнение и добавлю новую информацию по настройке металлов в V-Ray Next.
В статье Understanding metalness вы можете найти табличку, скриншот которой представлен ниже, Vlado (папа V-ray) вычислил комплексные значения IOR для ряда металлов которые можно\нужно использовать в совместно со включенной опцией Metalness.
Эти значения, в большинстве случаев, чуть больше единицы. Но как раз из-за этого что IOR метала значительно ниже значений у неметаллов, то имеет смысл заморочиться над этой разницей, для достижения максимальной реалистичности и физической корректности шейдинга в режиме Metalness workflow.
Поскольку карта с необходимым значением IOR, к этому сету не прилагалась, я сделал кастомное решение используя ноду Mix и карту Metalness в качестве маски для разных значений IOR. Значения для IOR я поставил следующие:
IOR 1.05 = 0.9524 RGB для металлической поверхности (среднее значение из таблицы Vlado)
IOR 1.5 = 0.6666 RGB для окиси на поверхности металла (диэлектрик)
После всех тестов, я отдаю свое предпочтение схеме — Metalness workflow + IOR map, так как она наиболее близка к физически корректном решению. Но и другие схемы вполне рабочие, разница будет заметна только на мелких деталях, да и то, только на композитных материалах, которые я выбрал для обзора, где одновременно используется два типа материала — метал и диэлектрик. В простых, однородных, материалах эти нюансы будут менее всего заметны.
Так же сделал рендеры с контрастной световой схемой, что бы сравнить все четыре схемы с оригинальным превью, эксперимент не удался…
Тут сложно дать однозначный и объективный комментарий и сделать какое то сравнение, так как у меня нет возможности задействовать HDRi карту, которая использовалось для рендеринга оригинального превью у шейдера. Так что «ноу комментс…» Оригинал поярче, но не факт что у превью не «подкручивали» цветность.
Что еще нужно знать при работе с так называемым PBR текстурами?
Та информация, которую я прояснил, в процессе работы с материалами к этой статье, стала откровением… Всю свою сознательную трудовую жизнь, когда уже многие начали работать в гамме 2.2 и я в том числе, все текстуры по умолчанию подгружались в этой гамме. Единственной картой, которая нуждалась в корректировке была карта нормалей (Normal Map) её нужно было подгружать в линейной гамме — 1.0
Когда я более подробно стал изучать PBR тему и работу с текстурами в частности, я был удивлен, когда узнал что и остальные текстуры, кроме Specular и Diffuse, необходимо было подгружать в линейной гамме.
Почему так?
Это связано с тем что все черно-белые текстуры, если грубо, участвуют в математических вычислениях. Так например в карте Metlaness, черный пиксель означает 0, белый пиксель означает 1. Математика это линейные вычисления, поэтому шейдерные вычисления так же происходят в линейном пространстве и только два шейдерных компонента — Specular и Diffuse должны быть в представлены гамме 2.2 поскольку это визуальные составляющие и их обработка происходит в нелинейном пространстве.
Specular workflows
Metalness workflow
Это правило, распространяется и на все другие шейдерные компоненты, которые реализуются через черно-белые растровые текстуры — они все должны подгружаться в гамме 1.0 не зависимо от того используете ли вы текстуры из PBR сборников или делаете что-то свое.
PS Надеюсь что мои изыскания были не напрасны и принесут кому то пользу… во всяком случае у меня, в процессе работы над этим материалом, появилось много новых решений и вообще тема шейдинга стала достаточно прозрачной и понятной. Буду рад фидбеку и пожеланиям. Возможно я что то пропустил, дайте знать, и я просто дополню или уточню эти статьи необходимой информацией.
Яндекс.Дзен | ВКонтакте | YouTube | Instagram









































