Статьи: Эксклюзив

Making Of "Lemon Cup"

Для начала хотел бы отметить один важный момент. Это описание не является единственно правильным путём получения лучшего результата. Кто-то возможно найдёт его полезным но кое что обойдёт или дополнит, кто-то вообще может посчитать ошибочным в корне. Я же подчёркиваю, это просто моя серия решений поставленной задачи и возникших по ходу работы проблем. Вспоминая себя лет 5 назад, вглядываясь в чужие работы, я спрашивал себя - как проходит работа в целом, на сколько автор точно знает что у него должно быть в финале и как идёт к этому? Возможно кто-то из новичков задаётся тем же вопросом, вот ради этого я и опишу здесь не только положение финальной сцены, а и то как пришёл к ней. 


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

Логически всю работу можно разделить на три условных части: 

1. Основа - моделируем собственно сам стакан, кусочки льда, лимоны. Настройка временных материалов, окружение. Тестовые рендеры. 
2. Ковка композиции - компоновка системы освещения сцены, работа с массивами объектов VrayScatter. Первые рендеры с пост-обработкой. 
3. Рендер & Пост-обработка - детализирование модели лимонов, настройка материалов и рендера для финальной версии. Пост-обработка во Fusion. 

Часть 1. "Основа". 

Для начала я на скорую руку, но довольно точно, передал основные элементы сцены по тому образу что был в голове и небольшом фото референсе. Первым был сам стакан. 

Моделирование стакана. 
Line контур + Lathe модификатор и небольшая доводка в Edit Poly. Всё просто и быстро, стакан нужен был самый простой. Line с вершинами Bezie и Corner Bezie имел 6 ступеней сглаживания, а модификатор Lathe задал 32-ух сегментное вращение. 

Получилась сетка с довольно хорошим полигонажем, осталось только снять пару фасок на кромках и немного "уплотнить" сетку и чуть чуть скорректировать толщину стекла на донышке. MeshSmooth с 2 интерациями завершает стак модификаторов. 

Моделирование льда. 


Делать идеальные кубики подтаявшего льда я не захотел, нужно было что-то с формами по сложней. Метод моделирования подсмотрел в одном известном уроке моделирования скалы, напомню основные этапы. 
Создаём несколько замкнутых рубленных Spline-форм с Corner вершинами, расставляем их примерно как на изображении и применяем Extrude. 

В итоге мы должны добиться небольшого пересечения геометрий между собой. Конвертируем в Editable Mesh и аттачим друг к другу через один, чтобы получились два объекта. Это упростит операции с булином. Собственно теперь через простой Boolean в режиме Union "склеиваем" одну серию сплайнов с другой и сразу полученное конвертируем в Editable Mesh снова и накладываем модификатор Subdivide. 

Далее добавим деталей дисплейсом. Накладываем модификатор UVW Mapping в режиме Box, и сверху кидаем модификатор Displace. В настройках последнего отмечаем галочкой Luminance Center, в слот Map поля Image мы кладём битмапу любого растрового изображения (ч/б) скалы, гранита, мрамора - можно экспериментировать, и что понравится то и оставлять. Силу дисплейса так же подбираем по своему усмотрению. Далее накладываем MeshSmooth, Noise - в моём случае было три пары этих модификаторов, создавая детали всё мельче и мельче.

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

Последним были дольки лимона. Первые версии были совсем простые, Sphere с слайсом на 14 градусов, развёрткой UVW Unwrap для корректного маппинга и две текстуры найденные без труда в интернете. 

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

Жидкость. 


Всё очень просто, выбираем стакан, выделяем в центре окружность полигонов на внутренней стороне донышка, и нажимая кнопки [Grow] и [Shrink] примерно подбираем уровень жидкости и делаем копию выделенных полигонов в отдельный объект. Последними штрихами был оператор [Cap] из Edit Poly чтобы создать поверхность жидкости и тут же через [Bevel] продавливаем немного поверхность имитируя эффект поверхностного натяжения воды. MeshSmooth второй интерации. 

Отмечу один нюанс о жидкости и стакане. Жидкость наша должна немного заходить под поверхность стекла исключая "воздушную прослойку" между моделью стекла и жидкости. Так как жидкость создавалась на основе сетки стекла, т.е. вершины стенок стакана совпадают с вершинами сетки жидкости, нам достаточно на объект "жидкость" наложить Shell с совсем маленьким влиянием и отмеченной галочкой "Straighten Corners". Цель - в одном из боковых окон проекции, увидеть что объект жидкость начала "экспансию" под поверхность внутренних стенок модели стакана.

Затем накладываем Edit Poly модификатор и в режиме редактирования Element выделяем "внутренний контур" образовавшийся после модификатора Shell, и удаляем его, оставив только контур который входит под поверхность стенок модели стакана. Проверяем ориентацию полигонов модели жидкости, после всех изменений и по необходимости пользуемся модификатором Normal либо кнопкой [Flip] при Edit Poly. 

И так, на данном этапе у нас уже есть стакан, внутри него уложены модели льдинок и лимона, а так же залита жидкость. Сама сцена для первых тестов очень простая - плейн размерами чтоб покрывал вид из камеры и один VrayLight светящий на стакан из-за "спины" камеры, собственно сама камера - VRayPhysicalCamera. 
В качестве заполнения вакуума окружающей среды я воспользовался, довольно цветастой с тёмными почти чёрными пятнами, ХДРкой. Как ни странно, это карта метро, ничего похожего на клуб или бар найти не получилось. 

Её я прогрузил в слоты GI Enviroment (skylight) override и Reflection/refraction override с Multiplier по 30. 
Для GI связка Brute+Brute (люблю его за простоту настроек и лёгкость контроля качества), Антиалиазинг отключен, Image Sampler переключен на DMC. 

Материалы объектов на первых порах так же совсем простые и ничего особенного. Плейн подложка стандартный серый виреймат c картой царапин в канал Bump, стакан VrayMtl белого цвета, практически белый колорбоксы для Reflect и Refract, glossiness в обоих полях 1.0, для рефлекшн отмечена галочка Fresnel и значения на первых тестах варьировались от 1.8 до 4. IOR (он же "индекс преломления") для поля refraction я взял табличный для стекла - 1,51714. Галочка Affect shadows так же была отмечена. Материал для лимонов VrayMtl, в Maps дифьюз текстура среза лимона, Opacity такая же текстура черно-белого цвета. Для корочки лимонов материал VrayMtl, и только растровое изображение в Diffuse. Материал жидкости схожий с материалом стекла, отличия только в немного меньшей силе отражений а IOR я взял так же табличный для жидкости 1,333. 
Материал льда стал моим первым камнем преткновения в работе. В начале первые тесты я пытался его настроить методом тыка и тестов на рендере. Что из этого вышло видно на последующих картинках, в последствии я скачал один из понравившихся мне готовых материалов льда на сайте vray-materials.de и лишь немного его адаптировал под мою сцену. 
Скриншоты не привожу, всё на самом деле очень примитивно, всё ради скорости рендера и наглядности. 

Вот несколько из первых тест-рендеров, которые конечно сейчас выглядят полнейшим ужасом но тогда они довольно неплохо вдохновили на дальнейшую работу над сценой. 
По сюжету сцены на картинке должен преобладать сильнейший DOF с фокусом на толщи жидкости в стакане. Так для рендеров с начала я подключил и настроил в черновом качестве "живой" DOF от VRayPhysicalCamera, т.е. просчёт глубины резкости самой камерой во время рендера. 

На этом тест-проходе, я решил уже добавить мокрый след от стакана на поверхности столешницы. На деле это совсем немного изменённый в Edit Poly объект Tube не замкнутый с слайсом на 250 градусов и очень малой высотой. Так же добавил ещё один источник света под 45 градусов к первому стоящему за камерой. И решил немного усложнить модельку лимона добавив заусеницу на срезе. 

Тёмное пятно выше и слева от стакана, это стоящий за гранью ГРИП ещё один стакан:) не придумал ничего лучше как разнообразить пустой хоть и размытый задний план. 

Где-то после этой стадии, что называется "Остапа понесло...". 

 

Часть 2. "Ковка композиции". 


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

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

Группа основных, задающих тон всей сцене, состоит из 5 VrayLight сферической формы и насыщенными цветами, два левых холодных синих тонов, три справа различных градаций красного. 

Больший из вирейлайтов пришлось исключить из списка влияний на модель стакана, т.к. давал очень большой и некрасивый резкий блик. Однако чтобы гамма стакана не выбивалась из общего ритма, недостаток света после исключения вирейлайта был компенсирован простым TargetSpot того же цвета и примерно равной силы с зоной влияния [только стакан]. В целом многие источники света приходилось исключать из влияний на определённые части сцены и заменять альтернативными. 

Массивы моделей каплей и пузырьков газа. 
Следующий шаг в работе над композицией был решением дополнить окружение каплями жидкости на столешнице и на поверхности сухой части стенок стакана. Так же решил добавить подтёк жидкости в области соприкосновения столешницы и донышка стакана. 
Первое было решено осуществлять посредством плагина VrayScatter. Для этого я подготовил две модели каплей, одна чуть чуть вытянутая, для размещения на стакане, и одна в форме сплюснутой сферы для столешницы. Самые обыкновенные Sphere на 18 сегментов, слегка помятые через FFD и немного Noise - по вкусу. 

Основные настройки скаттера для капель на столешницу - максимальное число 20`000, распространение через маску по карте Noise (Fractal, Size:10, Hi 0.835, Lo 0.355, Lvls 10), радиус для коллизий 1см, обе галочки о получении и генерации коллизий отмечены, рандомизированное вращение на 360' по оси Z, разница в скалировании от 6 до 30 по карте аналогичной распространению.
Для капель на стакан всё аналогично за исключением максимального числа в 1500 и скалирования от 13 до 24%. 
Материал для капель, VrayMtl с чёрным дифьюзом, практически белым цветом в колорбоксе рефлекта и рефракта, глоссинесс по 1.0, IOR 1,6 и отражения френелевские. Галочка Affect Shadows так же отмечена. 

После этого тест-прогона рендером я решил добавить ещё и ровные сферки пузыриков газа на "мокрую" поверхность стенок стакана имитируя оседающий СО2 газ. 
Настройки VrayScatter для них схожи с двумя предыдущими за исключением максимального кол-ва к которому я пришёл после нескольких пре-тестов - 9`000 и скалирование от 5,2 до 7% и радиус к столкновению в 0,5. 
Забегая на перёд, на предпоследних стадиях доводки сцены, практически когда работа уже велась только над пост-обработкой, я решил добавить ещё и четвёртый VrayScatter который бы имитировал скопление выдавленных большего размера пузырьков газа со стенок к поверхности. (красного цвета на изображении ниже) 

Настройки практически идентичные настройкам для пузырьков газа на стенках сосуда (3ий вирейСкаттер) с одним важным отличием. В слот Mask поля Scale я загрузил карту Gradient Ramp с простым и стандартным чёрно-белым переходом вертикально ориентированным (белый сверх). Это дало возможность настроить размеры пузырьков газа по мере их приближения к поверхности. Более крупные пузырьки воздуха сильней выталкивает к поверхности. 

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

В качестве объектов-баз или "эмиттеров" я использовал копии объектов на поверхности которых нужно было создавать массивы VrayScatter, с удалёнными частями полигональной сетки где распространение массива нужно не было. Так например для создания наружных капель на стакане, я скопировал стакан и удалил полностью внутреннюю поверхность, полностью донышко и верхнюю кромку. В качестве эмитера пузырьков газа использовал опять же копию стакана но из сетки от него осталась лишь часть внутренней поверхности которая сопоставима с уровнем жидкости в стакане. Для пузырьков газа около поверхности, я использовал совсем тоненький ободок сетки внутренней поверхности стакана. На изображении ниже, Emitter 1, 2 и 3 соответственно.

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

После этих всех дополнений я решил первый раз в этой работе сделать пробный пост. Пост-обработка выполнялась в пакете Eyeon Fusion 6, и сводилась к работе с цветностью и уровнями контраста, в конце дополнялось уже постовым DOF`ом. К описанию процесса пост-обработки я далее вернусь более подробно. 
Вышло что-то примерно такое. 

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


Часть 3. "Рендер & Пост-обработка". 


Подготовка к финальному рендеру оказалась не такой уж и быстрой, было около 16 "финальных" версий пока я не пришёл к искомому. 
Начать я решил с доработки лимонов. Для начала я изменил сами модели лимонов, добавив проработку геометрией через Editable Poly а так же серией модификаторов такими как Twist, FFD и Noise. 

Так как я был крайне не доволен материалом лимона на рендере я решил попробовать VrayFastSSS2 материал вместо простого VrayMtl. Кстати это стало толчком перейти с VRay 1.5sp2 на sp5 версию :) 
Практически ничего не зная об этом материале и с нулевым опытом работы в нём, я почитав немного официальный мануал, смог накрутить довольно неплохой эффект на рендере. Во всяком случае куда лучше чем предыдущий материал. 

Дополнил ещё несколькими кусочками льда композицию и доработал материал льда. 

Материал стакана 

Жидкость 

Столешница 

Рендеринг финальной версии шёл в TGA формат с глубиной в 32 бита из Render Elements понадобился только пасс zDepth. Собственно сами настройки рендера таковы, ничего особенного...

Пост-обработка. 
Как я уже отмечал, пост-обработка изображения проводилась в Fusion 6.14. 
Разбирать RGB пасс на составляющие я посчитал лишним, не интерьер всё таки постим, по этому треад компоуза начинается сразу с цельной картинки из рендера. 

Дабы не рассусоливать каждый оператор компоуза и не просвещать в возможно свои же ошибки я пройдусь кратко по основному что стоит внимания. 

Первым оператором я подчистил изображение - sharp, силу выставил совсем незначительную, т.к. сам очень не люблю "перешарп" :( 
BrightnessConstrast - поднимаю до 1,1 параметры Gain и Gamma 
ColorCurves - работая с каналом Red я слегка поднимаю кривую синего цвета, добавляя "холода" в сцену. Влияние оператора я сделал избирательным, исключив маской область с льдом, лимонами и до самого донышка. 
ColorCorrect - слегка затеняю зону с лимонами опуская brightness, gamma и gain параметры а так же поднимаю Saturation 
Brightness - высветляю правый верхний угол с красноватым свечением 
Depth of Field (frischluft) - работая по каналу zDepth выбираю в зону фокуса область в которую попадает толща жидкости в стакане, по вкусу настраиваю боккэ. Тут пожалуй я дольше всего игрался с настройками, хотя это возможно просто потому что из тут полно и мне хотелось всё покрутить. 
WarpChroma (sapphire) - тут всё просто, это абберации. 
Дальше всё ещё проще, Glow придать блума изображению, ColorCorrect с маской для имитации виньетирования, фларик на край стакана, ещё один CC с повышением сатурейшн (основное подкрашивание картинки) до 1,4 и немного + контраста и всё это с исключением маской стакана по всей высоте. Ещё один CC для усиления виньетирования с чуть другими параметрами маски. Gain работающий по zDepth`у шумящий только вне зоны ГРИП и последний CC подкрашивающий лимончики. 

В заключение расскажу об одном казусе случившемся на самых последних уже минутах работы над изображением, когда выдержка уже совсем сдавала и хотелось по скорей закончить всё. Загружая loader`ом в фьюжен начальное изображение, я совсем забыл заглянуть в закладку Import и проверить в какой битности программа предлагает работать по умолчанию. Т.к. рендерилось всё в широком спектре на 32 бита, имело бы смысл использовать на посте все эти возможности, но я об этом всём забыл и программа по дефалту "подрезала" всё под 8 бит. 
По ходу работы над постом я наблюдал как растёт "лестничный" эффект на градиентах и ничего не мог с этим поделать. Когда всё таки исправил эту досадную ошибку, из-за которой пришлось отзывать свою работу с галерей куда уже было загружено изображение, я был очень удивлён увидев на своём примере как сильно влияет на качество работы 8ми битный спектр. Сравнительное изображение ниже 

Надеюсь кому-то эта куча текста помогла разобраться дав ответы на некоторые вопросы :) 

3dandriel.blogspot.com

18155 Автор:
Актуальность: 798
Качество: 810
Суммарный балл: 1608
Голосов: 38 оценки
Категории: Making of 3D Статья

Отзывы посетителей:

аватар
 
Alex AndRiEL 61 0
Цитирую warog:
Виноват отвлекся на предыдущее сообщение:) Тиф поддерживает 32 бита, так что все нормально

Вообще я не знаю точно как там TGA распределяет битность, знаю что при сохранении фигурируют цифры 24 и 32 бита :) Вполне возможно что при 32ух 8 уходит на альфу.. в любом случае при рендере в этом формате при такой битности (и когда я в фью выставил всё как положено, результат удовлетворил)
Про EXR я знаю.. но как-то меня отвадили им пользоваться. Правда там связано скорей с анимацией и большим потреблением памяти.. в общем не срослось душевно у меня с ним. Хотя в теории это должно быть удобно, все каналы с жирной битностью и всё в одно файле.

Короче говоря, я на TGA не настаиваю и не агитирую :)
аватар
 
warog 5 0
Цитирую warog:
у TGA максимум 24 в rgb + 8 в альфе, надо в EXR сохранить, там все ок будет. Но сама работа очень понравилась:)

Виноват отвлекся на предыдущее сообщение:) Тиф поддерживает 32 бита, так что все нормально
аватар
 
warog 5 0
у TGA максимум 24 в rgb + 8 в альфе, надо в EXR сохранить, там все ок будет. Но сама работа очень понравилась:)
аватар
 
GooD 21 0
Цитирую:Рендеринг финальной версии шёл в TGA формат с глубиной в 32 бита


TGA не умеет хранить 32 бита...
аватар
 
Alex AndRiEL 61 0
Vfrcbv - спорить не буду, но материал из под рендера выходил у меня в 32 битном формате Тифф, так что галка эта к проблеме описанной в финале по-моему связи не имеет.

TeXn1K_88 - к сожалению пока немогу) Нахожусь в хабаровске за 10 тыщ км от своего системника :(
аватар
 
Vfrcbv 2 0
Из хелпа:

Цитирую:Clamp output - if this is on, colors will be clamped after color mapping. In some situations, this may be undesirable (for example, if you wish to antialias hdr parts of the image, too) - in that case, turn clamping off.
аватар
 
TeXn1K_88 18 0
А можно ссылку на HDRI? Уж больно хороша.
аватар
 
Alex AndRiEL 61 0
Цитирую Vfrcbv:
Ты сам обрезал инфу о цвете когда поставил галку Clamp Output в настройках V-ray Calor Mapping. Она как раз и отвечает за обрезание инфы о цвете, превышающей значение указанное рядом.
Если бы было всё так (хотя я точно до конца не в курсе как работаем клампа в вирее, знаю только что фиксит овербрайт точки и по сему постоянный житель моих стандартноизменяемых настроек), то в фью переключение инпута с 8 до 32бит флоат не дало бы эффекта никакого ;)
аватар
 
Vfrcbv 2 0
Цитирую:В заключение расскажу об одном казусе случившемся на самых последних уже минутах работы над изображением, когда выдержка уже совсем сдавала и хотелось по скорей закончить всё. Загружая loader`ом в фьюжен начальное изображение, я совсем забыл заглянуть в закладку Import и проверить в какой битности программа предлагает работать по умолчанию. Т.к. рендерилось всё в широком спектре на 32 бита, имело бы смысл использовать на посте все эти возможности, но я об этом всём забыл и программа по дефалту "подрезала" всё под 8 бит.


Ты сам обрезал инфу о цвете когда поставил галку Clamp Output в настройках V-ray Calor Mapping. Она как раз и отвечает за обрезание инфы о цвете, превышающей значение указанное рядом.
аватар
 
AndRiEL, спасибо тебе за стоящий и добротно-разжеванный "мэйкинг оф"!!! Некоторые "вещи", прояснённые в данной статье, терзали мой мозг давненько! Еще раз: СПА-СЯ-БА!!!
+
аватар
  vip
Swordlord 1084 0
Преподаватель курсов RENDER.RU
Спасибо! Полезно! 5/5
аватар
 
Еллесар 137 0
спасибо!:)
аватар
 
mies rohe 228 0
Хорошая статья!
аватар
 
Alex AndRiEL 61 0
Цитирую Black Brother:
схема освешения черезчур сложная

Спасибо за комент!
Я рисовал блики один за одним, расставлял их так чтоб получить в нужных местах подсвет. Два вирейлайта дадут студийку. Хдрка и так стоит :)
аватар
 
m3gac 43 0
полезно 5/5
аватар
 
Black Brother 112 0
схема освешения черезчур сложная - тут можно было обоитись двумя плаинами с вирей лаит материалом.гдее в слоте опасити одеть градиент. или хдркой.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 613 уникальных посетителей