PBR — это не магия, это просто современный способ заставить материалы в 3D выглядеть реалистично, ну или хотя бы не как мыло из начала 2000-х. Многие слышали, но не все поняли, что это за зверь такой — PBR. Давайте вместе разбираться, без заумных терминов, но с душой. Будем копать, пока не станет понятно даже вашей бабушке, если вдруг она решит заняться 3D-моделированием на пенсии.

Что такое PBR и зачем оно вообще надо

PBR расшифровывается как Physically Based Rendering — то есть, рендеринг, основанный на физических законах. Не пугайтесь, тут не будет формул и лабораторных халатов. Просто суть в том, чтобы материалы реагировали на свет так, как это происходит в реальном мире. До PBR художники на глаз рисовали как выглядит металл, пластик или кожа, и получалось... ну, как получится. А с PBR есть конкретные правила, и если вы им следуете, результат будет правдоподобным. Система PBR работает как добротный рецепт борща: вы не просто кидаете всё подряд, а строго по шагам добавляете нужные ингредиенты. Только вместо свёклы и картошки у вас текстуры: Albedo, Roughness, Metalness, Normal и ещё парочка.

Главные текстуры, которые вы встретите

Итак, разберём каждого героя этой компании. Представьте, что вы создаёте материал для модели, скажем, ржавого чайника. Чтобы он выглядел как надо, вы не просто рисуете его одним цветом — вы даёте компьютеру понять, где у чайника металл, где ржавчина, где он блестит, а где шероховатый. Albedo (или Base Color) — это просто цвет. Без теней, бликов, ничего лишнего. Как будто вы сфоткали предмет в пасмурную погоду. Эта текстура отвечает за базовый внешний вид, и в ней не должно быть никаких теней или бликов — это всё делает свет. Roughness — это уровень шероховатости. Чем выше значение, тем более матовая поверхность. Представьте деревянный стол. Он не блестит, правда? У него высокий Roughness. А теперь вспомните лакированный стол — он гладкий и блестящий, потому что у него низкий Roughness. Metalness — определяет, является ли поверхность металлической. Тут всё просто: 0 — не металл, 1 — металл. Полутонов почти нет. Например, дерево — это точно 0. Золото — уверенная единичка. А вот ржавчина — комбинация металла и грязи, и тут уже можно подумать над смешанными значениями или использовать маску. Normal Map — это ваш способ сказать компьютеру: «Смотри, тут вроде бы плоско, но как будто не совсем». Эта карта добавляет мелкие детали вроде царапин или трещин без добавления новых полигонов. Она не меняет форму объекта, но создаёт иллюзию объёма при освещении. Ambient Occlusion (AO) — показывает, где на поверхности меньше света. Это такие места, куда свет физически не может попасть. Например, стык между полом и стеной — туда свет пробирается с трудом. AO помогает добавить глубины и реалистичности. Height (или Displacement) — карта высот, которая в отличие от Normal может реально двигать полигоны. Но работает она тяжеловато и используется только там, где действительно нужно, например, для очень близких планов.

Где всё это взять и как использовать

Вы можете делать эти текстуры сами — рисовать в Substance Painter, запекать в Blender или даже выкапывать из старых каменных библиотек. Есть и куча бесплатных ресурсов, где можно скачать готовые PBR-материалы. Главное, чтобы все текстуры были согласованы между собой — как семейка на хорошем семейном фото. После того как у вас есть все карты, следующий шаг — правильно их закинуть в движок или редактор. Возьмём, например, Blender:
  1. Albedo кидаете в Base Color. 
  2. Roughness — в соответствующий слот Roughness. 
  3. Metalness — в Metallic. 
  4. Normal Map нужно подключать через Normal Map Node, иначе работать не будет. 
  5. AO можно наложить на Albedo или умножить на финальный цвет — зависит от вашей сцены. 
Ну а если вы работаете в Unreal Engine или Unity, там всё вообще как по маслу. Просто берёте стандартный шейдер и вставляете текстуры в нужные поля. Главное — не перепутать, где что. Да, и не забывайте про sRGB — цветные карты (Albedo, AO) идут в sRGB, а остальные в линейном пространстве.

Что может пойти не так

Да почти всё, если честно. Но всё решаемо. Вот пара типичных бед:
  • Текстура Normal выглядит странно? Возможно, она в неправильном формате. Есть OpenGL и DirectX — и они не дружат. Просто инвертируйте зелёный канал, и всё станет норм. 
  • Поверхность слишком блестит? Значит, Roughness слишком низкий. Попробуйте поднять значение, особенно если материал не должен быть глянцевым. 
  • Материал выглядит как пластилин? Возможно, вы забыли про Normal Map или AO. 
  • Черные пятна на модели? Иногда AO перекрывает всё. Попробуйте её ослабить или отрегулировать UV. 

Немного про фишки и хитрости

Есть пару штук, которые знают не все, но которые спасают жизнь:
  • Не стесняйтесь использовать маски. Например, сделать ржавчину не вручную, а нарисовать маску, где именно она должна появляться. Потом одну и ту же маску можно использовать и для Roughness, и для Color, и для AO — экономия и практичность. 
  • Добавьте чуть-чуть шумов. Лёгкий шум в Roughness делает поверхность менее "мыльной". Реальный мир не идеален, и ваши материалы тоже не должны быть. 
  • Работайте с референсами. Хотите сделать бронзу? Посмотрите, как она выглядит на фото. Не выдумывайте с головы — глаз нас часто обманывает. 
  • Используйте PBR-текстуры с реальными значениями. Есть таблицы, где указаны физические параметры материалов. Например, Roughness для кожи или металла. Это помогает не промахнуться. 

Как понять, что всё получилось

Ваш материал не должен быть похож на детскую аппликацию. Он должен работать в любом свете: утром, вечером, при лампе или в тумане. Проверьте его в разных условиях. Поверните камеру, измените источник света. Хороший PBR-материал живёт, дышит и реагирует на всё, как настоящий. Если смотрите на свою модель и думаете: «Блин, это прям как в жизни!», значит, вы на верном пути. А если есть сомнения — покажите другу или коллеге. Свежий взгляд творит чудеса.

Когда можно забить

Да, бывает и так. Не всегда нужен супер-реализм. Иногда стилизация важнее. В мультяшных проектах или в мобильных играх PBR — это как надевать смокинг в поход. Не всегда уместно. Тогда можно и упростить — использовать только Albedo и немного Normal. Главное — чтобы стиль был выдержан. Но даже в стилизации PBR может быть полезен. Просто вы делаете текстуры не реалистичными, а стилизованными, но система всё равно работает и облегчает жизнь.

А что дальше?

Если вы только начали работать с PBR, не переживайте. Все ошибаются, у всех сначала получается так себе. Это нормально. Но чем больше вы работаете, тем проще становится. Пройдет немного времени, и вы уже будете различать Roughness с одного взгляда и спорить, что алюминий — это не такой уж и блестящий металл, как все думают. Если вы дойдёте до того момента, когда начнёте делать свои материалы с нуля — это уже уровень. Значит, вы не просто ставите текстуры на модель, а понимаете, как они работают. И поверьте, это чувствуется в результате.

Последнее слово перед стартом

Работа с PBR — это как собирать лего. У вас есть детальки — карты. Если вы знаете, как их соединить — получится шедевр. Если нет — будет странный кубик с глазами. Но даже странный кубик — это начало. Не бойтесь ошибаться, не бойтесь экспериментировать. Вы же не делаете ракеты для NASA. Хотя... кто знает. Так что вперед, открывайте Substance, Blender или Unreal, берите эти PBR-штуки и творите. А если что-то не получилось — спросите у коллег, напишите на форуме или просто идите попейте чаю. Иногда решение приходит именно тогда.