Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Документация для продвинутых пользователей
                Физически обоснованный рендеринг - Часть первая

Физически обоснованный рендеринг — Часть первая

Опубликованно: 05.06.2017, 23:03
Последняя редакция, Andry: 31.08.2017 14:51

Я обратил внимание на Физически Обоснованный Рендеринг(Physically Based Rendering) (далее PBR), спустя несколько недель после того как разные круты парни начали говорить об этом. Я прочитал почти все материалы об этом и, в конце концов, как-то все же понял механики концепции.

Ни одна из статей, которые я читала, не давала мне прозрения, но понимание приходило мало-помалу, буквально по 10 раз читали некоторые статьи.

Цель этой серии публикаций — сначала разобраться с концепцией PBR с точки зрения художника (легкая часть: D), а затем объяснить физические концепции, стоящие за ней, и то, что вы должны понимать как разработчик.

Настоящая статья направлена ​​на то, чтобы разъяснить PBR, так как если бы я объяснил это своей матери. Вам не нужна докторская степень в теориях рендеринга изображений, и вам не нужно быть гением, чтобы понять, что произойдет.

Там много документов, с множеством сложных слов и уравнений, которые предполагают солидное знание об изображениях, освещении, затенении и.т.д. …

Я не буду писать это здесь.

Конечно, я хотел бы, чтобы это было настолько точным, насколько это возможно, поэтому, если у вас есть дополнительная информация или если объяснения не ясны, не стесняйтесь обращайтесь.

Я художник, я хочу знать, что такое PBR:

Итак, вы художник и имеете некоторый опыт в создании игровых ресурсов для игр. Наиболее часто используемой моделью для описания материала является модель отражения Фонга (от Bui Tuong Phong, умного парня, который умер очень молодым).

Эта модель описывает, как свет отражается на материале, разбивая его на три фактора: Окружающий цвет(Ambient color), Диффузный цвет(Diffuse color), Зеркальный цвет(Specular color). Это должно показаться знакомым художникам 3D-игр.

Эта модель является очень грубым приближением того, что действительно происходит, когда свет попадает на поверхность реального материала в жизни, но до сих пор этого было достаточно для видеоигр. Конечно, есть десятки других моделей и даже модификация модели Фонга, но эта самая используемая, и именно та, которую мы используем в jMonkeyEngine.

Проблема с этой моделью заключается в том, что сложно иметь материал, который выглядит согласованным в разных условиях освещения.

  • Предполагается, что окружающая среда представляет собой окружающее освещение, являясь своего рода вездесущим тусклым светом, который пытается подделать косвенное освещение, исходящее от отражения света от окружающих объектов.
  • Диффузный более прост: это фактический цвет объекта, когда он находится под белым светом.
  • Зеркальные представляют цвет отраженных бликов, а интенсивность определяется параметром «блеск» (по крайней мере, в jME, но это довольно часто так). Проблема в том, что зеркальный цвет также стимулируется интенсивность, потому что чем ярче цвет, тем интенсивнее будет зеркалить.

Все это приводит к многократной настройке, для того чтобы выглядеть корректно, и может выглядеть не так хорошо, как должно быть при другой среде освещения. Он также в значительной степени зависит от удачных догадок художника о материале.

И тут приходит Физически Обоснованный Рендеринг. Не то, чтобы предыдущий не был физически обоснован … но что бы это ни было, это звучит довольно круто.

Каждый имеет свой собственный способ внедрения PBR, но каждая реализация имеет общие цели и концепции.

Цели:

  • Разгрузить рабочий процесс художника.
  • Больше «фотореалистичного» рендеринга.

Концепция

  • Каждая поверхность имеет отражение (зеркальное); Даже более грубые при скользящих углах.
  • Энергосбережение: поверхность не может отражать больше света, чем она получила.

Это завершает всю концепцию, но как она воплощается на практике?

Теперь материал можно описать тремя параметрами:

Базовый цвет: базовый цвет — это сырой цвет материала, его также часто называют Альбедо(Albedo). Это похоже на цвет Диффузный, который вы знаете по модели Фонга, но с некоторыми существенными отличиями:

  • Он не должен содержать информацию о затенении. Очень часто с помощью модели Фонга Ambient Occlusion (AO) запекается в Диффузную карту. Здесь Основной цвет должен быть сырым цветом материала
  • Он влияет не только на Диффузный цвет, но и на Зеркальный цвет материала.

Металличность: степень металличности материала. Что это значит? Ваш материал скорее металлический или, скорее, нет (неметаллические материалы называются в литературе диэлектрическими материалами). В некоторых реализациях называют этот параметр «зеркальный», но я нашел его вводящим в заблуждение, поскольку он сильно отличается от зеркального, которой мы знаем сегодня. На практике просто начинайте с экстремальных значений, чтобы почувствовать это: 1 для металлических(metallic), 0 для диэлектрика(dielectric).

metalness

Здесь материал с металличностью 0 (диэлектрик) слева, и металличесностью 1 справа.

Конечно, есть промежуточные значения, но из того что читал я, большинство диэлектрических материалов должно варьироваться от 0,04 до 0,1, а металлические обычно 1. Эти значения основаны на реальных жизненных мерах, и вы можете найти некоторые ссылки на них здесь и здесь. Обратите внимание, что эти значения не подлежат интерпретации и являются «известными» факторами, и художник может следовать им, если они хотят сохранить реалистичный вид.

Шероховатость: степень шероховатости материала: ваш материал гладкий или грубый. 0 означает «гладкий», 1 означает «грубый». В некоторых реализациях к этому относятся как гладкость(Smoothness) или глянцевость(Glossiness). Это по сути то же самое, только наоборот. 1 является гладким, а 0 — грубым. Я нахожу термин «шероховатость» довольно понятным и не оставляя места для неверного истолкования.

Roughness

Здесь же материал с разным уровнем шероховатости от 0 (слева) до 1 (справа). В отличие от металличности этот параметр очень хорошо управляется художником. Шероховатость материала на самом деле не зависит от физики, она больше связана с микро-царапинами, изношенностью и.т.д. Так что, художники должны быть творческими!

Эти параметры являются основами PBR. Конечно, каждый из них может храниться в текстуре, и могут использоваться более общие дополнительные параметры.

Например:

  • Карта Нормалей: то же, что и с моделью фонга.
  • Карта AO: поскольку мы больше не можем запечь AO в диффузный, теперь это дополнительный канал.

Самое приятное, что Металличность(Metalness), Шероховатость(Roughness) и AO — серые масштабированные текстуры, поэтому в основном они используют только один канал текстуры. Таким образом, вы можете упаковать эти 3 карты в одну текстуру.

Вы можете найти примерный игровой ресурс, который должен работать в типичной реализации PBR здесь. На этой странице видно, как выглядят текстуры.

Это для PBR с точки зрения художников. На следующей неделе я объясню, что находится под капотом для вас, товарищи разработчики 😉

Обновлено (01/01/2015)

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

Сообщение выше — о рабочим процессе Металличности(Metalness Workflow).

Вопрос, который я часто задавал об этом, — «как определить зеркальный цвет, если у вас есть черно-белая текстура с металличностью?».

Ответ вы делаете на карте альбедо.

В рабочем процессе металлизации карта альбедо используется как для диффузного цвета, так и для зеркального цвета. Когда металличность равна нулю (диэлектрический материал), основной цвет представляет собой диффузный цвет материала. Когда металличность является единицей (металлический материал), базовый цвет является зеркальным цветом.

Поэтому, если вам интересно, какой должен быть этот базовый цвет, просто посмотрите на него самым простым образом. «Какого цвета это?», И не важно, диффузный это или зеркальный.

Другой общий рабочий процесс называется Зеркальном рабочим процессом(Specular workflow), поскольку он использует зеркальную карту цветов вместо карты металличности. В этом рабочем процессе карта альбедо является диффузным цветом, зеркальная карта — зеркальным цветом, и у вас есть карта блеска со шкалой серого, такая же, как карта шероховатости, но инвертированная (1 гладкая, а 0 — грубая).

Теперь взглянем на минусы использования одного или другого. Вот основные моменты:

Metalness workflow:

Плюсы

  • Текстуры используют меньше пространства. Карта Альбедо — это карта RGBA, металл и шероховатость могут быть упакованы в другую карту RGBA, и у вас есть 2 дополнительных канала для всего, что вы хотите (AO, полость, … w/e)
  • Сложнее делать неправдоподобные материалы (некоторые могут увидеть в этом минус для понимания). Это не более физически точно, но вы обязательно следуете парадигме энергосбережения.
  • Простая концепция цвета: базовый цвет — это цвет материала.

Минусы

  • Может производить некоторые белые предметы на стыке между металлом и неметаллическим
  • Сложнее делать неправдоподобные материалы, но не невозможно.

Specular workflow

Плюсы

  • Ближе к текущему рабочему процессу фонга: диффузная карта, зеркальная карта. Для опытных художников должно быть проще перейти на PBR.

Минусы

  • Вы отвечаете за парадигму сохранения энергии (ее можно рассматривать как + для некоторых).
  • Больше используемой памяти: 2 текстуры RGBA для диффузного и зеркального отображения, вы можете упаковать блеск в альфа-канале зеркальной карты, но у вас нет места для чего-либо, и вам, возможно, придется использовать третью текстуру.

IMO, рабочий процесс металличности больше подходит для 3D-движка в реальном времени. И как художник, я нахожу его более интуитивным.

Тем не менее, как разработчик, делающий свой PBR программный конвейер; Особенно для движка, в основном используемого Инди разработчиками; Какой бы программный конвейер вы ни выбрали, вы не можете игнорировать остальные. Бесплатная или платная модель PBR, которую вы можете найти, выполняется с любым рабочим процессом, подходящим художнику. Возможны некоторые преобразования, но для пользователя легче использовать модель, как есть. Вот почему я решил поддержать оба варианта в моей реализации.

Следующая часть


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.