HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-07
1 <p>Всем привет, это Антон Агеев - автор курса<a>"Процедурный трип"</a>. На нём я учу создавать процедурные текстуры на профессиональном уровне.</p>
1 <p>Всем привет, это Антон Агеев - автор курса<a>"Процедурный трип"</a>. На нём я учу создавать процедурные текстуры на профессиональном уровне.</p>
2 <p>Один из самых популярных вопросов от студентов - как создать и настроить материал прозрачного стекла?</p>
2 <p>Один из самых популярных вопросов от студентов - как создать и настроить материал прозрачного стекла?</p>
3 <p>В прошлый раз я рассказал о создании материала<a>бетона в Substance Designer</a>, а в этом гайде покажу, как делать стекло в Substance Painter - на примере модели будильника.</p>
3 <p>В прошлый раз я рассказал о создании материала<a>бетона в Substance Designer</a>, а в этом гайде покажу, как делать стекло в Substance Painter - на примере модели будильника.</p>
4 <p>Стекло - непростой материал, потому что единого способа его сделать нет. В каждой программе оно настраивается по-разному, и поэтому часто возникает путаница.</p>
4 <p>Стекло - непростой материал, потому что единого способа его сделать нет. В каждой программе оно настраивается по-разному, и поэтому часто возникает путаница.</p>
5 <p>В статье два раздела: о создании текстуры в Substance Painter, и о её импорте и настройке в Marmoset. Методику из второго раздела я частично заимствую из<a>материала</a>художника Ognyan Zahariev.</p>
5 <p>В статье два раздела: о создании текстуры в Substance Painter, и о её импорте и настройке в Marmoset. Методику из второго раздела я частично заимствую из<a>материала</a>художника Ognyan Zahariev.</p>
6 <p><strong>Substance Painter</strong></p>
6 <p><strong>Substance Painter</strong></p>
7 <p>В моём проекте у модели два текстурных сета - для корпуса и для стекла будильника. Каждый текстурный сет использует свой шейдер, потому что в материале стекла нужна прозрачность, а в корпусе нет.</p>
7 <p>В моём проекте у модели два текстурных сета - для корпуса и для стекла будильника. Каждый текстурный сет использует свой шейдер, потому что в материале стекла нужна прозрачность, а в корпусе нет.</p>
8 <p><strong>Создание шейдера</strong></p>
8 <p><strong>Создание шейдера</strong></p>
9 <p>Чтобы создать новый шейдер текстурного сета стекла, нажимаем на Main Shader в Texture Set List:</p>
9 <p>Чтобы создать новый шейдер текстурного сета стекла, нажимаем на Main Shader в Texture Set List:</p>
10 <p>Переименуем его в разделе Shader Settings:<em></em></p>
10 <p>Переименуем его в разделе Shader Settings:<em></em></p>
11 <p>Сменим типа шейдера на pbr-metal-rough-alpha blending:</p>
11 <p>Сменим типа шейдера на pbr-metal-rough-alpha blending:</p>
12 <p>В SP 2 типа прозрачности: alpha-blending и alpha-test.<em></em><em></em></p>
12 <p>В SP 2 типа прозрачности: alpha-blending и alpha-test.<em></em><em></em></p>
13 <ul><li>В Alpha-test нет градаций. Пиксель либо полностью прозрачный, либо нет. Этот тип подходит, когда нужна жёсткая маска, - например, текстура листьев. Это более "дешёвая" альфа с точки зрения производительности.</li>
13 <ul><li>В Alpha-test нет градаций. Пиксель либо полностью прозрачный, либо нет. Этот тип подходит, когда нужна жёсткая маска, - например, текстура листьев. Это более "дешёвая" альфа с точки зрения производительности.</li>
14 <li>Alpha-blending более "тяжёлый", он поддерживает степень прозрачности и подойдёт для стекла</li>
14 <li>Alpha-blending более "тяжёлый", он поддерживает степень прозрачности и подойдёт для стекла</li>
15 </ul><p><strong>Канал Opacity</strong>После настройки шейдера добавим новый канал - opacity - в текстурный сет стекла.<em></em></p>
15 </ul><p><strong>Канал Opacity</strong>После настройки шейдера добавим новый канал - opacity - в текстурный сет стекла.<em></em></p>
16 <p>Он управляет прозрачностью в материале с помощью чёрно-белой текстуры. Чем темнее пиксель, тем он прозрачнее на модели, и наоборот.</p>
16 <p>Он управляет прозрачностью в материале с помощью чёрно-белой текстуры. Чем темнее пиксель, тем он прозрачнее на модели, и наоборот.</p>
17 <p>Для оптимизации процесса уберём каналы Metallic, Normal и AO из текстурного сета.<em></em></p>
17 <p>Для оптимизации процесса уберём каналы Metallic, Normal и AO из текстурного сета.<em></em></p>
18 <p><strong>Базовый слой</strong></p>
18 <p><strong>Базовый слой</strong></p>
19 <p>Создадим первый слой - обычный Fill Layer с базовым значением Roughness и цветом непрозрачности.<em></em></p>
19 <p>Создадим первый слой - обычный Fill Layer с базовым значением Roughness и цветом непрозрачности.<em></em></p>
20 <p>По мере загрязнения, ближе к краям, стекло будет становиться непрозрачным. Цвет в канале BaseColor в этом слое позволит настроить его оттенок.</p>
20 <p>По мере загрязнения, ближе к краям, стекло будет становиться непрозрачным. Цвет в канале BaseColor в этом слое позволит настроить его оттенок.</p>
21 <p><strong>Roughness</strong></p>
21 <p><strong>Roughness</strong></p>
22 <p>Создаём детализацию в канале Roughness, отключаем все остальные. Значение Roughness в слое выставляем на 1.<em></em></p>
22 <p>Создаём детализацию в канале Roughness, отключаем все остальные. Значение Roughness в слое выставляем на 1.<em></em></p>
23 <p>Теперь добавляем маску для слоя.</p>
23 <p>Теперь добавляем маску для слоя.</p>
24 <ol><li>Создаем процедурную текстуру Scratches generator.</li>
24 <ol><li>Создаем процедурную текстуру Scratches generator.</li>
25 </ol><p>Настраиваем её так, чтобы было похоже на царапины на стекле - тонкие и прямые. Уменьшим их количество, чтобы они не были слишком навязчивыми. И понижаем прозрачность слоя на 50%.<em></em></p>
25 </ol><p>Настраиваем её так, чтобы было похоже на царапины на стекле - тонкие и прямые. Уменьшим их количество, чтобы они не были слишком навязчивыми. И понижаем прозрачность слоя на 50%.<em></em></p>
26 <p>2. Создаём якорь над царапинами чтобы копировать эффект в другие слои. Позже добавим эти царапины в normal другого слоя.<em></em></p>
26 <p>2. Создаём якорь над царапинами чтобы копировать эффект в другие слои. Позже добавим эти царапины в normal другого слоя.<em></em></p>
27 <p>3. Следующие три слоя - микс из гранж-текстур, с помощью которых мы добавляем разные интересные детали: отпечатки пальцев, разводы и пыль.<em></em></p>
27 <p>3. Следующие три слоя - микс из гранж-текстур, с помощью которых мы добавляем разные интересные детали: отпечатки пальцев, разводы и пыль.<em></em></p>
28 <p>4. Делаем маску более интенсивной по краям и прозрачной в центре.<em></em></p>
28 <p>4. Делаем маску более интенсивной по краям и прозрачной в центре.<em></em></p>
29 <p>Дублируем слой и используем разные бленды для настройки интенсивности.<em></em></p>
29 <p>Дублируем слой и используем разные бленды для настройки интенсивности.<em></em></p>
30 <p>5. Повышаем резкость маски с помощью Sharpen.<em></em></p>
30 <p>5. Повышаем резкость маски с помощью Sharpen.<em></em></p>
31 <p>6. И создаём якорь для маски целиком.<em></em></p>
31 <p>6. И создаём якорь для маски целиком.<em></em></p>
32 <p>Он понадобится в следующем слое - из него же мы создадим маску прозрачности.<em></em></p>
32 <p>Он понадобится в следующем слое - из него же мы создадим маску прозрачности.<em></em></p>
33 <p>Готово! Финальный стэк эффектов Roughness выглядит так:<em></em></p>
33 <p>Готово! Финальный стэк эффектов Roughness выглядит так:<em></em></p>
34 <p>Детали в нём намного проще создавать и настраивать до того, как мы сделаем стекло прозрачным, - поэтому мы и создаём материал в таком порядке.</p>
34 <p>Детали в нём намного проще создавать и настраивать до того, как мы сделаем стекло прозрачным, - поэтому мы и создаём материал в таком порядке.</p>
35 <p><strong>Opacity</strong></p>
35 <p><strong>Opacity</strong></p>
36 <p>В следующем слое создаём маску прозрачности.<em></em></p>
36 <p>В следующем слое создаём маску прозрачности.<em></em></p>
37 <p>На этом слое отключаем все каналы кроме opacity, а значение прозрачности устанавливаем на 0,15-0,18.<em></em></p>
37 <p>На этом слое отключаем все каналы кроме opacity, а значение прозрачности устанавливаем на 0,15-0,18.<em></em></p>
38 <p>Этот параметр задаёт максимальную прозрачность стекла. В реальной жизни оно всегда немного непрозрачное, поэтому не стоит устанавливать параметр на 0.</p>
38 <p>Этот параметр задаёт максимальную прозрачность стекла. В реальной жизни оно всегда немного непрозрачное, поэтому не стоит устанавливать параметр на 0.</p>
39 <p>Стекло уже выглядит неплохо, но детали и грязь видны только на блике. Когда его нет, стекло кажется абсолютно прозрачным, потому что в канале Opacity сейчас однородный цвет.</p>
39 <p>Стекло уже выглядит неплохо, но детали и грязь видны только на блике. Когда его нет, стекло кажется абсолютно прозрачным, потому что в канале Opacity сейчас однородный цвет.</p>
40 <p>Для того, чтобы материал по краям циферблата был непрозрачным, добавим в слой opacity чёрную маску и скопируем в неё информацию из слоя Roughness с помощью якоря:<em></em></p>
40 <p>Для того, чтобы материал по краям циферблата был непрозрачным, добавим в слой opacity чёрную маску и скопируем в неё информацию из слоя Roughness с помощью якоря:<em></em></p>
41 <p>С помощью levels в якоре инвертируем её и увеличиваем контрастность маски, чтобы уменьшить площадь загрязнения.<em></em></p>
41 <p>С помощью levels в якоре инвертируем её и увеличиваем контрастность маски, чтобы уменьшить площадь загрязнения.<em></em></p>
42 <p>Финальная маска слоя и канал Opacity выглядят так:<em></em></p>
42 <p>Финальная маска слоя и канал Opacity выглядят так:<em></em></p>
43 <p>Добавление текстуры в канал Opacity делает края непрозрачными</p>
43 <p>Добавление текстуры в канал Opacity делает края непрозрачными</p>
44 <p>Добавляя текстуру в канал Opacity делаем края непрозрачными.</p>
44 <p>Добавляя текстуру в канал Opacity делаем края непрозрачными.</p>
45 <p>Цвет непрозрачности задаём в нижнем слое, Glass BM:<em></em></p>
45 <p>Цвет непрозрачности задаём в нижнем слое, Glass BM:<em></em></p>
46 <p><strong>Height</strong></p>
46 <p><strong>Height</strong></p>
47 <p>В этом слое настроим Height по маске царапин, чтобы на блике они смотрелись объёмнее.<em></em></p>
47 <p>В этом слое настроим Height по маске царапин, чтобы на блике они смотрелись объёмнее.<em></em></p>
48 <p><strong></strong><strong>Экспорт</strong></p>
48 <p><strong></strong><strong>Экспорт</strong></p>
49 <p>Создадим новый шаблон, потому что у нас в модели нестандартный набор текстур. Стекло в Marmoset настраивается иначе, поэтому мне понадобятся не все каналы.</p>
49 <p>Создадим новый шаблон, потому что у нас в модели нестандартный набор текстур. Стекло в Marmoset настраивается иначе, поэтому мне понадобятся не все каналы.</p>
50 <p>В проекте оставим только Normal, Roughness и маску Opacity.<em></em></p>
50 <p>В проекте оставим только Normal, Roughness и маску Opacity.<em></em></p>
51 <p><strong></strong>Обратите внимание: используем альфу из канала, а не сам канал.</p>
51 <p><strong></strong>Обратите внимание: используем альфу из канала, а не сам канал.</p>
52 <p><strong></strong><strong></strong>Информация из альфа-канала идентична маске слоя, она понадобится в Marmoset для настройки материала. Но есть загвоздка: в Marmoset обратная логика маски прозрачности.<em></em></p>
52 <p><strong></strong><strong></strong>Информация из альфа-канала идентична маске слоя, она понадобится в Marmoset для настройки материала. Но есть загвоздка: в Marmoset обратная логика маски прозрачности.<em></em></p>
53 <p>Прозрачный пиксель - черный, непрозрачный - белый</p>
53 <p>Прозрачный пиксель - черный, непрозрачный - белый</p>
54 <p><strong></strong><strong></strong>Чтобы прозрачность в SP отображалась корректно, отключим на время этот эффект. Обратно его можно включить во время экспорта, чтобы в результате маска прозрачности была правильной.<em></em></p>
54 <p><strong></strong><strong></strong>Чтобы прозрачность в SP отображалась корректно, отключим на время этот эффект. Обратно его можно включить во время экспорта, чтобы в результате маска прозрачности была правильной.<em></em></p>
55 <p><strong></strong><strong>Marmoset</strong></p>
55 <p><strong></strong><strong>Marmoset</strong></p>
56 <p>В стандартном шейдере Marmoset прозрачность подключается в разделе Transparency.<em></em></p>
56 <p>В стандартном шейдере Marmoset прозрачность подключается в разделе Transparency.<em></em></p>
57 <p><strong></strong>На выбор есть несколько типов прозрачности. Ни один из них не работает так же, как в Substance Painter.</p>
57 <p><strong></strong>На выбор есть несколько типов прозрачности. Ни один из них не работает так же, как в Substance Painter.</p>
58 <p>Единственный способ добиться схожего результата - использовать два типа прозрачности - один поверх другого - на разных геометриях.</p>
58 <p>Единственный способ добиться схожего результата - использовать два типа прозрачности - один поверх другого - на разных геометриях.</p>
59 <p>Поэтому при экспорте модели в Marmoset создаём два стекла и смещаем их друг относительно друга, чтобы избежать пересечений геометрии.<em></em></p>
59 <p>Поэтому при экспорте модели в Marmoset создаём два стекла и смещаем их друг относительно друга, чтобы избежать пересечений геометрии.<em></em></p>
60 <p>В Marmoset создаём 2 материала для обоих стёкол</p>
60 <p>В Marmoset создаём 2 материала для обоих стёкол</p>
61 <p><strong></strong>Первый будет использовать тип прозрачности add, а второй - dither.<em></em></p>
61 <p><strong></strong>Первый будет использовать тип прозрачности add, а второй - dither.<em></em></p>
62 <p><strong>Add</strong></p>
62 <p><strong>Add</strong></p>
63 <p>Тип Add игнорирует канал цвета Albedo - он делает цвет полностью прозрачным. Отражения при этом рендерятся поверх задней геометрии.</p>
63 <p>Тип Add игнорирует канал цвета Albedo - он делает цвет полностью прозрачным. Отражения при этом рендерятся поверх задней геометрии.</p>
64 <p>В результате детализация в Roughness и в Normal будет видна на блике, но маску прозрачности использовать не получится. Параметр Alpha в настройках Transparency делает прозрачнее только отражения.<em></em></p>
64 <p>В результате детализация в Roughness и в Normal будет видна на блике, но маску прозрачности использовать не получится. Параметр Alpha в настройках Transparency делает прозрачнее только отражения.<em></em></p>
65 <p>В этом материале используем только карту нормалей и Roughness</p>
65 <p>В этом материале используем только карту нормалей и Roughness</p>
66 <p><strong>Dither</strong></p>
66 <p><strong>Dither</strong></p>
67 <p>Прозрачность Dither рендерит Roughness, Normal и Albedo. Для каждого из каналов степень прозрачности пикселя задаётся чёрно-белой маской. Для всех каналов она одинаковая.</p>
67 <p>Прозрачность Dither рендерит Roughness, Normal и Albedo. Для каждого из каналов степень прозрачности пикселя задаётся чёрно-белой маской. Для всех каналов она одинаковая.</p>
68 <p>Это значит, что если в Albedo пиксель прозрачный, то отражений тоже не будет видно.<em></em></p>
68 <p>Это значит, что если в Albedo пиксель прозрачный, то отражений тоже не будет видно.<em></em></p>
69 <p>В материале glass_dither используем текстуру Roughness и маску прозрачности</p>
69 <p>В материале glass_dither используем текстуру Roughness и маску прозрачности</p>
70 <p>Регулируем оттенок грязи цветом Albedo, так же, как в SP. Там мы делали это через слой, а здесь настроим цвет в самом материале.</p>
70 <p>Регулируем оттенок грязи цветом Albedo, так же, как в SP. Там мы делали это через слой, а здесь настроим цвет в самом материале.</p>
71 <p>Готово!</p>
71 <p>Готово!</p>
72 <p>Можно включить видимость всех слоёв и посмотреть, как они выглядят вместе:<em></em></p>
72 <p>Можно включить видимость всех слоёв и посмотреть, как они выглядят вместе:<em></em></p>
73 <p>Если хочешь научиться текстурированию на профессиональном уровне, бронируй место на<a>курс</a>по процедурным текстурам - он стартует 1 ноября.</p>
73 <p>Если хочешь научиться текстурированию на профессиональном уровне, бронируй место на<a>курс</a>по процедурным текстурам - он стартует 1 ноября.</p>
74 <p>Узнать все подробности и забронировать место можно на нашем сайте:<a>https://www.school-xyz.com/texture</a></p>
74 <p>Узнать все подробности и забронировать место можно на нашем сайте:<a>https://www.school-xyz.com/texture</a></p>
75 <p>Успехов!</p>
75 <p>Успехов!</p>
76 <p>Хочешь получать лучшие статьиот XyZ раз в неделю?</p>
76 <p>Хочешь получать лучшие статьиот XyZ раз в неделю?</p>
77 <p>Подпишись на рассылку XyZ</p>
77 <p>Подпишись на рассылку XyZ</p>
78 <p>Нажимая на кнопку, вы соглашаетесь с условиями обработки данных</p>
78 <p>Нажимая на кнопку, вы соглашаетесь с условиями обработки данных</p>
79  
79