Making Of "Станция технической проверки"

Добрый день! Меня зовут Артем. Живу и работаю в Москве. 3D графикой занимаюсь в качестве хобби, моя работа и образование совершенно далеки от CG. Смена деятельности - это тоже отдых, как известно. Вот так и отдыхаю.

В этой статье речь пойдет о работе “станция технической проверки”. Все началось с желания сделать чехол из ткани, в котором как в кабель-канале лежит связка проводов. Хотелось поупражняться в marvelous designer с тканью как mesh`ем и сделать соответствующий материал. Провода должны быть между какими-то устройствами или частями боевой машины или робота. Так я пришел к концепции коробки с неким оборудованием, например, для проверки боевых машин. Тут и провода, и чехол из ткани военного назначения, и штекеры разные, и кнопки и т.д. Приступая к работе, я руководствовался принципами создания фотореалистичной 3D-графики, которые давно нашел где-то в сети, вот они:

Modeling
Use real world scale
No sharp edge's, chamfer everything
Use reference
Known your anatomy

Materials

Use physically accurate
shaders
Use PBR maps (diffuse,
reflect, normal, bump and ect)
Add surface
imperfection's

Lighting

Use the real world
directions
Use the corrected
color of light
Don't forget
reflections

Post processing

Glare
Motion blur
Depth of field
Chromatic aberration
Barrel distortion
Пойдем по порядку:

Все начинается с моделинга. Бог создал мир за 7 дней, наверно, первые два-три он моделил :)
Use real world scale. В построении моделей реального мира необходимо использовать реальные единицы измерения. Это влияет на поведение “лучей света” и процессов затухания энергии фотонов при расчете системой рендеринга. Я всегда использую мм как system unit scale.
Прежде всего чтобы начать строить модель, надо посмотреть, как она в реальном мире сделана. Use reference и Known your anatomy означает - посмотри примеры фотографии и попытайся понять, что и как сделано, почему так, а не по-другому. Какая логика есть в строении. Как форма зависит от материала из которого модель “сделана”. Анатомия тут рассматривается в более широком смысле, её стоит понимать, как устройство вещей и всего.
Для поиска референсов использую google и pinterest. Обычной ищу на английском языке. Пытался искать в яндексе, так там сразу реклама и купи то, купи это.

image001.jpg

Сначала замоделил ящик внешний, чтобы был похож на некий “стандартный военный ящик”, такой не разбиваемый, из прочного пластика, а внутри - электронная начинка.

image003.jpg

Хотел сделать что-то среднее между современной электроникой и “теплым ламповым” прошлым. Потому и кнопки дубовые, и тумблеры есть. Постарался внеси некоторую логику в электронное устройство. У меня справа входят провода данных, значит здесь будет блок ввода и первичной обработки сигнала. Он конструктивно отделен, его можно выкрутить и вынуть (военные любят модульность и ремонтопригодность), далее в центе основной вычислитель, потому и управление им тоже тут. Опять же есть другие блоки, которые можно вынуть.

image005.jpg

Затем провода. Прежде всего я сплайнами построил провода без штекеров. ОТ куда они и куда идут. Как бы они могли лежать в реальной жизни. Уделил много внимания их кривизне, стараясь учитывать жесткость предполагаемого провода и поведение его внутри тканевого чехла. Например, толстый провод в оплетке является основным “хребтом” всей связки и сгибается широкой петлей, более “мягкие” провода могут сгибаться сильнее.

image007.jpg

Далее сплайны стали основной для создания ткани чехла. Загрузил их в marvelous designer как аватар. Кроме самих проводов еще подгрузил простой бокс. Он будет имитировать предмет, на котором провода будут лежать в тканевом чехле. Сделал ткань и уронил её на провода. Методом “ запустил симуляцию - подправил - остановил симуляцию - пришил- запустил симуляцию- потравил” обтянул тканью провода. Потом в режиме симуляции придвинул снизу бокс и придавил ткань снизу, как будто провода лежат в чехле на поверхности опоры. Получив необходимые складки, увеличил разрешение сетки и выгрузил модель в макс. Текстурные координаты там уже зашиты.

image009.jpg

Я моделю editable poly, делаю Unwrap, если надо, потом кидаю chamfer, правлю и сверху turbosmooth так мы используем еще один принцип No sharp edge's, chamfer everything. В мире, конечно же, нет острых углов, и у нас не должно быть. Даже самое острое лезвие имеет закругление. Если модель сложная и её необходимо сделать Unwrap, то я в процессе создания модели от простой формы до необходимой, периодически “разворачиваю” unwrap` лю модель. Многие модификаторы (тот же chamfer) корректно меняют текстурный координаты после применения. Потому что если начать “разворачивать” модель в конце, когда она уже готова (максимально сложная с огромным количеством сглаженных углов, отверстий и т.д.) процесс затянется и усложниться во много раз. Так я экономлю время.

image011.png

Дальше Materials.
Use physically accurate shaders Используй физически корректные и точные шейдеры. Сейчас большинство рендеров делают хороший результат. Vray, конечно не совсем physically correct , тут больше Corona, Marmoset или Maxwell надо. Зато у него полно хитростей и уловок.

Use PBR maps (diffuse, reflect, normal, bump and ect)

Хорошо бы использовать PBR (physically based rendering). Рисовать карты для всех каналов шейдера. Процедурные они будут или текстурные - не важно. Главное - одной diffuse не получиться сделать реалистичный материал.
Хорошо было бы рисовать материлом по модели и сразу же получать карты для всех каналов (diffuse, reflect, normal, bump и тд.) Тут на сцену выходят проги для текстурирования: substance painter, 3d coat и т.д.
Я использовал substance painter. Прога умеет генерировать маски под разные нужны: грязь, сколы, царапины, пыль, ржавчина и т.д. исходя из геометрии модели. Единственный недостаток - надо готовить модель: делать развертку Unwrap, продумывать где и как резать UWV чтобы было меньше швов, чтобы они (швы эти) были в незаметных местах. Далее нужно модель запечь (backing). Запекать её (это время на расчет рабочих карт, которые дают программе информацию о поверхности модели - ambient occlusion, curvature, mesh id, position, normal и т.д.) Зато потом скорость текстурирования возрастает в разы. Гибкость и разнообразие инструментов, процедурных карт, кистей, методов закрашивания, и всяких фильтров, позволяют сделать ВСЁ, вообще любой материал! Очень много уроков в сети, на cgpersia и т.д. разобраться можно!

image012.jpg

И еще один недостаток: шейдеры paintera и Vray разные алгоритмы работы имеют, мой друг. И потому картину рисуют разную они. От чего печаль настигает тебя, юный скайвокер...
Потому карты для материала на выходе (особенно карта reflection и glossyness требуют коррекции). Опытным путем я определил, что обычно рефлекту надо сдвинуть гамму, а glossy сжать диапазон яркости. Это в настройках output у bitmap.

image014.png

image016.png

Еще в стандартных настройках bitmap карты есть параметр blur

image018.png

он по-умолчанию равен 1,0, и это убивает все детали карты, все мылит. Я выставляю его в 0,01. Это тоже подсмотрел у кого-то в уроках по PRB.
Add surface imperfection's Добавить несовершенства поверхности: повреждения, сколы, грязь, потертость, трещины, пятна и т.д. ну тут большую часть работы делал painter.
Материал пластикового бокса я пытался сделать в максе. Для генерации масок потертостей использовал vrayDirt и curvature. Рисовал маски от руки и использовал нагугленные изображения грязи и т.д. Причем не знаю как у кого, но у меня приходиться умножать карту vRayDirt саму на себя много раз, чтобы она была достаточна для генерации маски.

Lighting
Use the real world directions и Use the corrected color of light
Весь свет в сцене должен имеет какое-то логическое направление и цвет его тоже должен быть разный. К примеру свет неба обычно бледно-голубой, светит обычно из окна, блик и засвет от него формируются сбоку, а сверху могут светить теплые (оранжевые) источники света - лампы накаливания. Чистый белый цвет это субъективное ощущение нашего восприятия. Его нет вообще.
Таким образом, прежде чем освещать объект рендеринга нужно подумать, а как наиболее естественно в данных условиях он будет освещен.

image019.jpg

Тут источники света в сцене. Есть заполняющий свет dome light это сферическая карта HDRI , на ней темное помещение с окнами сбоку, типа ангара (нам как раз пойдет). Яркость очень маленькая. Остальные источники усиливают свет улицы и свет ламп помещения, ламп оборудования которое может стоят рядом. Другие же нужны только для подсветки определенных деталей и элементов. Через менюшку include\exclude в настройках источника можно указывать на что светить, не освещая все другое. Это не физически корректно, зато красочнее 🙂 Обычно я вставляю источники света в сцену и смотрю в режиме реалтайма как они светят, стараясь светом подчеркнуть детали, грани, выделить материал, обозначить особенности поверхности. Потому источников света много.

image021.png

Don't forget reflections отражения и блики действительно делают сцену реалистичной и нужны везде и всегда. На все материалах желательно иметь рефлект. Там где блики не получены от освещения основными источниками, надо добавлять дополнительные источники света. И еще, видны точеные источник света, они дают много точеных бликов. Вы же замечали, наверно, как в салонах часов и украшений в витринах много точеных светильников. Потому украшения выглядят там куда лучше чем при обычном освещении.
Рендеринг.
Я Vray пользую уже много лет, еще с ранних версий. Я прочитал кучу руководств на русском и английском. Переводил, разбирался, “втыкал” - что, зачем и почему. Но комплексного понимания так и нет. В версиях 3.0 и выше разработчики сами скрыли многие настройки интерфейсе. Всем известная связка Irmap +light cache мне что-то не по душе. Танцы с бубном, а четких теней и деталей так и нет. Другое дело, если мы используем light cache и brute force. Мелкие детали очень хорошо прорисовываются и точные тени дают приемлемый результат. Плата за это - время.
Считалось вся сцена очень долго, ну ОЧЕНЬ. Обилие текстур нагружали оперативку. vRay 3.60.03. Комп слабый, проц старый: 4 ядра по 3 Ггц. В рейтинге CPU PASSMARK это где-то 5000 единиц против середнячков современных в 15000 и злоодеев high end`a в 28000 В режиме progressive ушло где-то 60(!) часов, чтобы достичь порога шума в 0,005 на картинку в 4К.
Я работал в гамме 2,2 с color mapping Reinhard
Я использовал несколько пассов. Основной пасс RGB в .exr 32 bit чтобы сохранить весь диапазон данных, дополнительные пасы, чтобы иметь возможность подкорректировать все что только можно.

image023.png

Post processing

Постобработка. Тут цветокоррекция, исправление косяков рендеринга, эффекты линзы виртуального объектива.
Glare (засвет от ярких источников света) формируется из-за паразитного рассеивания света в толще линзы (линз) объектива. Тут виновата волновая природа света, дифракция луча в толще материала стекла.
В vRay есть инструмент постобработки в Frame bufer Настраивая glare и bloom можно получить красивые засветы на ярких участках. Причем вирей делает это уже после рендеринга. Получившийся результат можно сохранить отдельно. Но если его просто наложит как есть, он влияет на все изображение - обычно замыливает картинку. Чтобы этого избежать, я в фотошопе использую этот слой (glare и bloom) только там где мне надо.
Motion blur ( размытие в движении) имеет значение только если объекты в кадре в момент съемки движутся в нашем случае такого нет.
Depth of field (глубина резкости) зависит от фокусного расстояния объектива, открытия диафрагмы и размеров матрицы. Я обычно делаю отдельный пасс глубины, который использую в постобработке в фотошопе для создания глубины резкости. Не использую галочку depth of field в настройках камеры (возможно так оно было бы более физически корректно). Но гибкости никакой. А перерендеривать всякий раз - это надо ферму иметь.

image024.png

image026.jpg

Фильтр в фотошопе lens blur и карта глубины.
Chromatic aberration Хроматические аберрации. Выглядить это как ореол красного и зеленого цветов вокруг контуров объектов в изображении. На фото они к краю кадра выражены сильнее.
Barrel distortion искажения линзы зависят от геометрии линзы, это имитируется в настройках камеры в максе. (там есть отдельный свиток).
Все слои собирал в Photoshop. Основой слой RGB 32 битный, на нем исправляются косяки освещения: пересветы и слишком темные участки, широкий диапазон яркостей дает свои плоды, когда видишь как из полной (казалось бы) тьмы проявляется вся что нужно. Все детали должны быть видны , даже в тени (на грани видимости) - не зря же моделил.
Далее следует цветокоррекция и контраст, баланс белого. далее если необходимо добавляем блики и рефлекты из соответствующих пассов через разные типы смешивания слоев soft light, multiplayer и т.д.
Потом glare и bloom в нужных местах из отдельного RGB пасса с этими эффектами.
Потом глубина резкости, хроматические абберации.

241359.jpg

Ну вот и финал! Всем спасибо кто дочитал до конца ;)

811 0 850 20
6
2019-06-10
Я дочитал до конца:).Спасибо за чудесный мэйк!Успехов Вам во всем!
2019-06-10
Прочла с удовольствием. Как начинающий, подцепила для себя много полезных моментов. Продолжайте в том же духе. =)
2019-06-10
круто было бы ретопнуть и в Анрили отрендрить!
2019-06-10
От себя добавлю, что все карты Value (Черно белые) выпускаются без гамма корректа, то есть Linear 1.0 а вот все карты имеющию RGB (Кроме нормала)пойдут в гамме 2.2. Впринципе все, мудрить ненадо и более того нельзя, иначе запарываеш всю фишку физически правильных материалов.

Значит вот карты:
Diffuse - SRGB 2.2
Reflection - SRGB 2.2
Gloss - Linear 1.0
IOR - Linear 1.0
Normal - Linear 1.0
2019-06-11
Вот вроде бы и все это знаю, но было приятно читать. И работа отличная.
2019-06-19
Оч Круто !
RENDER.RU