1 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>22 ноя 2024</li>
2
<ul><li>22 ноя 2024</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Как создавать их на основе фотографий и дополнительно настраивать в Unreal Engine 5.</p>
4
</ul><p>Как создавать их на основе фотографий и дополнительно настраивать в Unreal Engine 5.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
6
<p>Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.</p>
7
<p>В работе с реалистичной 3D-графикой очень важно учитывать, как свет взаимодействует с той или иной поверхностью. Иначе как понять, например, что перед вами именно необработанная, а не покрытая столярным клеем доска? В 3D эту задачу берут на себя PBR-материалы.</p>
7
<p>В работе с реалистичной 3D-графикой очень важно учитывать, как свет взаимодействует с той или иной поверхностью. Иначе как понять, например, что перед вами именно необработанная, а не покрытая столярным клеем доска? В 3D эту задачу берут на себя PBR-материалы.</p>
8
<p>Из этого материала вы узнаете:</p>
8
<p>Из этого материала вы узнаете:</p>
9
<ul><li><a>что такое</a>PBR;</li>
9
<ul><li><a>что такое</a>PBR;</li>
10
<li>на чём<a>основан</a>PBR;</li>
10
<li>на чём<a>основан</a>PBR;</li>
11
<li>как сделать из <a>фотографии</a>поверхности текстуру и сгенерировать набор карт в <a>Materialize</a>;</li>
11
<li>как сделать из <a>фотографии</a>поверхности текстуру и сгенерировать набор карт в <a>Materialize</a>;</li>
12
<li>как<a>создать</a>PBR-материал в Unreal Engine 5 на базе шаблона;</li>
12
<li>как<a>создать</a>PBR-материал в Unreal Engine 5 на базе шаблона;</li>
13
<li>как в Unreal Engine 5<a>работает</a>карта смещения (Displacement Map);</li>
13
<li>как в Unreal Engine 5<a>работает</a>карта смещения (Displacement Map);</li>
14
<li>в чём суть нового подхода с <a>тесселяцией Nanite</a>в Unreal Engine 5.4;</li>
14
<li>в чём суть нового подхода с <a>тесселяцией Nanite</a>в Unreal Engine 5.4;</li>
15
<li>какие<a>плюсы</a>и <a>минусы</a>у PBR-материалов;</li>
15
<li>какие<a>плюсы</a>и <a>минусы</a>у PBR-материалов;</li>
16
<li>что<a>почитать и посмотреть</a>на заданную тему.</li>
16
<li>что<a>почитать и посмотреть</a>на заданную тему.</li>
17
</ul><p>PBR (от англ. physically based rendering) - это метод наложения шейдеров и рендеринга, обеспечивающий взаимодействие света с материалом в соответствии с законами физики. Впрочем, встречаются проекты и со стилизованной графикой, в которых применяют такой тип рендеринга, чтобы подчеркнуть акцент некоторых материалов при освещении и продемонстрировать современные технологии.</p>
17
</ul><p>PBR (от англ. physically based rendering) - это метод наложения шейдеров и рендеринга, обеспечивающий взаимодействие света с материалом в соответствии с законами физики. Впрочем, встречаются проекты и со стилизованной графикой, в которых применяют такой тип рендеринга, чтобы подчеркнуть акцент некоторых материалов при освещении и продемонстрировать современные технологии.</p>
18
<p>PBR-материалы - один из главных элементов фотореализма. Они наделяют поверхность определёнными свойствами, за счёт которых трёхмерный объект выглядит практически как настоящий.</p>
18
<p>PBR-материалы - один из главных элементов фотореализма. Они наделяют поверхность определёнными свойствами, за счёт которых трёхмерный объект выглядит практически как настоящий.</p>
19
Слева объект с обычными текстурами, справа - с применением PBR-свойств<em>Изображение: Joe "EarthQuake" Wilson /<a>Marmoset</a></em><p>В 3D-графике иногда встречается аббревиатура PBS (от англ. physically based shading) - шейдинг, основанный на законах физики. Фактически оба термина - PBR и PBS - почти идентичны и описывают физические свойства ассетов. Правда, упоминание о PBS встречается, когда речь идёт о шейдерах текстур, а PBR больше связан с рендерингом и освещением.</p>
19
Слева объект с обычными текстурами, справа - с применением PBR-свойств<em>Изображение: Joe "EarthQuake" Wilson /<a>Marmoset</a></em><p>В 3D-графике иногда встречается аббревиатура PBS (от англ. physically based shading) - шейдинг, основанный на законах физики. Фактически оба термина - PBR и PBS - почти идентичны и описывают физические свойства ассетов. Правда, упоминание о PBS встречается, когда речь идёт о шейдерах текстур, а PBR больше связан с рендерингом и освещением.</p>
20
<p>Рендеринг в движке, будь то Cycles (Blender) или Unreal Engine 5, имитирует физику реального мира, в том числе в отношении света. В реальной жизни законы физики не меняются, как и тип поверхностей предметов. На их внешний вид может повлиять только освещение - жёсткий, рассеянный, цветной свет, - но свойства поверхности остаются прежними.</p>
20
<p>Рендеринг в движке, будь то Cycles (Blender) или Unreal Engine 5, имитирует физику реального мира, в том числе в отношении света. В реальной жизни законы физики не меняются, как и тип поверхностей предметов. На их внешний вид может повлиять только освещение - жёсткий, рассеянный, цветной свет, - но свойства поверхности остаются прежними.</p>
21
<p>И PBR-материалы помогают сохранить эти свойства в 3D независимо от условий освещения, что усиливает эффект реализма.</p>
21
<p>И PBR-материалы помогают сохранить эти свойства в 3D независимо от условий освещения, что усиливает эффект реализма.</p>
22
<p>В зависимости от матовой или глянцевой поверхности объекта отражение бывает рассеянным или зеркальным соответственно. Зеркальное отражение на идеально ровной поверхности работает по принципу закона отражения. В результате появляются небольшие, но яркие блики, в зависимости от того, под каким углом зритель смотрит на объект. От матовой поверхности лучи света отражаются по принципу<a>модели освещения Ламберта</a>, то есть равномерно под любым углом. Но, независимо от структуры объекта, все поверхности отражают одинаковое количество света. Параметр отражения в 3D можно настроить с помощью карты Specular или Metallic.</p>
22
<p>В зависимости от матовой или глянцевой поверхности объекта отражение бывает рассеянным или зеркальным соответственно. Зеркальное отражение на идеально ровной поверхности работает по принципу закона отражения. В результате появляются небольшие, но яркие блики, в зависимости от того, под каким углом зритель смотрит на объект. От матовой поверхности лучи света отражаются по принципу<a>модели освещения Ламберта</a>, то есть равномерно под любым углом. Но, независимо от структуры объекта, все поверхности отражают одинаковое количество света. Параметр отражения в 3D можно настроить с помощью карты Specular или Metallic.</p>
23
<p>Модель освещения Ламберта хорошо работает только на ровной поверхности (например, матовое покрытие коробки) и полностью игнорирует то, что в 3D называют шероховатостью (Roughness), гладкостью (Smoothness), глянцевитостью (Glossiness) или микроповерхностью (<em>Microsurface</em>). Чтобы подчеркнуть такие свойства, в дополнение к основной карте отражения используют дополнительную карту глянцевитости (Glossiness Map) или шероховатости (Roughness Map) - в зависимости от подхода к текстурированию.</p>
23
<p>Модель освещения Ламберта хорошо работает только на ровной поверхности (например, матовое покрытие коробки) и полностью игнорирует то, что в 3D называют шероховатостью (Roughness), гладкостью (Smoothness), глянцевитостью (Glossiness) или микроповерхностью (<em>Microsurface</em>). Чтобы подчеркнуть такие свойства, в дополнение к основной карте отражения используют дополнительную карту глянцевитости (Glossiness Map) или шероховатости (Roughness Map) - в зависимости от подхода к текстурированию.</p>
24
Шкала отражений шейдеров Metallic и Roughness<em>Изображение:<a>Compositing Mentor</a></em><p>Сталкиваясь с неоднородной или полупрозрачной поверхностью, свет поглощается и (или) рассеивается. В некоторых случаях эти процессы происходят одновременно. При поглощении интенсивность света уменьшается, поскольку он преобразуется в другую форму энергии (как правило, в тепловую). Направление луча при этом не меняется, а его цвет зависит от соотношения количества поглощаемого света и длины волны.</p>
24
Шкала отражений шейдеров Metallic и Roughness<em>Изображение:<a>Compositing Mentor</a></em><p>Сталкиваясь с неоднородной или полупрозрачной поверхностью, свет поглощается и (или) рассеивается. В некоторых случаях эти процессы происходят одновременно. При поглощении интенсивность света уменьшается, поскольку он преобразуется в другую форму энергии (как правило, в тепловую). Направление луча при этом не меняется, а его цвет зависит от соотношения количества поглощаемого света и длины волны.</p>
25
<p>Когда свет рассеивается, направление лучей становится хаотичным в зависимости от фактуры материала, но интенсивность излучения при этом не меняется. В результате подобного явления мы видим, как просвечиваются листья деревьев или уши на солнце. В 3D-графике это явление называется Subsurface scattering (SSS), то есть подповерхностное рассеивание.</p>
25
<p>Когда свет рассеивается, направление лучей становится хаотичным в зависимости от фактуры материала, но интенсивность излучения при этом не меняется. В результате подобного явления мы видим, как просвечиваются листья деревьев или уши на солнце. В 3D-графике это явление называется Subsurface scattering (SSS), то есть подповерхностное рассеивание.</p>
26
<p>Если материал совсем прозрачный и тонкий (стекло, вода), лучи света свободно проходят сквозь него. При наличии сторонних частиц (например, грязи) свет рассеивается сильнее, а прозрачность снижается.</p>
26
<p>Если материал совсем прозрачный и тонкий (стекло, вода), лучи света свободно проходят сквозь него. При наличии сторонних частиц (например, грязи) свет рассеивается сильнее, а прозрачность снижается.</p>
27
<p>Из этого следует, что свойства поглощения и рассеивания света зависят от толщины объекта. Чтобы подчеркнуть это явление в 3D, художники используют дополнительные карты толщины (Thickness Map), а для оттенения отдельных участков - карту прозрачности (Transfluency Map), которую мы <a>упоминали</a>в одном из прошлых материалов. Иногда этого можно достичь с помощью шейдеров - например, в Unreal Engine можно настроить подтон основной текстуры, который будет проявляться во время просвечивания.</p>
27
<p>Из этого следует, что свойства поглощения и рассеивания света зависят от толщины объекта. Чтобы подчеркнуть это явление в 3D, художники используют дополнительные карты толщины (Thickness Map), а для оттенения отдельных участков - карту прозрачности (Transfluency Map), которую мы <a>упоминали</a>в одном из прошлых материалов. Иногда этого можно достичь с помощью шейдеров - например, в Unreal Engine можно настроить подтон основной текстуры, который будет проявляться во время просвечивания.</p>
28
Поверхность объекта с использованием Thickness Map<em>Изображение:<a>SideFX Labs</a></em><p>Преломлением в физике называют изменение направления светового луча во время перехода из одной среды в другую. Примером такого явления может стать искажённое отражение окружения на гладкой поверхности или визуально кривая ложка в стакане с водой.</p>
28
Поверхность объекта с использованием Thickness Map<em>Изображение:<a>SideFX Labs</a></em><p>Преломлением в физике называют изменение направления светового луча во время перехода из одной среды в другую. Примером такого явления может стать искажённое отражение окружения на гладкой поверхности или визуально кривая ложка в стакане с водой.</p>
29
<p>Чтобы узнать величину искажения, в 3D используют индекс преломления, он же IOR (от англ. Index of Refraction). В физике у каждой субстанции есть свой индекс преломления. В 3D его не запекают в текстуру, а настраивают непосредственно в самом игровом движке или в системе рендеринга, вводя в настройках шейдеров значение из <a>таблицы</a>. Также IOR используют для расчёта отражений или нулевого значения Френеля, речь о котором пойдёт чуть ниже.</p>
29
<p>Чтобы узнать величину искажения, в 3D используют индекс преломления, он же IOR (от англ. Index of Refraction). В физике у каждой субстанции есть свой индекс преломления. В 3D его не запекают в текстуру, а настраивают непосредственно в самом игровом движке или в системе рендеринга, вводя в настройках шейдеров значение из <a>таблицы</a>. Также IOR используют для расчёта отражений или нулевого значения Френеля, речь о котором пойдёт чуть ниже.</p>
30
<em>Изображение:<a>Erik Keller</a></em><p>В современные движки и системы рендеринга уже заложен фреймворк для взаимодействия света с материалом, основанный на принципе сохранения энергии. Это значит, что материал не может отразить больше света, чем было изначально. Как и IOR, этот параметр можно отрегулировать непосредственно в программе.</p>
30
<em>Изображение:<a>Erik Keller</a></em><p>В современные движки и системы рендеринга уже заложен фреймворк для взаимодействия света с материалом, основанный на принципе сохранения энергии. Это значит, что материал не может отразить больше света, чем было изначально. Как и IOR, этот параметр можно отрегулировать непосредственно в программе.</p>
31
Пример настройки отражения материалов в соответствии с законом сохранения энергии в Blender (движок Cycles)<p>Перед тем как приступить к созданию PBR-материалов, художник сразу должен определиться, какая поверхность будет в итоге - металлическая или нет. Если это металл, важно определить наличие следующих особенностей будущего материала:</p>
31
Пример настройки отражения материалов в соответствии с законом сохранения энергии в Blender (движок Cycles)<p>Перед тем как приступить к созданию PBR-материалов, художник сразу должен определиться, какая поверхность будет в итоге - металлическая или нет. Если это металл, важно определить наличие следующих особенностей будущего материала:</p>
32
<ul><li><strong>Механическая обработка</strong> - необработанный металл будет диэлектриком по умолчанию.</li>
32
<ul><li><strong>Механическая обработка</strong> - необработанный металл будет диэлектриком по умолчанию.</li>
33
<li><strong>Покраска</strong> - металл, покрытый слоем краски, лишится металлических свойств. Но если концепт предполагает слой краски, которая местами облупилась, и на этих участках проглядывает металлическая поверхность, то материал будет сочетать в себе характеристики металлов и неметаллов.</li>
33
<li><strong>Покраска</strong> - металл, покрытый слоем краски, лишится металлических свойств. Но если концепт предполагает слой краски, которая местами облупилась, и на этих участках проглядывает металлическая поверхность, то материал будет сочетать в себе характеристики металлов и неметаллов.</li>
34
<li><strong>Воздействие внешней среды</strong> - коррозия, грязь, смола и так далее. В этом случае набор текстур тоже будет комплексным с учётом свойств побочных субстанций.</li>
34
<li><strong>Воздействие внешней среды</strong> - коррозия, грязь, смола и так далее. В этом случае набор текстур тоже будет комплексным с учётом свойств побочных субстанций.</li>
35
</ul><p>Известно, что обработанные металлы<a>отражают</a>свет на 100%. Цветные металлы поглощают свет на разных частотах видимого излучения. Часть лучей поглощается и перерабатывается в энергию. В результате отражённый свет формирует итоговый оттенок металла. Например, золото поглощает синий цвет, поэтому мы видим его жёлтым. Вот почему при создании PBR-материалов металлов используют не цветные изображения в карте Diffuse, а шейдер Base Color.</p>
35
</ul><p>Известно, что обработанные металлы<a>отражают</a>свет на 100%. Цветные металлы поглощают свет на разных частотах видимого излучения. Часть лучей поглощается и перерабатывается в энергию. В результате отражённый свет формирует итоговый оттенок металла. Например, золото поглощает синий цвет, поэтому мы видим его жёлтым. Вот почему при создании PBR-материалов металлов используют не цветные изображения в карте Diffuse, а шейдер Base Color.</p>
36
Значения цветового спектра RGB для некоторых диэлектриков и металлов на основе таблицы рендеринга UE4<em>Источник:<a>3D and AR software - Adobe Substance 3D</a>. Инфографика: Майя Мальгина для Skillbox Media</em><p>Если металл создаётся на основе набора карт Diffuse/Specular/Glossiness, то Diffuse Map будет чёрного цвета, а участки отражения отмечаются характерным цветом в карте Specular. Но на сегодняшний день для создания металлических поверхностей художники всё чаще отдают предпочтение подходу Base Color / Metallic / Roughness, так как технически он более прост в исполнении и занимает меньше ресурсов.</p>
36
Значения цветового спектра RGB для некоторых диэлектриков и металлов на основе таблицы рендеринга UE4<em>Источник:<a>3D and AR software - Adobe Substance 3D</a>. Инфографика: Майя Мальгина для Skillbox Media</em><p>Если металл создаётся на основе набора карт Diffuse/Specular/Glossiness, то Diffuse Map будет чёрного цвета, а участки отражения отмечаются характерным цветом в карте Specular. Но на сегодняшний день для создания металлических поверхностей художники всё чаще отдают предпочтение подходу Base Color / Metallic / Roughness, так как технически он более прост в исполнении и занимает меньше ресурсов.</p>
37
Сравнение подходов использования карт Specular и Metalness<p>В отличие от металлических поверхностей, на неметаллах происходит преломление света. Преломлённый свет рассеивается и (или) поглощается и зависит от альбедо материала.</p>
37
Сравнение подходов использования карт Specular и Metalness<p>В отличие от металлических поверхностей, на неметаллах происходит преломление света. Преломлённый свет рассеивается и (или) поглощается и зависит от альбедо материала.</p>
38
<p>Подчеркнуть природу диэлектриков и проводников также поможет<a>эффект Френеля</a>. Когда свет попадает на поверхность под углом 90°, края объекта отразят все световые лучи, при этом в центре (0°) отразится лишь определённый их процент в зависимости от природы самого материала. Это значение называют F0, то есть нулевое значение Френеля.</p>
38
<p>Подчеркнуть природу диэлектриков и проводников также поможет<a>эффект Френеля</a>. Когда свет попадает на поверхность под углом 90°, края объекта отразят все световые лучи, при этом в центре (0°) отразится лишь определённый их процент в зависимости от природы самого материала. Это значение называют F0, то есть нулевое значение Френеля.</p>
39
<p>Диапазон F0 для большинства неметаллов варьируется от 0,02 до 0,05 (линейные значения), за исключением драгоценных камней (0,08). Для металлов - в пределах 0,5-1,0.</p>
39
<p>Диапазон F0 для большинства неметаллов варьируется от 0,02 до 0,05 (линейные значения), за исключением драгоценных камней (0,08). Для металлов - в пределах 0,5-1,0.</p>
40
<p>Во многих системах рендеринга F0 рассчитывается автоматически, достаточно указать данные индекса преломления в шейдере. А в некоторых программах и вовсе существуют<a>утилиты</a>с готовыми шаблонами для определённого типа материалов.</p>
40
<p>Во многих системах рендеринга F0 рассчитывается автоматически, достаточно указать данные индекса преломления в шейдере. А в некоторых программах и вовсе существуют<a>утилиты</a>с готовыми шаблонами для определённого типа материалов.</p>
41
<p>Сейчас практически на любом портале для 3D-художников доступны готовые наборы PBR-материалов для разных задач. Но что, если проект хочется дополнить уникальными материалами на основе собственных фотографий? Сделать это не так сложно, как кажется, но нужно соблюдать несколько правил.</p>
41
<p>Сейчас практически на любом портале для 3D-художников доступны готовые наборы PBR-материалов для разных задач. Но что, если проект хочется дополнить уникальными материалами на основе собственных фотографий? Сделать это не так сложно, как кажется, но нужно соблюдать несколько правил.</p>
42
<p>Неважно, какую поверхность вы хотите увековечить в текстуры - кору дерева, почву или кирпичную стену, - съёмку лучше всего проводить в облачную погоду. Это условие обеспечивает естественное рассеянное освещение. Если на улице солнечно - снимайте объект в тени. Таким образом освещение будет равномерным, без пересветов и слишком контрастных теней. Если же съёмка проводится в помещении, следует позаботиться о расстановке ламп с рассеянным светом.</p>
42
<p>Неважно, какую поверхность вы хотите увековечить в текстуры - кору дерева, почву или кирпичную стену, - съёмку лучше всего проводить в облачную погоду. Это условие обеспечивает естественное рассеянное освещение. Если на улице солнечно - снимайте объект в тени. Таким образом освещение будет равномерным, без пересветов и слишком контрастных теней. Если же съёмка проводится в помещении, следует позаботиться о расстановке ламп с рассеянным светом.</p>
43
<p>Во время снимков поверхности важно не допустить искажений, поэтому камера должна находиться под прямым углом. Помимо штатива, рекомендуется использовать объектив 50 mm. Он даёт хороший фокус, не искажая фотографию, и улавливает мельчайшие детали. Если вы снимаете на смартфон, подберите в настройках камеры самый оптимальный режим, приближённый к этому фокусу. PBR-текстуры заочно подразумевают высокое разрешение, поэтому не забудьте выставить его в настройках.</p>
43
<p>Во время снимков поверхности важно не допустить искажений, поэтому камера должна находиться под прямым углом. Помимо штатива, рекомендуется использовать объектив 50 mm. Он даёт хороший фокус, не искажая фотографию, и улавливает мельчайшие детали. Если вы снимаете на смартфон, подберите в настройках камеры самый оптимальный режим, приближённый к этому фокусу. PBR-текстуры заочно подразумевают высокое разрешение, поэтому не забудьте выставить его в настройках.</p>
44
<p><strong>Примечание.</strong>Чтобы установить фокус 50 mm в iPhone, коснитесь выбора фокуса в режиме камеры в нижней части экрана. Удерживая кнопку управления масштабированием, перемещайте ползунок до значения 2,2. Данная функция доступна для моделей с двойной и тройной камерой.</p>
44
<p><strong>Примечание.</strong>Чтобы установить фокус 50 mm в iPhone, коснитесь выбора фокуса в режиме камеры в нижней части экрана. Удерживая кнопку управления масштабированием, перемещайте ползунок до значения 2,2. Данная функция доступна для моделей с двойной и тройной камерой.</p>
45
В качестве основы для будущего материала мы сняли кору старого дерева<em>Фото: Skillbox Media</em><p>Готовый снимок необходимо обработать в Photoshop или в другом редакторе следующим образом:</p>
45
В качестве основы для будущего материала мы сняли кору старого дерева<em>Фото: Skillbox Media</em><p>Готовый снимок необходимо обработать в Photoshop или в другом редакторе следующим образом:</p>
46
<ul><li>Нужно определить, какая область изображения будет в итоговой текстуре. С помощью инструмента кадрирования (квадрат) - обрезать лишнее и установить нужное разрешение. В качестве универсального размера можно остановиться на 2K (2048×2048 пикселей).</li>
46
<ul><li>Нужно определить, какая область изображения будет в итоговой текстуре. С помощью инструмента кадрирования (квадрат) - обрезать лишнее и установить нужное разрешение. В качестве универсального размера можно остановиться на 2K (2048×2048 пикселей).</li>
47
<li>В качестве основы для PBR лучше взять<a>Albedo Map</a>, которая не предполагает слишком ярких и тёмных участков. Даже если объект был снят в облачную погоду и на снимке нет засвеченных областей, затемнённые места (трещины, сколы, швы) нужно немного осветлить в графическом редакторе или специальной программе для текстур.</li>
47
<li>В качестве основы для PBR лучше взять<a>Albedo Map</a>, которая не предполагает слишком ярких и тёмных участков. Даже если объект был снят в облачную погоду и на снимке нет засвеченных областей, затемнённые места (трещины, сколы, швы) нужно немного осветлить в графическом редакторе или специальной программе для текстур.</li>
48
</ul>Руководство по созданию карты альбедо в Photoshop и сравнение полученного результата в программах CrazyBump и PixPlant<ul><li>Если изображение предназначено для<a>тайлового</a>текстурирования, желательно, чтобы количество уникальных деталей (крупная трещина посередине или сбоку, массивный участок мха, царапина и так далее) было сведено к минимуму. В противном случае при текстурировании большой площади эти акценты будут выглядеть неестественно. Чтобы быстро избавиться от них, в Photoshop выделяем проблемную область инструментом "Лассо", нажимаем Shift + F5, выбираем опцию "С учётом содержимого" и подтверждаем действие. Редактор аккуратно заполнит фоном пространство.</li>
48
</ul>Руководство по созданию карты альбедо в Photoshop и сравнение полученного результата в программах CrazyBump и PixPlant<ul><li>Если изображение предназначено для<a>тайлового</a>текстурирования, желательно, чтобы количество уникальных деталей (крупная трещина посередине или сбоку, массивный участок мха, царапина и так далее) было сведено к минимуму. В противном случае при текстурировании большой площади эти акценты будут выглядеть неестественно. Чтобы быстро избавиться от них, в Photoshop выделяем проблемную область инструментом "Лассо", нажимаем Shift + F5, выбираем опцию "С учётом содержимого" и подтверждаем действие. Редактор аккуратно заполнит фоном пространство.</li>
49
</ul>Текстура до и после редактирования<em>Изображение: Skillbox Media</em><ul><li>Для того чтобы будущая текстура получилась без стыков, её нужно сделать бесшовной. Такая коррекция доступна не только в Photoshop, но и в других программах - к примеру, в PixPlant или Materialize.</li>
49
</ul>Текстура до и после редактирования<em>Изображение: Skillbox Media</em><ul><li>Для того чтобы будущая текстура получилась без стыков, её нужно сделать бесшовной. Такая коррекция доступна не только в Photoshop, но и в других программах - к примеру, в PixPlant или Materialize.</li>
50
</ul>Создание бесшовной текстуры в Photoshop<p>На основе полученной текстуры можно сгенерировать остальной набор технических карт. Существует много программ, где доступна подобная операция, например Substance 3D, Autodesk Mudbox или ShaderMap. В рамках этого материала рассмотрим создание набора текстур в бесплатной программе<a>Materialize</a>, которую легко освоить начинающему пользователю.</p>
50
</ul>Создание бесшовной текстуры в Photoshop<p>На основе полученной текстуры можно сгенерировать остальной набор технических карт. Существует много программ, где доступна подобная операция, например Substance 3D, Autodesk Mudbox или ShaderMap. В рамках этого материала рассмотрим создание набора текстур в бесплатной программе<a>Materialize</a>, которую легко освоить начинающему пользователю.</p>
51
Интерфейс программы<em>Скриншот: Materialize / Bounding Box Software</em><p>Интерфейс Materialize достаточно простой для понимания. Сбоку находится трёхмерная рамка с плоскостью, которая визуализирует все изменения с материалом. В верхнем левом углу расположены окна, в которые нужно загружать карты. Буквы на панелях означают операции:</p>
51
Интерфейс программы<em>Скриншот: Materialize / Bounding Box Software</em><p>Интерфейс Materialize достаточно простой для понимания. Сбоку находится трёхмерная рамка с плоскостью, которая визуализирует все изменения с материалом. В верхнем левом углу расположены окна, в которые нужно загружать карты. Буквы на панелях означают операции:</p>
52
<ul><li>P (Paste) - вставить изображение из буфера обмена;</li>
52
<ul><li>P (Paste) - вставить изображение из буфера обмена;</li>
53
<li>С (Copy) - копировать;</li>
53
<li>С (Copy) - копировать;</li>
54
<li>O (Open) - открыть файл;</li>
54
<li>O (Open) - открыть файл;</li>
55
<li>S (Save) - сохранить изображение.</li>
55
<li>S (Save) - сохранить изображение.</li>
56
</ul><p>Нижние кнопки также связаны с основными действиями:</p>
56
</ul><p>Нижние кнопки также связаны с основными действиями:</p>
57
<ul><li>Quick Save - быстрое сохранение;</li>
57
<ul><li>Quick Save - быстрое сохранение;</li>
58
<li>Preview - предпросмотр;</li>
58
<li>Preview - предпросмотр;</li>
59
<li>Edit - вызов редактора настроек текстуры;</li>
59
<li>Edit - вызов редактора настроек текстуры;</li>
60
<li>Clear - удалить карту.</li>
60
<li>Clear - удалить карту.</li>
61
</ul><p>Для начала загрузим в слот Diffuse Map карту альбедо, в нашем случае - отредактированную. После загрузки её можно дополнительно изменить в настройках Edit. Например, подкрутив ползунок<strong>Remove Shadow</strong>можно осветлить тёмные участки, не прибегая к Photoshop.</p>
61
</ul><p>Для начала загрузим в слот Diffuse Map карту альбедо, в нашем случае - отредактированную. После загрузки её можно дополнительно изменить в настройках Edit. Например, подкрутив ползунок<strong>Remove Shadow</strong>можно осветлить тёмные участки, не прибегая к Photoshop.</p>
62
Интерфейс настроек диффуз-текстуры в Materialize. По умолчанию плоскость визуализирует результат наполовину, чтобы его можно было сравнить с оригинальным значением<em>Скриншот: Materialize / Bounding Box Software</em><p>Так как на древесных стволах встречаются выпуклые участки, создадим карту высот, которую в дальнейшем сможем использовать в качестве карты смещения. Нажимаем<strong>Create</strong>в окне Height Map, и программа сгенерирует текстуру на основе оригинальной (или изменённой, если оригинальная карта была изменена в настройках) Diffuse Map.</p>
62
Интерфейс настроек диффуз-текстуры в Materialize. По умолчанию плоскость визуализирует результат наполовину, чтобы его можно было сравнить с оригинальным значением<em>Скриншот: Materialize / Bounding Box Software</em><p>Так как на древесных стволах встречаются выпуклые участки, создадим карту высот, которую в дальнейшем сможем использовать в качестве карты смещения. Нажимаем<strong>Create</strong>в окне Height Map, и программа сгенерирует текстуру на основе оригинальной (или изменённой, если оригинальная карта была изменена в настройках) Diffuse Map.</p>
63
<p>Светлые пятна карты формируют выпуклые участки, поэтому во время экспериментов с настройками убедитесь, что они не затрагивают щели и впадины. Делать тёмные участки слишком резкими не стоит, иначе вся поверхность покроется острыми шипами. Чтобы понять, насколько корректно выставлены настройки, нажимаем на <strong>Show Full Material</strong>. В опциях в нижней левой части экрана можно указать примитив, на котором будет визуализирован материал. Для большей наглядности в данном примере выбран цилиндр (Cylinder), и на этой модели видно, что смещения в геометрии конкретно для этого материала незначительны.</p>
63
<p>Светлые пятна карты формируют выпуклые участки, поэтому во время экспериментов с настройками убедитесь, что они не затрагивают щели и впадины. Делать тёмные участки слишком резкими не стоит, иначе вся поверхность покроется острыми шипами. Чтобы понять, насколько корректно выставлены настройки, нажимаем на <strong>Show Full Material</strong>. В опциях в нижней левой части экрана можно указать примитив, на котором будет визуализирован материал. Для большей наглядности в данном примере выбран цилиндр (Cylinder), и на этой модели видно, что смещения в геометрии конкретно для этого материала незначительны.</p>
64
Настройка Height Map и её визуализация на цилиндре<em>Скриншот: Materialize / Bounding Box Software</em><p>Аналогичным способом создаём карту нормалей (Normal Map). Как и в Height Map, здесь есть готовые шаблоны для будущей поверхности:</p>
64
Настройка Height Map и её визуализация на цилиндре<em>Скриншот: Materialize / Bounding Box Software</em><p>Аналогичным способом создаём карту нормалей (Normal Map). Как и в Height Map, здесь есть готовые шаблоны для будущей поверхности:</p>
65
<ul><li>Default - по умолчанию;</li>
65
<ul><li>Default - по умолчанию;</li>
66
<li>Smooth - гладкая;</li>
66
<li>Smooth - гладкая;</li>
67
<li>Crisp - шершавая;</li>
67
<li>Crisp - шершавая;</li>
68
<li>Mids - среднее значение.</li>
68
<li>Mids - среднее значение.</li>
69
</ul>Ствол дерева достаточно рельефный, поэтому в примере выставлен шаблон Crisp и немного увеличен параметр Angular Intensity<em>Скриншот: Materialize / Bounding Box Software</em><p>Чтобы добавить текстуре затенений, создаём карту Ambient Occlusion (AO Map).</p>
69
</ul>Ствол дерева достаточно рельефный, поэтому в примере выставлен шаблон Crisp и немного увеличен параметр Angular Intensity<em>Скриншот: Materialize / Bounding Box Software</em><p>Чтобы добавить текстуре затенений, создаём карту Ambient Occlusion (AO Map).</p>
70
Визуализация материала с Ambient Occlusion<em>Скриншот: Materialize / Bounding Box Software</em><p>Если бы древесина была обработанной, потребовалась бы карта отражения (в Materialize её создают в окне Metallic). Но в данном случае можно лишь подчеркнуть матовость, добавив шероховатости (в Materialize это Smoothness Map).</p>
70
Визуализация материала с Ambient Occlusion<em>Скриншот: Materialize / Bounding Box Software</em><p>Если бы древесина была обработанной, потребовалась бы карта отражения (в Materialize её создают в окне Metallic). Но в данном случае можно лишь подчеркнуть матовость, добавив шероховатости (в Materialize это Smoothness Map).</p>
71
Настройка Smoothness Map<em>Скриншот: Materialize / Bounding Box Software</em><p>Осталась последняя карта - Edge Map. Она не входит в основной набор, но с её помощью можно дополнительно подчеркнуть мелкие детали поверхности.</p>
71
Настройка Smoothness Map<em>Скриншот: Materialize / Bounding Box Software</em><p>Осталась последняя карта - Edge Map. Она не входит в основной набор, но с её помощью можно дополнительно подчеркнуть мелкие детали поверхности.</p>
72
Краткое объяснение работы Edge Map в Materialize<p>Материал готов. Теперь нужно выбрать расширение файла, в котором будут экспортированы итоговые текстуры (в данном случае - PNG), и нажать кнопку<strong>Save Project</strong>. Набор карт вместе с проектом сохранится в выбранной папке.</p>
72
Краткое объяснение работы Edge Map в Materialize<p>Материал готов. Теперь нужно выбрать расширение файла, в котором будут экспортированы итоговые текстуры (в данном случае - PNG), и нажать кнопку<strong>Save Project</strong>. Набор карт вместе с проектом сохранится в выбранной папке.</p>
73
Визуализация итогового материала в Materialize<em>Скриншот: Materialize / Bounding Box Software</em><p><strong>Примечание.</strong>В Materialize есть инструмент для создания бесшовных текстур. Открываем меню Tile Map, выбираем количество тайлов (2 или 4, как было в видеоруководстве по Photoshop выше). Во время прокрутки ползунков<strong>Overlap X</strong> и<strong>Overlap Y</strong> края изображения начнут смещаться, после чего можно добавить параметр<strong>Edge Falloff</strong>, который сгладит стыки. Этот способ хорошо работает с геометрическим рисунком. Если поверхность неоднородная, лучше прибегнуть к ручной коррекции.</p>
73
Визуализация итогового материала в Materialize<em>Скриншот: Materialize / Bounding Box Software</em><p><strong>Примечание.</strong>В Materialize есть инструмент для создания бесшовных текстур. Открываем меню Tile Map, выбираем количество тайлов (2 или 4, как было в видеоруководстве по Photoshop выше). Во время прокрутки ползунков<strong>Overlap X</strong> и<strong>Overlap Y</strong> края изображения начнут смещаться, после чего можно добавить параметр<strong>Edge Falloff</strong>, который сгладит стыки. Этот способ хорошо работает с геометрическим рисунком. Если поверхность неоднородная, лучше прибегнуть к ручной коррекции.</p>
74
<p>Чтобы оценить результат, перенесём набор в Unreal Engine 5. На <a>сайте</a>Materialize можно скачать шейдеры для Unreal Engine и создать материал по их образцу в движке.</p>
74
<p>Чтобы оценить результат, перенесём набор в Unreal Engine 5. На <a>сайте</a>Materialize можно скачать шейдеры для Unreal Engine и создать материал по их образцу в движке.</p>
75
<p><strong>Примечание.</strong>Ассеты Materialize, как и любые другие файлы с расширением<strong>.uasset</strong>, нужно загружать в проект не путём перетаскивания в Content Browser, а копированием всех папок в директорию Content (проекта, а не самого движка).</p>
75
<p><strong>Примечание.</strong>Ассеты Materialize, как и любые другие файлы с расширением<strong>.uasset</strong>, нужно загружать в проект не путём перетаскивания в Content Browser, а копированием всех папок в директорию Content (проекта, а не самого движка).</p>
76
<p>Открываем проект и <a>создаём</a>материал, предварительно загрузив папку с созданными текстурами в Content Browser и скопировав в папку<strong>Content</strong>на жёстком диске ассеты от Materialize. В папке<strong>Shaders</strong>находим материал<strong>Materialize_Standart_Displace</strong>и открываем его Material Graph. Выделяем всю цепочку нодов и копируем её (Ctrl + C). Заходим в редактор нодов собственного материала, вставляем шейдеры и добавляем сгенерированные карты в ноды, соответствующие названию текстур.</p>
76
<p>Открываем проект и <a>создаём</a>материал, предварительно загрузив папку с созданными текстурами в Content Browser и скопировав в папку<strong>Content</strong>на жёстком диске ассеты от Materialize. В папке<strong>Shaders</strong>находим материал<strong>Materialize_Standart_Displace</strong>и открываем его Material Graph. Выделяем всю цепочку нодов и копируем её (Ctrl + C). Заходим в редактор нодов собственного материала, вставляем шейдеры и добавляем сгенерированные карты в ноды, соответствующие названию текстур.</p>
77
<p>Текущую структуру материала можно немного упростить. На результат это не повлияет, но нодов станет меньше. Если материал предполагает тайлинг, левую связку параметров заменяем нодами<strong>TexCoordinate</strong>и <strong>UVTiling</strong>(в последнем можно указать, сколько раз текущее изображение нужно размножить). Оба этих элемента подключим к объединяющему ноду<strong>Multiply</strong>и свяжем со всеми UV-слотами текстур.</p>
77
<p>Текущую структуру материала можно немного упростить. На результат это не повлияет, но нодов станет меньше. Если материал предполагает тайлинг, левую связку параметров заменяем нодами<strong>TexCoordinate</strong>и <strong>UVTiling</strong>(в последнем можно указать, сколько раз текущее изображение нужно размножить). Оба этих элемента подключим к объединяющему ноду<strong>Multiply</strong>и свяжем со всеми UV-слотами текстур.</p>
78
<p>В данном материале отсутствует текстура Metallic Map, поэтому мы удалили эту цепочку. Но так как поверхность в любом случае должна отражать свет, нужно обязательно указать значение для шейдера металла. Для этого создаём нод<strong>Constant</strong>, вписываем в него значение<strong>1</strong> и присоединяем к шейдеру<strong>Metallic</strong>.</p>
78
<p>В данном материале отсутствует текстура Metallic Map, поэтому мы удалили эту цепочку. Но так как поверхность в любом случае должна отражать свет, нужно обязательно указать значение для шейдера металла. Для этого создаём нод<strong>Constant</strong>, вписываем в него значение<strong>1</strong> и присоединяем к шейдеру<strong>Metallic</strong>.</p>
79
<p>Цепочку нодов с картой Height Map, которую мы планировали использовать в качестве карты смещения, тоже придётся удалить. С появлением Nanite прежняя технология тесселяции, которая поддерживала такой тип текстур, стала неактуальной, а значит, избавляемся и от Tess Multiplier. В теории Height Map можно было бы<a>подключить</a>как карту<a>высот/параллакса</a>, но для наглядности нам нужно продемонстрировать выступающий рельеф материала, а не его имитацию. В этом поможет новая система геометрии движка. А пока применяем все настройки кнопкой<strong>Apply</strong>и сохраняем материал.</p>
79
<p>Цепочку нодов с картой Height Map, которую мы планировали использовать в качестве карты смещения, тоже придётся удалить. С появлением Nanite прежняя технология тесселяции, которая поддерживала такой тип текстур, стала неактуальной, а значит, избавляемся и от Tess Multiplier. В теории Height Map можно было бы<a>подключить</a>как карту<a>высот/параллакса</a>, но для наглядности нам нужно продемонстрировать выступающий рельеф материала, а не его имитацию. В этом поможет новая система геометрии движка. А пока применяем все настройки кнопкой<strong>Apply</strong>и сохраняем материал.</p>
80
<em>Скриншот: Unreal Editor / Epic Games</em><p>Чтобы понять, как материал будет смотреться в сцене при стандартном освещении Skylight, создадим примитив (первый раздел Shapes) в режиме Modeling. В нашем случае это будет цилиндр. Теперь в меню режима выбираем опцию<strong>Remesh</strong>и увеличиваем количество трианглов. Не стоит опасаться огромного количества полигонов: в дальнейшем геометрию можно упростить. Перетаскиваем на новый объект готовый материал (это можно сделать и на стадии создания меша, перетащив его в соответствующий слот).</p>
80
<em>Скриншот: Unreal Editor / Epic Games</em><p>Чтобы понять, как материал будет смотреться в сцене при стандартном освещении Skylight, создадим примитив (первый раздел Shapes) в режиме Modeling. В нашем случае это будет цилиндр. Теперь в меню режима выбираем опцию<strong>Remesh</strong>и увеличиваем количество трианглов. Не стоит опасаться огромного количества полигонов: в дальнейшем геометрию можно упростить. Перетаскиваем на новый объект готовый материал (это можно сделать и на стадии создания меша, перетащив его в соответствующий слот).</p>
81
Цилиндр после установки материала<em>Скриншот: Unreal Editor / Epic Games</em><p>Находим в Modeling Mode инструмент<em><strong>Displace</strong></em>(раздел Deform) и нажимаем на него. Объект сразу стал слишком деформированным из-за установок по умолчанию. В первом параметре Displacement Type выбираем<strong>Texture 2D Map</strong>. Прокрутив чуть ниже, находим слот Displacement Map и перетаскиваем в него готовую карту.</p>
81
Цилиндр после установки материала<em>Скриншот: Unreal Editor / Epic Games</em><p>Находим в Modeling Mode инструмент<em><strong>Displace</strong></em>(раздел Deform) и нажимаем на него. Объект сразу стал слишком деформированным из-за установок по умолчанию. В первом параметре Displacement Type выбираем<strong>Texture 2D Map</strong>. Прокрутив чуть ниже, находим слот Displacement Map и перетаскиваем в него готовую карту.</p>
82
<p>Теперь можно поработать с основными настройками смещения карты (Displace Intensity и Displacement Map Base Value), увеличивая или уменьшая рельефность объекта. В текущей карте изначально зафиксировано незначительное смещение, поэтому выкручивать ползунки на высокие значения нет смысла: появятся дефекты геометрии, да и чрезмерно выпуклая поверхность в данном случае будет казаться неестественной. Если бы в качестве основы был меш плоскости и текстура с каменным ландшафтом, её можно было бы "выдавить" сильнее.</p>
82
<p>Теперь можно поработать с основными настройками смещения карты (Displace Intensity и Displacement Map Base Value), увеличивая или уменьшая рельефность объекта. В текущей карте изначально зафиксировано незначительное смещение, поэтому выкручивать ползунки на высокие значения нет смысла: появятся дефекты геометрии, да и чрезмерно выпуклая поверхность в данном случае будет казаться неестественной. Если бы в качестве основы был меш плоскости и текстура с каменным ландшафтом, её можно было бы "выдавить" сильнее.</p>
83
На выделенном материале можно заметить небольшое смещение геометрии, схожее с тем, что было в Materialize<em>Скриншот: Unreal Editor / Epic Games</em><p><strong>Примечание.</strong>Закончив редактирование параметров смещения, не забудьте оптимизировать меш функцией<strong>Simplify</strong>в меню моделирования. После этого откройте свойства созданного Static Mesh и отметьте галочкой пункт<strong>Enable Nanite Support</strong>.</p>
83
На выделенном материале можно заметить небольшое смещение геометрии, схожее с тем, что было в Materialize<em>Скриншот: Unreal Editor / Epic Games</em><p><strong>Примечание.</strong>Закончив редактирование параметров смещения, не забудьте оптимизировать меш функцией<strong>Simplify</strong>в меню моделирования. После этого откройте свойства созданного Static Mesh и отметьте галочкой пункт<strong>Enable Nanite Support</strong>.</p>
84
Настройка поддержки Nanite для мешей в Unreal Engine (пункт выделен красным)<em>Скриншот: Unreal Editor / Epic Games</em><p>Существует и другой способ настройки смещения геометрии через карту смещения - создание динамического меша с помощью<a>блюпринтов</a>. Подход отличается лишь гибкостью в настройках.</p>
84
Настройка поддержки Nanite для мешей в Unreal Engine (пункт выделен красным)<em>Скриншот: Unreal Editor / Epic Games</em><p>Существует и другой способ настройки смещения геометрии через карту смещения - создание динамического меша с помощью<a>блюпринтов</a>. Подход отличается лишь гибкостью в настройках.</p>
85
<p>В результате мы создали PBR-материал дерева на основе фотоснимка, который в дальнейшем применили на простой объект. С помощью новых инструментов геометрии Unreal Engine 5 удалось подчеркнуть неоднородную поверхность материала.</p>
85
<p>В результате мы создали PBR-материал дерева на основе фотоснимка, который в дальнейшем применили на простой объект. С помощью новых инструментов геометрии Unreal Engine 5 удалось подчеркнуть неоднородную поверхность материала.</p>
86
Вид материала при закатном освещении<em>Скриншот: Unreal Editor / Epic Games</em>Вид материала при дневном освещении в тени<em>Скриншот: Unreal Editor / Epic Games</em><p>С обновлением 5.4 редактор Unreal Engine 5 стал поддерживать русский язык. Но, учитывая, что не все пользователи готовы переносить свои билды на эту версию или менять язык интерфейса, для удобства в статье представлены русскоязычные названия функций и их аналог на английском языке в скобках. Если название какой-то функции в движке ещё не перевели, сохраняется оригинальное название.</p>
86
Вид материала при закатном освещении<em>Скриншот: Unreal Editor / Epic Games</em>Вид материала при дневном освещении в тени<em>Скриншот: Unreal Editor / Epic Games</em><p>С обновлением 5.4 редактор Unreal Engine 5 стал поддерживать русский язык. Но, учитывая, что не все пользователи готовы переносить свои билды на эту версию или менять язык интерфейса, для удобства в статье представлены русскоязычные названия функций и их аналог на английском языке в скобках. Если название какой-то функции в движке ещё не перевели, сохраняется оригинальное название.</p>
87
<p>В версии 5.4 появился новый подход к тесселяции Nanite с применением карт Displacement. Эта техника подойдёт для создания поверхностей не только реалистичного<a>ландшафта</a>, но и статических сеток (мешей). Рассмотрим, как с её помощью можно подчеркнуть реализм PBR-материалов и придать поверхности осязаемый объем с помощью нодов в редакторе материалов, не прибегая к режиму моделирования.</p>
87
<p>В версии 5.4 появился новый подход к тесселяции Nanite с применением карт Displacement. Эта техника подойдёт для создания поверхностей не только реалистичного<a>ландшафта</a>, но и статических сеток (мешей). Рассмотрим, как с её помощью можно подчеркнуть реализм PBR-материалов и придать поверхности осязаемый объем с помощью нодов в редакторе материалов, не прибегая к режиму моделирования.</p>
88
<p><strong>Важно!</strong></p>
88
<p><strong>Важно!</strong></p>
89
<p>В настоящий момент тесселяция Nanite считается<strong>экспериментальной функцией движка</strong>. Представленный ниже способ поддерживают не все видеокарты. Даже при соблюдении всех условий и применении созданного материала с поддержкой Nanite, статическая сетка объекта может исчезнуть. Подобное явление у нас происходило с видеокартой Radeon RX Vega, но на ноутбуке с GeForce RTX 4070 метод работал без нареканий.</p>
89
<p>В настоящий момент тесселяция Nanite считается<strong>экспериментальной функцией движка</strong>. Представленный ниже способ поддерживают не все видеокарты. Даже при соблюдении всех условий и применении созданного материала с поддержкой Nanite, статическая сетка объекта может исчезнуть. Подобное явление у нас происходило с видеокартой Radeon RX Vega, но на ноутбуке с GeForce RTX 4070 метод работал без нареканий.</p>
90
<p>На <a>форумах</a>пользователям, столкнувшимся с этим явлением, рекомендуют обновить драйвера графического процессора, но, судя по ответам, это не всегда помогает решить проблему. Из этого можно сделать вывод, что из ситуации есть два выхода: либо перейти на более современное оборудование, либо использовать ранее описанный способ тесселяции с задействованным режимом моделирования, который по-прежнему остаётся актуальным.</p>
90
<p>На <a>форумах</a>пользователям, столкнувшимся с этим явлением, рекомендуют обновить драйвера графического процессора, но, судя по ответам, это не всегда помогает решить проблему. Из этого можно сделать вывод, что из ситуации есть два выхода: либо перейти на более современное оборудование, либо использовать ранее описанный способ тесселяции с задействованным режимом моделирования, который по-прежнему остаётся актуальным.</p>
91
<p>Перед созданием нового материала потребуется совершить несколько действий.</p>
91
<p>Перед созданием нового материала потребуется совершить несколько действий.</p>
92
<p>Во вкладке<strong>Правка</strong>(Edit) открываем меню<strong>Плагины</strong>(Plugins) и в поисковой строке набираем Nanite, после чего высветится плагин<strong>Nanite Displaced Mesh</strong>. Ставим напротив него галочку и даём редактору перезапуститься.</p>
92
<p>Во вкладке<strong>Правка</strong>(Edit) открываем меню<strong>Плагины</strong>(Plugins) и в поисковой строке набираем Nanite, после чего высветится плагин<strong>Nanite Displaced Mesh</strong>. Ставим напротив него галочку и даём редактору перезапуститься.</p>
93
<p>Как упоминалось выше, тесселяция Nanite в 5.4 пока считается экспериментальной функцией, и пользователи<a>отмечают</a>, что она может не работать при непосредственном подключении через интерфейс редактора. Гораздо надёжнее подключить её вручную, что можно сделать двумя способами.</p>
93
<p>Как упоминалось выше, тесселяция Nanite в 5.4 пока считается экспериментальной функцией, и пользователи<a>отмечают</a>, что она может не работать при непосредственном подключении через интерфейс редактора. Гораздо надёжнее подключить её вручную, что можно сделать двумя способами.</p>
94
<p>1. Ввести в консоли движка команду<strong>r.Nanite.Tessellation 1</strong>. Минус в том, что таким образом её нужно активировать каждый раз при открытии редактора.</p>
94
<p>1. Ввести в консоли движка команду<strong>r.Nanite.Tessellation 1</strong>. Минус в том, что таким образом её нужно активировать каждый раз при открытии редактора.</p>
95
<p>2. Открыть файл<strong>DefaultEngine.ini</strong>проекта, который можно найти по адресу<strong>\unreal projects\название_проекта\Config</strong>. Находим абзац<strong>[/Script/Engine.RendererSettings]</strong>и вставляем под ним следующие строки:</p>
95
<p>2. Открыть файл<strong>DefaultEngine.ini</strong>проекта, который можно найти по адресу<strong>\unreal projects\название_проекта\Config</strong>. Находим абзац<strong>[/Script/Engine.RendererSettings]</strong>и вставляем под ним следующие строки:</p>
96
<p><strong>r.Nanite.AllowTessellation=1</strong></p>
96
<p><strong>r.Nanite.AllowTessellation=1</strong></p>
97
<p><strong>r.Nanite.Tessellation=1</strong></p>
97
<p><strong>r.Nanite.Tessellation=1</strong></p>
98
<p>Возвращаемся в редактор и выбираем меш, на который в дальнейшем мы применим новый материал. Это может быть любая статическая сетка. В текущем примере мы собрали похожую сцену с пнём из предыдущей главы. В этот раз для примерки возьмём меш цилиндра (<strong>Shape_Cylinder</strong>) из набора<strong>Starter Content</strong>.</p>
98
<p>Возвращаемся в редактор и выбираем меш, на который в дальнейшем мы применим новый материал. Это может быть любая статическая сетка. В текущем примере мы собрали похожую сцену с пнём из предыдущей главы. В этот раз для примерки возьмём меш цилиндра (<strong>Shape_Cylinder</strong>) из набора<strong>Starter Content</strong>.</p>
99
<p>В <strong>Каталоге ресурсов</strong>(Content Browser) создаём папку для будущего ассета и отдельную папку для текстур. Мы возьмём тот же набор текстур дерева, сгенерированный нами ранее. Но, в целом, для этого способа подойдёт любой набор текстур, в том числе те, которые можно найти в <strong>Starter Content</strong>. Главное, чтобы в нём была карта, подходящая для свойств смещения. Помимо Displacement Map, можно использовать карту высот/параллакса или особые карты с зашифрованными каналами красного, зелёного и синего цвета (чаще всего используются в играх или в ассетах<a>Quixel</a>).</p>
99
<p>В <strong>Каталоге ресурсов</strong>(Content Browser) создаём папку для будущего ассета и отдельную папку для текстур. Мы возьмём тот же набор текстур дерева, сгенерированный нами ранее. Но, в целом, для этого способа подойдёт любой набор текстур, в том числе те, которые можно найти в <strong>Starter Content</strong>. Главное, чтобы в нём была карта, подходящая для свойств смещения. Помимо Displacement Map, можно использовать карту высот/параллакса или особые карты с зашифрованными каналами красного, зелёного и синего цвета (чаще всего используются в играх или в ассетах<a>Quixel</a>).</p>
100
<p>Создаём новый материал и заходим в <strong>Граф материалов</strong>(Material Graph). После подключения экспериментального плагина Nanite в главном ноде появится новый слот<strong>Displacement</strong>. Создаём простую структуру материала, связывая карты с соответствующими слотами, как при обычной сборке материалов. Слот карты высот соединяем со слотом<strong>Displacement</strong>, который по умолчанию пока неактивен. Чтобы включить его, переходим в общие<strong>Сведения</strong>(Details) материала (клик ЛКМ по полю графа), набираем в поисковой строке<strong>Nanite</strong>и проставляем галочки напротив пунктов<strong>Enable Tessellation</strong>и <strong>Used with Nanite</strong>.</p>
100
<p>Создаём новый материал и заходим в <strong>Граф материалов</strong>(Material Graph). После подключения экспериментального плагина Nanite в главном ноде появится новый слот<strong>Displacement</strong>. Создаём простую структуру материала, связывая карты с соответствующими слотами, как при обычной сборке материалов. Слот карты высот соединяем со слотом<strong>Displacement</strong>, который по умолчанию пока неактивен. Чтобы включить его, переходим в общие<strong>Сведения</strong>(Details) материала (клик ЛКМ по полю графа), набираем в поисковой строке<strong>Nanite</strong>и проставляем галочки напротив пунктов<strong>Enable Tessellation</strong>и <strong>Used with Nanite</strong>.</p>
101
<em>Скриншот: Unreal Editor / Epic Games</em>Схема крупным планом<em>Скриншот: Unreal Editor / Epic Games</em><p>Чуть выше этих опций находятся те самые настройки смещения:<strong>Magnitude</strong>отвечает за его интенсивность, а <strong>Center</strong>содержит центральное значение точки карты высот, которое может варьироваться от 0 до 1. Для более простой настройки этих параметров создаём<strong>Экземпляр Материала</strong>(Material Instance). Применяем экземпляр на выбранную нами ранее статичную сетку. Выделяем меш, двойным нажатием ПКМ по значку объекта в категории Static Mesh открываем его свойства в <strong>Сведениях</strong>(Details) и в новом окне ставим галочку напротив опции<strong>Включить поддержку Nanite</strong>(Enable Nanite Support), как в предыдущем примере. Сохраняем ассет, возвращаемся в сцену и видим, что контуры статической сетки стали слегка неровными.</p>
101
<em>Скриншот: Unreal Editor / Epic Games</em>Схема крупным планом<em>Скриншот: Unreal Editor / Epic Games</em><p>Чуть выше этих опций находятся те самые настройки смещения:<strong>Magnitude</strong>отвечает за его интенсивность, а <strong>Center</strong>содержит центральное значение точки карты высот, которое может варьироваться от 0 до 1. Для более простой настройки этих параметров создаём<strong>Экземпляр Материала</strong>(Material Instance). Применяем экземпляр на выбранную нами ранее статичную сетку. Выделяем меш, двойным нажатием ПКМ по значку объекта в категории Static Mesh открываем его свойства в <strong>Сведениях</strong>(Details) и в новом окне ставим галочку напротив опции<strong>Включить поддержку Nanite</strong>(Enable Nanite Support), как в предыдущем примере. Сохраняем ассет, возвращаемся в сцену и видим, что контуры статической сетки стали слегка неровными.</p>
102
<em>Скриншот: Unreal Editor / Epic Games</em><p>Чтобы усилить эффект, открываем инстанс-материал и в <strong>Сведениях</strong>(Details) ставим галочку напротив<strong>Displacement Scaling</strong>. Изменяем значения двух параметров до тех пор, пока нас не устроит конечный результат.</p>
102
<em>Скриншот: Unreal Editor / Epic Games</em><p>Чтобы усилить эффект, открываем инстанс-материал и в <strong>Сведениях</strong>(Details) ставим галочку напротив<strong>Displacement Scaling</strong>. Изменяем значения двух параметров до тех пор, пока нас не устроит конечный результат.</p>
103
<em>Скриншот: Unreal Editor / Epic Games</em><em>Скриншот: Unreal Editor / Epic Games</em><p>Можно добавить нод<strong>Texture Coordinate</strong>и связать его с картами, чтобы уменьшить рисунок текстуры на объекте, а также добавить переменные к различным характеристикам для более упрощённого<a>регулирования свойств материала в реальном времени</a>.</p>
103
<em>Скриншот: Unreal Editor / Epic Games</em><em>Скриншот: Unreal Editor / Epic Games</em><p>Можно добавить нод<strong>Texture Coordinate</strong>и связать его с картами, чтобы уменьшить рисунок текстуры на объекте, а также добавить переменные к различным характеристикам для более упрощённого<a>регулирования свойств материала в реальном времени</a>.</p>
104
<p>Данный подход к созданию PBR-материала со свойствами смещения самый простой, но одновременно упрощённый в плане точности. Тайловая текстура может обрываться на объектах в местах швов UV-развёртки, что негативно отражается на общем виде материала - в частности, на его рельефе, созданном с помощью Nanite Displacement. В этом случае лучше выбрать подход с использованием нодов<a>WorldAligned</a>, которые проецируют текстуру на статические сетки. Схема графа будет сложнее, при этом ноды<strong>WorldAlignedTexture</strong>(Normal, Reflection и прочие) можно связывать не напрямую с изображением текстуры, а с нодами<strong>TextureObject</strong>или<strong>TextureObjectParameter</strong>(для экземпляров материала), в которые уже можно добавить желаемую карту.</p>
104
<p>Данный подход к созданию PBR-материала со свойствами смещения самый простой, но одновременно упрощённый в плане точности. Тайловая текстура может обрываться на объектах в местах швов UV-развёртки, что негативно отражается на общем виде материала - в частности, на его рельефе, созданном с помощью Nanite Displacement. В этом случае лучше выбрать подход с использованием нодов<a>WorldAligned</a>, которые проецируют текстуру на статические сетки. Схема графа будет сложнее, при этом ноды<strong>WorldAlignedTexture</strong>(Normal, Reflection и прочие) можно связывать не напрямую с изображением текстуры, а с нодами<strong>TextureObject</strong>или<strong>TextureObjectParameter</strong>(для экземпляров материала), в которые уже можно добавить желаемую карту.</p>
105
Пример сборки материала коры на основе метода WorldAligned. Более подробно об этом подходе можно узнать из видеоурока в полезных ссылках ниже<em>Скриншот: Unreal Editor / Epic Games</em><p>Способ, продемонстрированный в данном руководстве, - не истина в последней инстанции, и при углублённом изучении данной темы можно выработать свой подход к созданию PBR-материалов. Совершенству нет предела, главное - помнить о том, что свойства поверхности таких материалов должны соответствовать реальным прототипам при любом освещении.</p>
105
Пример сборки материала коры на основе метода WorldAligned. Более подробно об этом подходе можно узнать из видеоурока в полезных ссылках ниже<em>Скриншот: Unreal Editor / Epic Games</em><p>Способ, продемонстрированный в данном руководстве, - не истина в последней инстанции, и при углублённом изучении данной темы можно выработать свой подход к созданию PBR-материалов. Совершенству нет предела, главное - помнить о том, что свойства поверхности таких материалов должны соответствовать реальным прототипам при любом освещении.</p>
106
<p>Хотя наличие PBR-материалов существенно повышает реалистичность компьютерной графики, у подхода есть как положительные, так и отрицательные стороны.</p>
106
<p>Хотя наличие PBR-материалов существенно повышает реалистичность компьютерной графики, у подхода есть как положительные, так и отрицательные стороны.</p>
107
<ul><li>Возможность создавать реалистичные ассеты. С ними зрителю проще идентифицировать поверхность объекта в 3D: доспехи из стали действительно кажутся стальными из-за того, что корректно переданы свойства металлов.</li>
107
<ul><li>Возможность создавать реалистичные ассеты. С ними зрителю проще идентифицировать поверхность объекта в 3D: доспехи из стали действительно кажутся стальными из-за того, что корректно переданы свойства металлов.</li>
108
<li>Поверхность не теряет своих свойств, независимо от системы освещения.</li>
108
<li>Поверхность не теряет своих свойств, независимо от системы освещения.</li>
109
<li>Универсальность. Неважно, в какой программе сделан набор PBR-текстур, его можно загрузить в любую систему рендеринга или игровой движок, что упрощает рабочий процесс.</li>
109
<li>Универсальность. Неважно, в какой программе сделан набор PBR-текстур, его можно загрузить в любую систему рендеринга или игровой движок, что упрощает рабочий процесс.</li>
110
</ul><em>Скриншот: Unreal Editor / Epic Games</em><ul><li>В готовых картах уже есть определённый набор данных, изменить которые без дополнительных манипуляций довольно сложно. Например, если художник хочет внести изменения в отдельные карты (уменьшить рельефность или усилить шероховатость), ему придётся дорабатывать их в отдельном порядке. Соответственно, другим техническим картам тоже могут потребоваться изменения.</li>
110
</ul><em>Скриншот: Unreal Editor / Epic Games</em><ul><li>В готовых картах уже есть определённый набор данных, изменить которые без дополнительных манипуляций довольно сложно. Например, если художник хочет внести изменения в отдельные карты (уменьшить рельефность или усилить шероховатость), ему придётся дорабатывать их в отдельном порядке. Соответственно, другим техническим картам тоже могут потребоваться изменения.</li>
111
<li>Несмотря на универсальность материалов, у каждого движка или системы рендеринга существует свой набор технологий (как в случае с характеристиками смещения в Unreal Engine 5), поэтому не исключены дополнительные манипуляции с шейдерами. К тому же без шаблона начинающему пользователю будет сложно собрать материал с нуля.</li>
111
<li>Несмотря на универсальность материалов, у каждого движка или системы рендеринга существует свой набор технологий (как в случае с характеристиками смещения в Unreal Engine 5), поэтому не исключены дополнительные манипуляции с шейдерами. К тому же без шаблона начинающему пользователю будет сложно собрать материал с нуля.</li>
112
<li>Создание собственных PBR-материалов потребует теоретических знаний физики в отношении освещения. Если художник допустит ошибку, материал будет выглядеть неестественно.</li>
112
<li>Создание собственных PBR-материалов потребует теоретических знаний физики в отношении освещения. Если художник допустит ошибку, материал будет выглядеть неестественно.</li>
113
</ul><ul><li><a>Энциклопедия</a>по PBR с уклоном в Unreal Engine. В документе можно найти исчерпывающую информацию по физическим свойствам различных материалов, а также значения, которые можно задать в переменных для шейдеров.</li>
113
</ul><ul><li><a>Энциклопедия</a>по PBR с уклоном в Unreal Engine. В документе можно найти исчерпывающую информацию по физическим свойствам различных материалов, а также значения, которые можно задать в переменных для шейдеров.</li>
114
<li><a>Руководство</a>по настройке шейдеров из официальной документации Unreal Engine 5.</li>
114
<li><a>Руководство</a>по настройке шейдеров из официальной документации Unreal Engine 5.</li>
115
<li><a>Подборка</a>уроков по созданию и настройке материалов в Unity.</li>
115
<li><a>Подборка</a>уроков по созданию и настройке материалов в Unity.</li>
116
<li><a>Видеоурок</a>с подробным объяснением настроек шейдеров для материалов в UE4/UE5 (канал Braytonks3D).</li>
116
<li><a>Видеоурок</a>с подробным объяснением настроек шейдеров для материалов в UE4/UE5 (канал Braytonks3D).</li>
117
<li>Подробный<a>видеоурок</a>по созданию материала в Unreal Engine 5.4 с Nanite Displacement и проецирующими нодами WorldAligned (канал O. Song).</li>
117
<li>Подробный<a>видеоурок</a>по созданию материала в Unreal Engine 5.4 с Nanite Displacement и проецирующими нодами WorldAligned (канал O. Song).</li>
118
<li><a>Лекция</a>о PBR с уклоном в Blender (канал Blender Guru).</li>
118
<li><a>Лекция</a>о PBR с уклоном в Blender (канал Blender Guru).</li>
119
-
</ul><a>Научитесь: 3D моделирование для начинающих Узнать больше</a>
119
+
</ul><a>Научитесь: 3D-моделирование для начинающих Узнать больше</a>