Список разделов » 3D Уроки » Maya
Maya Render Layers
Автор: RIDDICK | Автор урока:
Render Layers — это система для послойного и пообъектного рендеринга. Это означает, что любой объект может быть отрендерен отдельным проходом в отдельный файл. Один и тот же объект может находиться на разных слоях, но при этом иметь разные шейдеры, кроме того, каждый слой может быть отрендерен с разными настройками просчета и даже разными визуализаторами!
Сделаем простой пример:
1) Создадим плоскость и сферу, а также два источника света (spotLight — главный источник с включенными тенями, и ambientLight с интенсивностью 0.3 для подсветки).
2) К плоскости применим простой шейдер lambert с шахматной текстурой (все остальное по умолчанию).
3) К сфере применяем blinn и меняем на цвет «повеселее».
Далее переходим непосредсвенно к организации рендера. Для начала давайте посмотрим что мы имеем:
Если в шарике нет отражений необходимо включить Raytracing:
Итак, что же мы будем делать? Или правильней будет спросить, что же мы хотим контролировать на этапе композитинга?
а) Цвет каждого объекта в отдельности
б) Мягкость и интенсивность тени
в) Мягкость и силу отражений
г) Мягкость и интенсивность блика
д) Сделаем Ambient Occlusion
е) Depth of Field
Создание Render Layers
Редактор Render Layers прост. В нем уже присутствует один слой — masterLayer.
Удалять его не стоит, а отключить можно нажав на левую кнопку с зеленой галочкой, которая после нажатия превратится в красный крестик. Это означает, что данный слой не будет учавствовать в финальном просчете.
Создадим новый слой для контроля цвета плоскости:
1) Выделяем плоскость
2) Нажимаем Layers ➭ Create Layer from Selected
3) Переименуем новый слой: дважды щелкаем по названию и вводим новое имя planeDiffuse.
4) Мы забыли добавить в слой источники света, поэтому выделяем их в Outliner, жмем правой кнопкой мыши на слое planeDiffuse ➭ Add Selected Objects.
При выделенном слое мы видим что в нижней части вьюпорта появилось название текущего слоя. И в верхней части Render View также отображается имя выделенного слоя.
Так как сфера не принадлежит слою planeDiffuse она не отображается ни во вьюпорте ни в Render View после просчета. Из сцены она никуда не пропала, если выделить слой masterLayer она вновь покажется.
Таким же образом создаем слой для контроля цвета сферы (не забудьте добавить в слой источники света).
Далее создадим слой для контроля тени:
1) Выделяем объекты spotLight1, pSphere1 и pPlane1.
2) Создаем для них новый слой и назовем его shadow.
Нам не нужно видеть сами объекты, а только тень от сферы на плоскости, поэтому:
3) Выделяем сферу и открываем Attribute Editor ➭ вкладка pShereShape1 ➭ свиток Render Stats ➭ снимаем галочку Primary Visibility.
Это исключит сферу из прямой видимости, но она все еще будет отбрасывать тень. После снятия галочки аттрибут Primary Visibility приобрел оранжевый цвет. Это называется Layer Override и означает, что галочка снята только для текущего выделенного слоя.
Теперь если просчитать слой shadow мы не увидим саму сферу, но тень никуда не денется.
Спрятать таким же образом плоскость и оставить тень не выйдет, воспользуемся шейдером useBackground:
Открываем Hypershade, создаем шейдер useBackground и назначаем на плоскость.
Настройки шейдера useBackground1 следующие:
а) Specular Color = черный
б) Reflectivity = 0
в) Reflection Limit = 0
г) Shadow Mask = 1
Результат рендера может вам не понравиться — все черное! Однако, на самом деле все в порядке, нажмите кнопку отображения альфа-канала в Render View — тень на месте.
На очереди слой для отражений:
1) Выделяем все объекты сцены и создаем новый слой, назовем его reflection
2) Для плоскости снимаем галочку Primary Visibility, благодаря чему она будет исключена из прямой видимости, но будет видна в отражении сферы
3) Сфере назначаем новый материал useBackground
Настройки шейдера useBackground2 следующие:
а) Specular Color = белый
б) Reflectivity = 1
в) Reflection Limit = 2
г) Shadow Mask = 0
Результат рендера слоя отражений должен быть таким:
С бликом шейдер useBackground нас не выручит, поэтому используем обычный blinn:
1) Выделим spotLight1 и pShere1 и создадим новый слой с названием specular
2) Назначим сфере новый материал blinn со следующими настройками:
а) Color = черный
б) Eccenricity = 0.2
в) Specular Roll Off = 1
Остальное по умолчанию.
Итог таков:
Вернемся на время к слою 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
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
Результат должен быть следующим:
Ну вот! Организация рендера данной сцены закончена! У нас есть семь слоев для контроля (не считая masterLayer), готовых к рендеру. Нам остается только нажать Render ➭ Batch Render
После окончания просчета в папке Документы ➭ maya ➭ projects ➭ default ➭ images должно появиться семь папок, названия которых соответствуют названиям слоев рендера, а в каждой из этих папок лежит по одному файлу — это наши слои.
Остался только композитинг, и вот тут мы уже можем почувствовать всю мощь послойного контроля, обратите внимание на методы смешивания слоев, как делается DoF — качественный и быстрый, как изменилась картинка по сравнению с майским рендером: цвет, мягкость теней, бликов и отражений, их интенсивность. Мы можем контролировать практически все что угодно и не пересчитывать сцену заново!
Послесловие: В настоящее время ведется работа над PDF-версией данного урока с оригинальным оформлением, а также продолжение «Организации рендера», предисловие к которому появится уже в скором времени.
Метки: композитинг, Maya, слои рендера, урок, эффективность, Render Layers | ||
Автор: dr.marten703 | Спасибо большое, что урок сюда перенесли. Очень полезный. | ||
Автор: skif | о пасиб.. но есть способы проще.. | ||
Автор: swn |
Render Passes? Знаю-знаю... урок по ним уже пишется. Просто, прежде чем к ним переходить, надо познакомиться с Render Layers, я считаю | ||
Автор: skif | тоже верно.. но всяко молодец.. оч полезно. | ||
Автор: swn | спасибо!)) | ||
Автор: swn | Обещаное предисловие | ||
Автор: KakHexHax | Подскажите, пожалуйста! Когда происходит рендер Pass-ов — ресурсы расходуются только на этот pass (например, diffuse) или всё-таки вычисляются всякие преломления, отражения, дисплейсы? Я к чему это спрашиваю: когда в сцене сотни объектов и несколько миллионов треугольников — расскидывать всё по рендер слоям, а потом гемороится с каждым слоем в фотошопе порождает уныние. Возможно ли pass-ами рендерить сразу всю сцену (без fur-а, конечно, а только геометрию)? Т.е. кинул всю многомиллионную геометрию сцены в один рендер-слой и отрендерил сначала один pass цвета этого слоя, потом pass отражений и т.д. Или всё равно придётся рендерить объекты по отдельности, даже если и pass-ами? Просто я хочу получить картинку с большим разрешением (несколько тысяч пикселей), а ждать сутками неудовлетворительный (как в последствии оказывается) результат мне надоело. | ||
Автор: zheniko | Прекрасный толковый урок для начала. Остальное понимаешь по ходу дела. |
Количество просмотров у этой темы: 15986.
← Предыдущая тема: РИГ: от А до бесконечности.