Tuesday, October 5, 2010

Рендер травы и деревьев





Вот решил освоить искусство рендера экстерьеров. А что главное в экстерьерах? Правильно, красивая и реалистичная растительность вокруг! :). Ну вот и встала в полный рост проблема рендера травы и деревьев. С наскоку ничего хорошего не вышло. Но через пару дней тестов и проб, получилось добиться неплохого результата.
Хочу сразу сказать, для рендера я использовал только Final Gather - фотоны в экстерьерах вроде как не эффективно использовать, т.к. основной источник у нас небо, а оно не испускает фотонов (можно конечно попробовать поставить БОЛЬШОЙ портал над всей сценой, но это я попробую в другой раз).


Первая проблема с которой я столкнулся, оказалась в железе. Мне банально не хватило оперативки! Для более-менее нормальной работы надо иметь хотя бы 9, а лучше 12 Gb RAM.
Вторая, и основная проблема - очень долгий рендер. Корни этой проблемы в материале листвы и деревьев. Изначально я делал их с помощью Arch&Design материала с прозрачностью (чтобы свет проходил сквозь листву и траву) и транслюценцией (чтобы листья и трава рассеивали свет внутри - эффект игры света в кронах деревьев). Кроме того, для листвы приходится использовать маски для канал Cutout для придания формы листьям. Что из этого получилось? Во-первых FG сильно тормозит на картах Cutout и на включенном Translucency. Во-вторых, если ставить вес Translucency меньше 1, то листья становятся прозрачными (это можно исправить накрутив Refract Glossy, но тогда на дереве рендер уйдет в бесконечность). С другой стороны, если ставить вес Translucency = 1, то листья перестанут пропускать свет - весь свет будет рассеиваться внутри листа (лист будет светить с обратной стороны через FG - отсюда и тормоза при расчете карты FG). Будем искать выход. Для начала, по пунктам обозначим, что мы хотим получить:
1) Чтобы листья были не прозрачные.
2) Чтобы в ярком свете листья светились с обратной стороны.
3) Чтобы листья частично пропускали свет и тени окрашивались в зеленоватый цвет

Для решения поставленной задачи, будем использовать шейдерный материал Mental Ray. В нем нас интересует 2 канала:
1) Surface - он отвечает за внешний вид материала и основные свойства поверхности (такие как отражения, прозрачность, транслюценция и т.п.)
2) Shadow - отвечает за параметры генерации теней от объектов с данным материалом.

Первым делом, я создал материал, который будет отвечать за основные свойства листа. Для этого я использовал материал Arch&Design. Вот его основные параметры:


Этот мат можно с помощью карты Material to Shader положить на канал Surface нашего основного материала. Но тогда мы упустим важный момент. А именно то, что эти свойства будут учитываться при расчете карты FG. А как я писал выше, это приводит к нежелательным последствиям. Поэтому для FG надо подсунуть другие свойства! Это дается с помощью шейдера Color Override/Ray Type Swticher. В этом шейдере, мы кладем наш мат на канал Default - это то же самое как если бы мы положили его на ВСЕ сразу каналы. А на канал Final Gather мы положим карту Translucency, чтобы для FG поверхность листа считалась как полупрозрачная и окрашенная в светло-зеленый цвет - это позволит FG лучам проникать сквозь листья внутрь кроны дерева, и избежать излишней темноты внутри неё. При этом, карта FG будет рассчитываться гораздо быстрее, т.к. свойства, которые мы подсунули для FG через Ray Type Swticher, гораздо проще чем свойства, заданные в основном материале.
Итак, первый этап завершен - связываем использованный Ray Type Swticher с каналом Surface нашего материала Mental Ray
Теперь займемся тенями. Самое главное, нам надо, чтобы тени были по форме листа (а форма геометрии у нас прямоугольная!) и полупрозрачные. Создадим материал Blend и в качестве маски возьмем ту же текстуру, что лежит у нас в мате Arch&Design на канале Cutout. Теперь нам надо, чтобы материал внутри этой маски был полупрозрачный, а снаружи - не было материала вовсе. Полупрозрачный мат мы сделаем с помощью материала Mental Ray с шейдером Translucency на каналах Surface и Shadow (возьмем тот же что мы использовали для FG выше). А в качестве второго материала положим опять же Mental Ray но с шейдером Transmat (полностью невидимый). Вуаля - все получилось как надо! Осталось через Material to Shader положить эту конструкцию на канал Shadow нашего основного материала.
Общая схема получилась в итоге следующая:
Выглядит конечно страшно, но это только в первый раз :). Потом становится все понятно и достаточно удобно настраивается. В конце концов можно сохранить этот мат в библиотеку и использовать в дальнейшем как шаблон.

PS. Трава делается абсолютно аналогичным способом, только мат Arch&Design который кладется на Surface основного материла, будет попроще. Ну и надо поиграть немного цветами на Reflection, на Refraction и на Translucence Color.

Надеюсь эта статейка будет кому-нибудь полезна.
Удачных рендеров.


10 comments:

  1. http://3dyuriki.com/2009/11/13/3ds-max-vray-urok-material-3d-dereva-listev/

    ReplyDelete
  2. ОТЛИЧНО!!! побольше бы тебе подобных мыслей, да почаще ;)
    Хороший урок получился! Обязательно попробую как буду маньячить экстерьер ))

    ReplyDelete
  3. Очень интересно. Можно вопрос. Как Вы делали траву на 1-й картинке? Это ведь не "hair & fur" с "MR pirm" ))

    Живописные листочки и травинки.

    ReplyDelete
  4. Ваще круто. Я честно решил поначалу, что первая картинка - это фотка, чтобы потом с ней сравнивать результат! Потом присмотрелся - вроде бы слишком чёткий рисунок прожилок на листьях :)

    Кстати, вторая картинка в полный размер не открывается.

    ReplyDelete
  5. 2 iDes
    Причем тут V-Ray? вообще-то я не работаю во врее. Эта статья по менталу.

    2 Sergei
    Трава сделана с помощью мультискаттера.

    ReplyDelete
  6. Ага Спасибо братец ). Да, чет в этом блоге какая-то дурацкая система вставки картинок - они в первой строчке появляются. А когда их таскаешь, почему-то иногда они глюкают (((

    Вообще моделька куста того довольно грубая - не для ближних ракурсов. Для ближних надо более детальную.

    ReplyDelete
  7. Отличный урок, Спайк спасибо!

    ReplyDelete
  8. Да на здоровье - пробуйте! :)

    ReplyDelete
  9. Отличный урок! Обязательно применю эту теорию в своей будущей работе в ментале.

    ReplyDelete