Yvision.kzYvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
6
10:00, 05 марта 2012

Организация рендера в Maya. Render Layers

Render Layers — это система для послойного и пообъектного рендеринга. Это означает, что любой объект может быть отрендерен отдельным проходом в отдельный файл. Один и тот же объект может находиться на разных слоях, но при этом иметь разные шейдеры, кроме того, каждый слой может быть отрендерен с разными настройками просчета и даже разными визуализаторами! 


Сделаем простой пример: 

1) Создадим плоскость и сферу, а также два источника света (spotLight — главный источник с включенными тенями, ambientLight с интенсивностью 0.3 для подсветки). 

2) К плоскости применим простой шейдер lambert с шахматной текстурой (все остальное по умолчанию). 

3) К сфере применяем blinn и меняем на цвет «повеселее». 

Blog post image

Далее переходим непосредсвенно к организации рендера. Для начала давайте посмотрим что мы имеем: 

Blog post image

Если в шарике нет отражений необходимо включить Raytracing

Blog post image

Итак, что же мы будем делать? Или правильней будет спросить, что же мы хотим контролировать на этапе композитинга? 

а) Цвет каждого объекта в отдельности 

б) Мягкость и интенсивность тени 

в) Мягкость и силу отражений 

г) Мягкость и интенсивность блика 

д) Сделаем Ambient Occlusion 

е) Depth of Field 

Создание Render Layers

Редактор Render Layers прост. В нем уже присутствует один слой — masterLayer

Blog post image

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

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

1) Выделяем плоскость 

2) Нажимаем Layers ➭ Create Layer from Selected

3) Переименуем новый слой: дважды щелкаем по названию и вводим новое имя planeDiffuse

4) Мы забыли добавить в слой источники света, поэтому выделяем их в Outliner, жмем правой кнопкой мыши на слоеplaneDiffuse ➭ Add Selected Objects

При выделенном слое мы видим что в нижней части вьюпорта появилось название текущего слоя. И в верхней части Render View также отображается имя выделенного слоя. 

Так как сфера не принадлежит слою planeDiffuse она не отображается ни во вьюпорте ни в Render View после просчета. Из сцены она никуда не пропала, если выделить слой masterLayer она вновь покажется. 

Таким же образом создаем слой для контроля цвета сферы (не забудьте добавить в слой источники света). 

Далее создадим слой для контроля тени: 

1) Выделяем объекты spotLight1pSphere1 и pPlane1

2) Создаем для них новый слой и назовем его shadow

Нам не нужно видеть сами объекты, а только тень от сферы на плоскости, поэтому: 

3) Выделяем сферу и открываем Attribute Editor ➭ вкладка pShereShape1 ➭ свиток Render Stats ➭ снимаем галочку Primary Visibility

Blog post image

Это исключит сферу из прямой видимости, но она все еще будет отбрасывать тень. После снятия галочки аттрибут Primary Visibility приобрел оранжевый цвет. Это называется Layer Override и означает, что галочка снята только для текущего выделенного слоя. 

Теперь если просчитать слой shadow мы не увидим саму сферу, но тень никуда не денется. 

Спрятать таким же образом плоскость и оставить тень не выйдет, воспользуемся шейдером useBackground

Открываем Hypershade, создаем шейдер useBackground и назначаем на плоскость. 

Настройки шейдера useBackground1 следующие: 

а) Specular Color = черный 

б) Reflectivity = 0 

в) Reflection Limit = 0 

г) Shadow Mask = 1 

Результат рендера может вам не понравиться — все черное! Однако, на самом деле все в порядке, нажмите кнопку отображения альфа-канала в Render View — тень на месте. 

Blog post image

На очереди слой для отражений: 

1) Выделяем все объекты сцены и создаем новый слой, назовем его reflection

2) Для плоскости снимаем галочку Primary Visibility, благодаря чему она будет исключена из прямой видимости, но будет видна в отражении сферы 

3) Сфере назначаем новый материал useBackground

Настройки шейдера useBackground2 следующие: 

а) Specular Color = белый 

б) Reflectivity = 1 

в) Reflection Limit = 2 

г) Shadow Mask = 0 

Результат рендера слоя отражений должен быть таким: 

Blog post image

С бликом шейдер useBackground нас не выручит, поэтому используем обычный blinn

1) Выделим spotLight1 и pShere1 и создадим новый слой с названием specular

2) Назначим сфере новый материал blinn со следующими настройками: 

а) Color = черный 

б) Eccenricity = 0.2 

в) Specular Roll Off = 1 

Остальное по умолчанию. 

Итог таков: 

Blog post image

Вернемся на время к слою sphereDiffuse. Так у нас есть отдельный слой для контроля блика в слое sphereDiffuse он будет лишним. Чтобы убрать его можно просто назначить сфере новый lambert материал, который не имеет бликов, но я пойду немного другим путем и воспользуюсь функцией Layer Override

1) Выбераем слой sphereDiffuse. Не будем трогать материал сферы, лучше отключим способность источника света spotLight1 генерировать блики на поверхностях. 

2) Выделяем spotLight1. Если снять галочку Emit Specular прямо сейчас это отключит способность источника света генерировать блики на всех Render Layers. Поэтому сначала нажимаем правой кнопкой мыши на аттрибут Emit Specular ➭ Create Layer Override. Аттрибут примет оранжевый цвет и теперь можно снять галку. 

Теперь Ambient Occlusion…

Ambient Occlusion лучше всего сделать средствами Mental Ray. Но ведь до сих пор мы обходились только стандартным Maya Software. Как же просчитать отдельный слой другим рендером? Ответ — Layer Override. Да, он может даже переключать систему визуализации для конкретного слоя! 

Продолжим: 

1) Выделим сферу и плейн (в этом слое источники света нам не понадобятся) 

2) Создадим новый слой с именем AO 

3) Открываем окно Render Settings и кликаем над строчкой Render Using ➭ Create Layer Override

Blog post image

4) Теперь можно переключиться на Mental Ray и пользоваться его преимуществами в текущем слое. Зайдем на вкладку Quality и переключим Quality Presets на Production.

5) Выделяем сферу и плоскость, над ними кликаем правой кнопкой мыши ➭ Assign New Material ➭ Surface Shader

6) В Out Color назначаем текстуру mib_amb_occlusion (она находится по этому пути в Hypershade: Create ➭ mental ray Textures ➭ mib_amb_occlusion

7) Заходим в настройки mib_amb_occlusion и немного повысим качество:

Samples = 64

Этого должно хватить. 

Ну и наконец слой для контроля глубины резкости: 

1) Также выделяем только сферу и плоскость 

2) Создаем для них новый слой DoF

3) Назначаем им новый материал Surface Shader

4) Открываем HyperShade ➭ Create ➭ 2D Textures ➭ и выбераем метод наложения 2D Projection

5) Выбераем surfaceShader2 и в Out Color назначаем Ramp текстуру, верхний цвет которой должен быть белым, а нижний черным. 

Так как мы выбрали метод наложения 2D Projection у нас в сцене появился новый объект place3dTexture1, который собственно и управляет наложением. Выделите его в Outliner

поверните и отмасштабируйте: 

rotateX = -90 

rotateY = -90 

rotateZ = 0 

scaleX = 12 

scaleY = 12 

scaleZ = 12 

Результат должен быть следующим: 

Blog post image

Ну вот! Организация рендера данной сцены закончена! У нас есть семь слоев для контроля (не считая masterLayer), готовых к рендеру. Нам остается только нажать Render ➭ Batch Render

После окончания просчета в папке Документы ➭ maya ➭ projects ➭ default ➭ images должно появиться семь папок, названия которых соответствуют названиям слоев рендера, а в каждой из этих папок лежит по одному файлу — это наши слои. 

Blog post image

Blog post image

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

Однако, система Render Layers - это не все. У нее есть преимущества и недостатки перед другой системой - Render Passes. Но это тот фундамент, необходимый для понимания как работает пайплайн студий, производящих 3д графику для кино и телевидения.

6
2873
4