Vray Fur в 3DS MAX
31 июль 2017- Информация о материале
- Автор: Долматов Вячеслав
- Просмотров: 15546
В данной статье рассмотрим процесс создания шерстяного коврика в 3DS MAX с помощью vray fur. После чего, уже обладая начальными знаниями, подробно изучим все возможности vray fur. По мере изложения материала, я буду выкладывать готовые файлы с финальным результатом. Если какие то моменты вызовут у Вас затруднения, то скачивайте их и смотрите, как там все устроено.
Перед тем как начнём, взгляните на возможный конечный результат теоретических знаний, изложенных в данной статье:
Итак, начнем!
Вы можете следовать вместе со мной, создавая сцену с самого начала, или скачать сцену в которой уже выполнены начальные установки:
Зададим единицы измерения, в которых будем работать. Я выбрал сантиметры:
В окне проекции Top создадим Plane (плоскость). Плоскость будет являться полом, на котором будет лежать коврик:
Установим размеры плоскости 5x5 метров.
Далее следует создать объект, который будет служить ковриком. Для этого вполне подойдёт ChamferBox (находится в свитке Extended Primitives вкладки Create):
В окне проекции Top создаём ChamferBox с параметрами, приведёнными на рисунке:
Для освещения сцены создадим сферический источник света VRayLight, со следующими параметрами:
Галочку в поле Invisible следует поставить для того, что бы во время визуализации сцены не было видно источника света, если он попадёт в кадр. Для лучшего освещения я немного поднял источник света над сценой по оси Z и подкорректировал его положение по осям X и Y. Его точные координаты по осям можно посмотреть под шкалой времени:
Что бы координаты подсветились, на панели инструментов следует выбрать инструмент Select and Move.
Если сейчас отрендерить сцену, то увидим плоскость (Plane), на которой лежит коврик (ChamferBox) освещаемый источником света:
Пора делать коврик шерстяным.
На панели Create, в разделе Geometry, из списка выберите VRay. Далее следует выбрать объект VRayFur. Но для того, что бы VRayFur стал активным следует выделить тот объект, для которого он предназначается. В нашем случае это коврик (ChamferBox).
Затем следует нажать на кнопку с надписью VRayFur. После чего коврик покроется шерстью, а в окне проекции появиться объект VRayFur:
Что бы VRay Fur не мешал, можете сдвинуть его в сторону (как это сделал я), на конечный результат это никак не влияет.
Если сейчас визуализировать сцену, то получим некое лохматое существо, мало напоминающее нашу конечную цель:
Для того, что бы превратить это чудовище в коврик, следует подкорректировать параметры VRayFur. Присвоим параметрам следующие значения:
Length – длина ворсинок шерсти;
Thickness – толщина ворсинок шерсти;
Gravity – влияние гравитации на наклон ворсинок к земле;
Bend – изгиб ворсинок;
Taper – заострение ворсинок от начала к концу;
Knots - количество сегментов, образующих ворсинку. Чем выше значение этого параметра, тем ворсинка будет более гладкой, что в свою очередь увеличит время визуализации.
В разделе Variation приведены параметры влияющие на отклонение изначально заданных значений, на указанную величину по случайному закону, потому как невозможно себе представить, что все ворсинки имеют строго одинаковое направление (Direction var), одну и ту же длину (Length var), толщину (Thickness var) и влияние гравитации (Gravity var).
Раздел Distribution предлагает выбрать, каким образом будут распределяться ворсинки по поверхности. Здесь можно выбрать Per face (по грани), или Per area (по площади). Пока установим в положение Per area, но ниже ещё вернёмся к этому разделу и рассмотрим его подробнее, потому как тут есть о чём поговорить.
Визуализируем сцену с приведёнными выше параметрами:
Так уже лучше!
Следующее что предстоит сделать – это назначить материалы.
Открываем редактор материалов (Material Editor), переходим в любой свободный слот, выбираем стандартный материал VrayMtl и в качестве цвета диффузного рассеивания выбираем изображение меха жирафа - meh_zhiraf_1920x1200.jpg (все файлы изображений идут в комплекте с файлом, который Вы скачали в начале статьи):
Назначаем полученный материал объекту VRayFur. Обращаю Ваше внимание, что материал назначаем не коврику (ChamferBox), а именно объекту VRayFur. Для этого выделяем его и жмём на кнопку Assign Material to Selection:
После рендеринга получим следующий результат:
Мех окрасился в шкуру жирафа, но видны проплешины. Эту проблему можно решить двумя способами. Первый способ заключается в увеличении плотности меха (значение Per area), а второй способ состоит в том, что бы назначить коврику (т.е. объекту ChamferBox) точно такой же материал что и объекту VRayFur. Первый способ я не рекомендую использовать, потому как увеличение плотности меха, увеличит время визуализации сцены. Поэтому будем использовать второй метод. Назначим тот же самый материал, что использовали для VRayFur, объекту ChamferBox. Таким образом, мы подкрасили коврик в цвет меха. После визуализации сцены получим следующий результат:
Видно что проплешины исчезли.
Для улучшения внешнего вида положим паркет. Здесь и далее я не буду углубляться в подробности создания материалов потому как это не является целью данной статьи, займёт много времени и уведёт от сути рассматриваемого нами вопроса. Все настройки материалов Вы можете посмотреть в исходных файлах.
После укладки паркета, получим следующий результат:
Уже совсем неплохо, но давайте ещё немного улучшим внешний вид.
Коврик у нас очень ровный, наверное и такое бывает, но всё же в реальной обстановке по коврику ходят, вытирают об него ноги, иногда даже об него спотыкаются, так что вряд ли он может сохранить столь идеальную форму. Если Вы выполняете урок вместе со мной, то на данном этапе рекомендую Вам сохранить сцену, потому как дальше пойдут элементы свободного творчества, которые могут не улучшить, а ухудшить внешний вид коврика.
Наверное, Вы обратили внимание, что создавая коврик (объект ChamferBox) я выбрал немалое количество сегментов по ширине (Width Segs=60) и длине (Length Segs=40). Для абсолютно прямого коврика такое количество сегментов не нужно. Это было сделано для того, что бы имелась возможность плавно изменять геометрию коврика. Под изменением геометрии я имею ввиду образование складок. Что бы получить доступ к вершинам, преобразуем объект ChamferBox в редактируемый полигон, затем при помощи перемещения вершин полигона изменим внешний вид коврика, добавив к нему несколько складок.
Применим к ChamferBox модификатор Edit Poly и перейдём к редактированию вершин:
Маленький совет! При редактировании подобъектов удобно пользоваться цифрами от 1 до 5. К примеру, для редактирования вершин достаточно нажать клавишу с цифрой 1. Попробуйте понажимать цифры от 1 до 5 и увидите, как легко можно переходить с одного подобъекта на другой.
В окне проекции сейчас можно наблюдать вершины достаточно плотно покрывающие объект ChamferBox:
Раскроем свиток мягкого выделения вершин (Soft Selection) и активируем его, установив галочку у параметра Use Soft Selection. Затем следует установить значение параметра Falloff. Данный параметр задаёт степень распространения (влияния) мягкого выделения на вершины, отстоящие от выделенной на заданное расстояние:
Я установил величину Falloff равную 7см. Вы можете выбрать иное значение. Это уже на Ваш вкус. Проще всего установить значение Falloff, если в окне проекции наблюдать как меняется распространение мягкого выделения на соседние вершины относительно выделенной:
Выделим одну из вершин находящуюся у самого края коврика (она является красной точкой) и меняя значение Falloff понаблюдаем как происходят изменения. Теперь создадим на коврике первую складку. Для этого в окне Perspective, захватим ось Z и переместим выделенную вершину вверх на 0,5-1 см. После рендеринга получим следующую картинку:
Первая складка готова.
Проделав подобную процедуру несколько раз на разное расстояние, и меняя значение Falloff в итоге получим коврик со складками:
Что об него вытирают ноги и спотыкаются сказать нельзя, но то что по нему ходят – это уже заметно. Признаться, я здесь не ставил цель добиться фантастического результата, моя задача заключалась в том, что бы показать как это делается. Поэкспериментируйте, с настройками свитка Soft Selection, наверняка у Вас получиться намного лучше. К стати, в свитке Soft Selection есть ещё не мало интересных параметров со своими настройками, которые выходят за рамки данной статьи, но не что не мешает Вам их попробовать.
И ещё! Уж коли речь зашла об экспериментах, попробуйте изменить толщину шерсти, её длину и т.д. Теперь Вы знаете, где и как это можно сделать. Результаты будут весьма интересными!
Если у Вас что то пошло не так, то скачайте готовый файл с финальным результатом на данный момент:
Итак, коврик готов!
Задачу минимум мы выполнили, но в настройках VRayFur осталось немало параметров, которые мы пока не рассматривали, или рассмотрели весьма поверхностно. Пора обратить на них внимание.
Признаться, сейчас я немного вздрогнул от того, что пытаюсь объять необъятное, потому как если подробно описать все возможности VRay Fur, то это потянет далеко не на одну статью. Постараюсь быть кратким, но тем не менее попытаюсь раскрыть как можно больше возможностей VRay Fur.
Вы, наверное, обратили внимание, что на данный момент коврик оброс шерстью не только сверху, но снизу и с боков. Сейчас сделаем так, что ворс останется только на том участке, который мы зададим, а на всей остальной поверхности он исчезнет.
Выделим объект VRayFur и в разделе Placement установим галочку возле параметра Selected faces:
Теперь шерсть будет расти только на выделенных гранях или полигонах. В окнах проекции внешний вид коврика никак не изменился, потому как этот эффект проявляется после визуализации сцены.
Выделим коврик, в панели модификаторов (Modify) перейдём на уровень редактирования полигонов и снимем галочку у параметра Soft Selection, которую мы установили ранее создавая складки на коврике, а у Ignore Backfacing – галочку установим:
Перейдём в окно Top и при помощи инструмента Select Object выделим полигоны как это показано на рисунке:
Галочку у Ignore Backfacing установили для того, что бы при выделении в область выделения попали только верхние полигоны, а нижние из процесса выделения, а значит и из процесса генерации шерсти - были исключены.
Что бы эффект от полученного результата был более заметен, назначим коврику (ChamferBox) материал отличный от меха жирафа, к примеру материал светло-серого цвета и отрендерим сцену:
Видно, что теперь мех расположен только на тех полигонах, которые были выделены. При этом опять появились проплешины, потому как цвет коврика отличается от цвета меха. Если Вы помните, то вначале статьи я обещал вернуться к разделу Distribution, где расположены атрибуты Per face (по грани), и Per area (по площади) и рассмотреть его подробнее. Сейчас мы это сделаем, а заодно и проплешины уберём.
Выделяем VRayFur, переходим в панель модификаторов объектов, ставим галочку у атрибута Per face и в поле ввода введём такое же число, которое мы ставили в Per area - 100:
После рендеринга получим следующий результат:
Проплешины исчезли. Всё дело в том что, установив галочку у Per face, мы тем самым заставили генерировать мех каждому маленькому полигону из которых состоит коврик с коэффициентом 100, в то время как такое же количество меха ранее генерировал весь объект. Очевидно, что плотность меха на единицу площади возросла и проплешины исчезли.
На мой взгляд, использование выделенных полигонов, является весьма экзотическим способом генерации шерсти и я его никогда не использую. Поэтому хочу Вам предложить иной способ. Он основан на присвоении определённой группе полигонов своего идентификационного номера (ID) и назначении материала каждой группе полигонов в соответствии с присвоенным ID.
Перед тем как двигаться дальше следует вернуть коврику материал шкуры жирафа. А свитке модификаторов объекта VrayFur вернуть галочку в положение Per area. Сделайте это.
Затем в окне Top при помощи инструмента Select Object выделим полигоны как это показано на рисунке:
Визуализируем сцену:
Видно, что мех расположен на тех полигонах, которые были выделены. А на бордюре коврика меха нет, но он окрашен в цвет материала шкуры жирафа, что совсем не радует глаз. Исправим этот недочёт.
Пока полигоны остаются выделенными (если это не так, то выделите их снова) переходим в самый конец свитка редактирования полигонов и в поле Set ID присвоим значение ID для выделенных полигонов равное 2-м, поле Select ID трогать не нужно, оно измениться автоматически:
Затем в редакторе материала перейдём в любой свободный слот и создадим материал Multi/Sub-Object. В качестве материала с идентификатором ID = 1 создадим стандартный материал VrayMtl у которого в качестве диффузной карты рассеяния выберем ткань, а для материала с идентификатором ID = 2 назначим уже имеющийся материал шкуры жирафа (перетащив его с зажатой левой кнопкой мыши на вторую позицию материала Multi/Sub-Object:
Назначим полученный материал коврику и отрендерим сцену:
Теперь те полигоны, которым назначен материал шкуры жирафа (ID=2) – генерируют шерсть, а полигоны, которым назначен материал ткани (ID=1) превратились в кайму коврика.
При этом весь шерстяной покров расположен только сверху, а значит при визуализации сцены, не будет затрачиваться время на генерацию и рендеринг шерсти, которая не видна.
Скачайте файл с финальным результатом:
Идём дальше.
Теперь разберём свитки Maps и Viewport display:
Свитки Maps.
Для изучения свитков забудем про коврик, он нам больше не понадобиться.
Создадим прямоугольник, вырастим шерсть на его верхнем участке и посмотрим на поведение её ворсинок в различных окнах проекции в зависимости от того, какую карту из свитка Maps будем применять. Правда на сей раз шерсть куда больше будет походить на траву, потому как для того, что бы все изменения были хорошо видны, длину шерсти придется сильно увеличить. Так что если Вам так будет понятнее, то считайте шерсть травой. Это значения не имеет.
Руками Вам делать ничего не нужно. Старайтесь провести мозговой штурм и вникнуть в суть написанного, потому как карты VrayFur устроены так, что не очень просто во всём разобраться. Я имею ввиду карты RGB. В mono картах все устроено проще.
Как Вы уже поняли в свитках Maps имеется два вида карт: RGB и mono. В RGB применяется цветное изображение, в mono применяются чёрно-белые цвета.
Карты RGB.
Bend direction map – задает направление изгиба ворсинок шерсти в зависимости от интенсивности цветовых каналов RGB. Изгиб плавно распределяется по всей длине ворсинок.
Следует не забывать, что при визуализации сцены, финальная величина изгиба зависит не только от влияния карты Bend direction map, но и от настроек заданных в параметрах VrayFur:
Красным цветом обведены параметры влияющие на конечный результат.
Для того, что бы понять как организован процесс влияния карты на конечный результат, следует помнить что ориентация изгиба, привязана к цветовой гамме осей принятых в 3D Studio Max.
Ось X – имеет красный цвет
Ось Y – имеет зелёный цвет
Ось Z – имеет синий цвет
Соответственно, в трёхмерной системе координат:
- изменение интенсивности красного цвета влияет на изгиб ворсинок по оси X (влево/вправо);
- изменение интенсивности зелёного цвета влияет на изгиб ворсинок по оси Y (вперёд/назад);
- изменение интенсивности синего цвета влияет на изгиб ворсинок по оси Z (вверх/вниз);
Для понимания влияния цвета на изгиб ворсинок, следует наблюдать за процессом как минимум в двух окнах проекции. Для полноты восприятия мы будем использовать три окна Front, Right и Perspective. Поскольку влево/вправо, вперёд/назад, вверх/вниз в 3D графике понятия весьма относительные, тут всё зависит от того, из какого окна проекции наблюдать за процессом, то в качестве точки отсчёта я выбрал окно Front.
Главное что Вы должны понять, это то, что именно считать нулевой точкой отсчёта при изгибе. Хорошо известно, что при изменении трёх значений цветовой палитры (RGB) можно получить любой цвет. Значения цветовых составляющих меняются от 0 до 255. И если, к примеру, потребуется изменить изгиб ворсинок по оси X на максимальное значение вправо, то логично было бы предположить, что для этого следует изменить значение красного цвета с 0 до 255. Но в таком случае, возникает вопрос, а как же тогда менять изгиб влево? Ведь все возможности по изменению цвета были уже использованы! Здесь нужно понять, что в карте Bend direction map, за нулевое значение принимается середина цветовой палитры каждой составляющей цвета. Ниже приведены цветовые палитры, для стандартного RGB цвета и для режима применяемого в настройках карты Bend direction map:
Видно, что при стандартном использовании цвета в любом цветовом канале цвет изменяется от 0 до 255. При этом значение 128 является серединой. Вот эта самая середина и является нулевой точкой отсчёта при использовании карты Bend direction map, где влияние цвета на конечный результат - минимально. Теперь становиться понятно, что для максимального изменения наклона ворсинок вправо, следует установить значение красного цвета на максимум возможного, т.е. в установить значение +127. Если потребуется максимальный наклон влево, то значение красного цвета следует установить в позицию -127. Для зелёного и синего цвета – аналогично. К этому нужно привыкнуть, потому как на экране дисплея будет видно что значения меняются от 0 до 255, а то что в карте Bend direction map значение 128 является нулевой точкой и изменения происходят при отклонении влево и вправо от неё - следует держать в уме.
С теорией разобрались, теперь займёмся практикой.
Скачайте исходный файл, если желаете исследовать карту Bend direction map вместе со мной.
Выделим объект Vray Fur, перейдём в панель модификаторов и назначим для Bend direction map карту VrayColor:
Что бы получить доступ к параметрам, перенесем карту VrayColor (зажав левую кнопку мыши) в свободный слот редактора материалов как образец (Instance):
По умолчанию значения всех цветовых каналов равны 0,5 (RGB = 128) т.е. половине от всего цветового диапазона. Значит на данном этапе выставлен тот самый ноль, про который речь шла выше и влияние карты на конечный результат изгиба будет минимальной (но оно все таки будет, если отключить карту, то положение ворсинок будет иным).
Визуализируем сцену и получим следующий результат:
Вы сейчас видите значения RGB = 128, но Вы должны помнить, что для карты Bend direction map - это означает 0. Поэтому влияние цветовых каналов на результат – минимальный.
Кликнем по параметру color карты VrayColor, и в открывшейся палитре цветов изменим значение красной составляющей до 180 и снова визуализируем сцену:
В окне Front хорошо видно, что ворсинки изогнулись вправо вдоль оси X, потому как мы увеличили красную составляющую относительно нуля. Снова изменим значение Red, уменьшив его до 70 и отрендерим сцену:
Видно, что ворсинки наклонились в левую сторону, потому как на сей раз мы уменьшили красную составляющую относительно нуля.
Теперь исследуем влияние зелёного канала. Вернём красную составляющую в нулевое положение (R = 128) и увеличим значение зелёной до 180. Отрендерим сцену и получим следующий результат:
В окне Right видно, что при увеличении зелёной составляющей, ворсинки отклонились вправо (вперёд). Уменьшим зёлёный цвет до 70 и визуализируем сцену:
Сейчас в окне Right ворсинки отклонились влево (назад).
Теперь исследуем влияние синего канала. Вернём значение зелёной составляющей в нулевое положение (G = 128) и увеличим значение синей до максимально возможного, равного 255. Отрендерим сцену и получим следующий результат:
Поскольку влияние красного и зелёного каналов сейчас минимально, то отклонений влево/вправо и вперёд/назад практически нет. А максимальное значение синего канала отвечающего за направление вверх/вниз заставило шерсть подрасти (вытянуться) вверх до максимума. Уменьшим влияние синего канала до минимального и получим следующую картину:
Как и ожидалось – шерсть прильнула к земле.
Initial direction map – карта, определяющая начальное направление роста ворсинок. В отличие от предыдущей (Bend direction map где изгиб плавно распределялся по всей длине ворсинок), здесь направление задаётся только в самом начале роста ворсинки шерсти. Далее ворсинки шерсти растут в указанном направлении и по всей своей длине никак не изменяются. Если вместо шерсти представить траву, можно сказать, что травинка получает заданное картой направление у самой начальной точки роста (там где трава соприкасается с землёй) и получив направление – растёт в этом направлении. Все вышеприведённые рассуждения (для карты Bend direction map), о том где расположена нулевая точка отсчёта и как связаны направления отклонений по осям - справедливы и для Initial direction map. Поэтому здесь уже не будем погружаться в теорию, а сразу перейдём к практике.
Скачайте исходный файл, если желаете исследовать карту Initial direction map вместе со мной.
Тем же способом, как мы это делали раньше, назначим для Initial direction map карту VrayColor и визуализируем картинку с нулевыми параметрами влияния карты на конечный результат:
Пока ни каких изменений направления роста ворсинок не наблюдается.
Изменим значение красной составляющей до максимального значения R = 255:
В окне Front видно как направление роста ворсинок изменилось (можно даже сказать преломилось) в самом начале их роста и весь пучок шерсти направился расти в правую сторону.
При минимальном значении красной составляющей R = 0:
При максимальном значении зелёной составляющей G = 255:
При минимальном значении зелёной составляющей G = 0:
Синяя составляющая при использовании карты Initial direction map даёт мало-предсказуемый результат. Поэтому здесь её лучше не использовать.
Карты mono.
В картах mono, в отличие от карт RGB, для того что бы наблюдать за процессом изменения параметров шерсти достаточно одного окна проекции. Выберем окно проекции Front, в котором будем наблюдать за происходящими изменениями.
Length map - картa мультипликатор отвечающая за высоту ворсинок шерсти, где абсолютно чёрный цвет - множитель равный 0.0, а абсолютно белый цвет - множитель равный 1.0.
При черном цвете карты высота ворсинок равна 0. При белом цвете карты высота ворсинок равна значению, заданному в поле Lenght.
Скачать файл Length map:
Скачать
Thickness map - картa мультипликатор отвечающая за толщину ворсинок шерсти, где абсолютно чёрный цвет - множитель равный 0.0, а абсолютно белый цвет - множитель равный 1.0.
При черном цвете карты толщина ворсинок равна 0. При белом цвете карты толщина ворсинок равна значению, заданному в поле Thickness.
Скачать файл Thickness map:
Скачать
Gravity map – картa мультипликатор отвечающая за влияние гравитации на ворсинки шерсти, где абсолютно чёрный цвет - множитель равный 0.0, а абсолютно белый цвет - множитель равный 1.0.
При черном цвете карты влияние гравитации равно 0. При белом цвете карты влияние гравитации равно значению, заданному в поле Gravity.
Скачать файл Gravity map:
Скачать
Bend map – картa мультипликатор отвечающая за изгиб ворсинок шерсти, где абсолютно чёрный цвет - множитель равный 0.0, а абсолютно белый цвет - множитель равный 1.0.
При черном цвете карты изгиб ворсинок равен 0. При белом цвете карты изгиб ворсинок равен значению, заданному в поле Bend.
Скачать файл Bend map:
Скачать
Density map – карта влияющая на плотность шерсти. Абсолютно черный цвет карты соответствует нулевой плотности (фактически, в этих областях шерсти нет), а абсолютно белый цвет - представляет собой нормальную плотность шерсти, указанную в параметре Per area.
При черном цвете карты плотность шерсти равна 0 т.е. практически отсутствует. При белом цвете карты плотность шерсти равна значению, заданному в поле Per area.
Скачать файл Density map:
Скачать
Свиток Viewport display.
Здесь нет ничего сложного. Для того, что бы разобраться как тут всё устроено, достаточно снимать и ставить галочки расположенные в этом свитке наблюдая в окнах проекции за тем что происходит.
Preview in viewport – включает/отключает схематическое отображение шерсти в окнах проекции;
Max. hairs – значение установленное в этом поле показывает максимальное количество ворсинок шерсти, которые будут отображаться в окнах проекции. Уменьшение этого значения снижает время обновления в окнах проекции в случае очень плотного меха.
Icon text – включает/отключает отображение текста VRayFur в окне проекции;
Automatic update - Если этот параметр включён (стоит галочка), то по мере изменения параметров объекта VRayFur, схематическое отображение шерсти в окнах проекции будет автоматически обновляться. Следует не забывать, что в случае очень плотного меха это может замедлить работу компьютера. В этом случае отключите данную опцию, чтобы перейти на режим ручного обновления;
Manual update – кнопка ручного обновления параметров VRayFur. Применяется в том случае, если режим автоматического обновления (Automatic update) был отключён.
Это всё, что я хотел Вам рассказать в данной статье.