Меню

Нажмите ESC для закрытия

Пропсы3 декабря 2025 г.

Создание шейдера для омлета в сцене с завтраком

Павел Сомоги поделился процессом создания шейдера Scramble Eggs, рассказав, как он смоделировал тарелку и форму с помощью сферы, которую сжал и растянул, а также как добавил рассеивание под поверхностью и увеличил шероховатость для более реалистичного вида.

Создание шейдера для омлета в сцене с завтраком
Создание шейдера для омлета в сцене завтрака - изображение 1

Введение

Привет, меня зовут Павел Сомоги, и я 3D-универсал из Польши. Я открыл для себя Blender более 20 лет назад, когда один из моих профессоров в университете показал мне это крутое программное обеспечение с открытым исходным кодом, работающее на Linux. Меня всегда интересовала компьютерная графика, но впервые у меня появилась возможность поработать с настоящим 3D-софтом. И с тех пор я «подсел».

Моя специальность не была связана с компьютерной графикой, поэтому долгое время Blender был для меня хобби, которым я занимался параллельно с работой инженером-проектировщиком электроники. Но я относился к этому серьёзно, тратя много свободного времени на обучение, просмотр туториалов и эксперименты со своими проектами.

Мои растущие навыки в 3D также пригодились на основной работе, поскольку я создавал множество 3D-визуализаций для маркетинговых материалов и технической документации в компании, в которой работал. Через некоторое время я стал достаточно опытным, чтобы работать над визуальными эффектами для нескольких короткометражных художественных фильмов.

В частности, я был руководителем 3D-отдела в «Skywatch», научно-фантастическом короткометражном фильме Колина Леви, с участием Урии Шелтона, Зака Кэллисона и Джуда Лоу, с Сандро Блаттнером в качестве супервайзера визуальных эффектов. Это был фантастический опыт, и я многому научился.

В то время я всё ещё работал инженером, но около четырёх лет назад решил сменить сферу деятельности и с тех пор работаю исключительно 3D-художником. Я создавал анимированную рекламу для мобильных игр, в основном стилизованную анимацию с персонажами, где я делал собственные модели персонажей, риггинг, анимацию, а для многих рекламных роликов я также занимался монтажом и саунд-дизайном. Но сейчас я заинтересован в том, чтобы вернуться к VFX, если появится такая возможность.

Шейдер для омлета

Мой шейдер для омлета и модель стали началом немного большего проекта — сцены завтрака. Но яйца были отправной точкой. Я думал о создании нескольких предметов еды для использования в будущих проектах, поэтому начал делать 3D-сканы различных продуктов питания и блюд.

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

Создание шейдера для омлета в сцене завтрака - изображение 2

Я понял, что проблема была не в форме, а в шейдере, встроенных отражениях и отсутствии подповерхностного рассеивания, из-за чего всё выглядело скорее как раскрашенный пластиковый реквизит, а не как настоящая еда. Ещё одной проблемой был контакт с тарелкой, слишком мягкий, как будто яйца расплавились в ней, а встроенная контактная тень создавала проблемы вместо того, чтобы помогать.

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

Рабочий процесс

Мой процесс был следующим: сначала я смоделировал тарелку и добавил сферу, которую сжал и растянул, чтобы придать ей форму, похожую на ту, что была в скане, сначала в режиме редактирования, затем перешёл в режим скульптинга.

Я не пытался точно соответствовать референсу, я стремился просто сделать что-то естественное. Как только я остался доволен формой, я добавил несколько крошечных капель, чтобы сделать её более органичной и придать ей немного более интересный вид.

Создание шейдера для омлета в сцене завтрака - изображение 3

Когда я был доволен формой, я сделал автоматическую ретопологию с небольшим размером вокселей, потому что хотел иметь достаточно геометрии для некоторого шумового смещения. С ретопологией я получил равномерную плотность сетки, поэтому смещение будет одинаковым на всей поверхности. Я использовал смещение, потому что чувствовал, что лепка всех этих деталей вручную была бы пустой тратой времени.

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

Создание шейдера для омлета в сцене завтрака - изображение 4

На этом этапе пришло время заняться шейдером. Я должен, вероятно, уточнить, когда я говорю о шейдере, я имею в виду всю настройку материала. Я использую Principled BSDF шейдер в 99% случаев в своей работе.

Когда вы делаете реалистичные рендеры, наличие хорошей референции необходимо. У меня были свои фотографии, которые я сделал для процесса сканирования, но я также искал в интернете больше примеров. Я стремился к тому, чтобы омлет был во французском стиле, действительно мягкий и жидкий. Когда я готовил завтрак, я использовал слишком сильный огонь, поэтому у меня получились более крупные кусочки яичного белка, чем следовало бы, но в 3D у меня была свобода сделать работу лучше.

Подход был довольно прост: сначала я добавил текстуру шума, чтобы смешать два оттенка жёлтого, один более глубокий и тёмный, ближе к цвету желтка, и один более кремового цвета. Для повышения контраста между цветами добавлен узел Map Range.

Создание шейдера для яичницы для сцены завтрака — изображение 5

Затем я добавил ещё одну текстуру шума для создания крапинок из несмешанных яичных белков.

Создание шейдера для яичницы для сцены завтрака — изображение 6

Я использовал эту карту для управления ещё одним узлом «Mix Color» с почти белым цветом, и у меня получилась базовая настройка цвета, которая меня устроила.

Создание шейдера для яичницы для сцены завтрака — изображение 7

Но, очевидно, просто подключить его к входу цвета стандартного принципиального шейдера было недостаточно. Я снова получил то пластиковое качество, которое видел на своём скане.

Создание шейдера для яичницы для сцены завтрака — изображение 8

Это совсем не аппетитно. Но когда мы добавляем подповерхностное рассеивание и увеличиваем значение Roughness, всё начинает выглядеть намного лучше.

Создание шейдера для яичницы для сцены завтрака — изображение 9

Добавление деталей

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

Создание шейдера для яичницы для сцены завтрака — изображение 10

Я чувствовал, что приближаюсь к цели, но теперь всё казалось немного слишком гладким. На поверхности не хватало немного больше деталей. Поэтому я добавил узел Bump и подключил свою цветовую настройку ко входу высоты. Это помогло, но узор был немного слишком однородным, и я не хотел, чтобы выпуклости точно следовали цветовым узорам.

Поэтому я добавил третий шум, чтобы смешать его с двумя предыдущими. Я изменил тип на Ridged Multifractal, чтобы получить более глубокие бороздки, которые получились бы при смешивании яиц. В очередной раз узел Map Range использовался для сжатия значений, чтобы получить нужный мне узор. В этом нет никакой науки, я перемещаю входные значения, пока не получу то, что хочу.

Создание шейдера для яичницы для сцены завтрака — изображение 11

Я использовал режим Overlay в узле «Mix Color» и снова поэкспериментировал со значением смешивания, пока оно не стало правильным. И на этом часть про шейдеры заканчивается. Я решил сделать тарелку тёмной, чтобы яйца хорошо контрастировали.

Создание шейдера для яичницы для сцены завтрака — изображение 12

Окончательная настройка шейдера оказалась довольно простой:

Создание шейдера для яичницы для сцены завтрака — изображение 13

Чтобы лучше продать иллюзию, мне нужен был последний штрих. Я смоделировал несколько крошечных трубочек, хаотично расплющил их в скульптурном режиме, добавил зелёный шейдер с некоторой прозрачностью, и это дало мне красиво выглядящий шнитт-лук. Затем я использовал геометрические узлы, чтобы посыпать им яйца, и блюдо было готово.

Создание шейдера для яичницы для сцены завтрака — изображение 14

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

Заключение

Я не могу сказать, что использовал какие-то особые приёмы в процессе, но поскольку модель яиц всегда предназначалась для использования только в Blender, я не стал заморачиваться с развёртыванием UV или запеканием текстур. Это огромная экономия времени. Как я уже упоминал, геометрия довольно плотная, более 96 тысяч вершин, но не до такой степени, чтобы заметно влиять на производительность.

Blender справляется с этим очень хорошо. Так что мне не пришлось прибегать к каким-либо уловкам, чтобы добиться довольно сложного вида. Но я сэкономил время, не оптимизируя и не ретопологизируя сетку. Я думаю, что самое важное в создании правдоподобных шейдеров — это использование хороших референсов, желательно с разным освещением, чтобы увидеть, как свет влияет на поверхности, которые вы пытаетесь воссоздать в 3D.

И не забывайте о подповерхностном рассеивании, когда вы создаёте еду или другие органические модели. Вам действительно нужна эта мягкость. Для меня добиться этого — это суть таких материалов. В остальном ознакомьтесь с процедурными текстурами, посмотрите, какие разные виды вы получаете, меняя значения, а затем ищите эти узоры и формы в объектах в реальной жизни. Вы будете удивлены, сколько можно сделать только с помощью Perlin Noise и Voronoi.

Я не помню никаких особых проблем с яйцами. Пришлось немного подправить значения, чтобы всё выглядело правильно, но в целом всё было довольно просто. Вероятно, потребовалось 2–3 часа, чтобы сделать большую часть работы, а затем ещё два часа на изменение освещения и игру с ползунками, чтобы всё выглядело правильно в разных условиях.

Но вся сцена завтрака — это отдельная история. На неё ушло около двух недель, потому что всё в сцене, кроме листьев рукколы и телефона, было сделано с нуля для этого проекта. Весь реквизит, включая стол и стулья на заднем плане, и все шейдеры для этих моделей были полностью процедурными.

Так что были некоторые проблемы и разные подходы. Шейдер хлеба — самый сложный во всей сцене. Я использовал симуляцию ткани, чтобы сделать хрустящий бекон, и симуляцию мягких тел, чтобы размять помидоры. Было весело.

Для начинающих 3D-художников я бы сказал: не сдавайтесь и наберитесь терпения. Нужно освоить много разных навыков. Не торопитесь, получайте удовольствие от изучения мелочей. Смотрите туториалы, в интернете доступно неограниченное количество информации, особенно для Blender.

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

Вам не нужно моделировать полноразмерного Оптимуса Прайма или фотореалистичного Райана Гослинга на мотоцикле в качестве своего первого персонального проекта. Начните с малого и, возможно, попробуйте совместить изучение 3D с другими своими интересами, так будет легче продолжать.

Если вы любите игры, попробуйте воссоздать что-нибудь простое из любимой игры, реквизит или оружие. Любите музыку? Может быть, сделайте абстрактное арт-движение, реагирующее на песню, которая вам нравится. Или если вы любите еду, попробуйте создать яичницу на тарелке.

Павел Сомоджи, 3D Generalist

Интервью проведеноГлорией Левин

Автор: Pawel Somogyi

Материал подготовлен на основе статьи 80.lv. Перевод — Skills Up.