Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Система волос в 3ds max - Hair and Fur Extension от Joe Alter

Читайте также:
  1. A Piezoelectric Crystal Resonator under an Alternating Voltage
  2. A. [мах. 2,5 балла] Соотнесите систематические группы растений (А–Б) с их признаками (1–5).
  3. Adventure Gay Time alternative
  4. ALTERED STATES
  5. Alternative causes of the financial crisis
  6. ALTERNATIVE ENERGY
  7. Alternative medicine

Полноценное использование возможностей mental ray для представления и рендеринга многосоставных систем впервые стало возможным в 3ds max 7.5 благодаря появившемуся Hair and Fur Extension (далее - H&F). Давайте поближе познакомимся c его возможностями.

Hair and Fur Extension, являясь расширением 3ds max, основывается на хорошо известной программе Shave and a Haircut, разработанной Joe Alter, Gonzalo Rueda и Dean Edmonds, которая в 2003 году получила "Innovation Award" от Computer Graphic World. Shave and a Haircut заслуженно пользуется высокой репутацией и в настоящее время, как плагин, работает в Maya, C4d, XSI и 3ds max под различными операционными системами - Windows, Linux, Mac OS X. Shave and a Haircut успел сняться во многих фильмах, в том числе и анимационных - достаточно вспомнить впечатляющие "Шрек" и "Шрек-2".

В рабочей среде 3ds max H&F выполняет роль прикладного интерфейса высокого уровня и позволяет работать с многосоставными системами привычными инструментами моделирования, не задумываясь об особенностях их программной реализации. H&F совершенно "прозрачен" для mental ray - при рендеринге hair - объекты могут конвертироваться в "родной" формат описания hair-primitive mental ray, который мы рассмотрели выше.

Создать hair - объект можно либо из геометрических поверхностей практически любого типа: mesh, poly, NURBS, patch, геометрических примитивов 3ds max (куб, сфера и других), либо из набора кривых - сплайнов. Все что требуется сделать - это назначить модификатор Hair and Fur (WSM) геометрическому объекту, группе полигонов или группе сплайнов и затем выполнить настройку параметров модификатора.

Настройке доступны такие свойства элементов, как их общее количество, размер, цвет элемента, плотность, кривизна, displacement и другие. Для определения значений параметров можно использовать растровые карты и процедурные материалы.

Hair and Fur (WSM) является неразрушающим модификатором - тип объекта, к которому он применен, остается неизменным. Например, назначение модификатора кубическому примитиву не приводит к его конвертированию в mesh. Элементы hair - объекта могут быть собраны в отдельные группы - пучки травы, локоны и тому подобное. Доступно конвертирование hair-объектов в набор сплайнов или обычные геометрические объекты.

Посредством механизма instance - подстановки, в качестве элементов hair - объекта могут выступать не только кривые - сплайны, но и любые геометрические объекты. При этом возможно задействование материалов исходного геометрического объекта. Instance - подстановка позволяет создать из одного дерева лес, из одного цветка - цветущую поляну и так далее. С минимальными усилиями.

Элементы hair-объекта можно "причесывать" с помощью инструментов стилизации специального редактора. В арсенале различные режимы выбора элементов, изменения их положения и размера: Brush, Drag, Shake, Translate, Stand, Puff Roots, Clump, Rotate, Scale и другие. Редактирование выполняется интерактивно в отдельном OpenGL - окне Style Dialog, которое имеет собственный интерфейс и средства навигации сцены, в большинстве идентичные 3ds max.

Элементы hair-объекта могут быть анимированы как единая система, находящаяся под влиянием внешних динамических сил, например гравитации или ветра. В качестве внешних сил используются 3ds max Forces (Space Warp), а расчет анимации учитывает detect collision - расчет столкновений с другими объектами.

При рендеринге объекты H&F рассчитываются как render effect, который автоматически создается и появляется в списке эффектов Rendering > Effects. Возможны три различных режима рендеринга: buffer, geometry и MR prim.

Buffer является собственным режимом рендеринга модуля H&F, элементы многосоставной системы генерируются процедурно во время рендеринга по настройкам модификатора. В этом режиме допустимо дополнительно задавать такие опции, как подготовка рассчитываемого изображения к компоузингу, motion blur, oversampling, определение некоторых свойства источников освещения (разрешение карты Shadow map для расчета тени).
H&F в режиме рендеринга buffer может рассчитывать освещение только от источников 3 ds max типа omni и spot, любые другие источники игнорируются. Единственный допустимый тип теней элементов hair-объекта - Shadow Map. Расчет изображения может быть выполнен только для вида из камеры или перспективного вида. Порядок расчета - сначала изображение объекта, на основе которого создается hair- объект, затем - тени, в последнюю очередь рассчитываются сами элементы многосоставного объекта.

В режиме geometry hair-объект преобразуется в стандартный полигональный объект, состоящий из треугольников. Это самый медленный режим рендеринга, требующий большого количества памяти.

В режиме MR prim H&F преобразовывает свои объекты в mental ray hair-primitive и происходит это непосредственно во время рендеринга. Такое преобразование возможно благодаря библиотеке дополнительных шейдеров, основывающихся на шейдерах и функциях mental ray. Как правило, файл библиотеки находится в диск:\корневой каталог 3dsmax7\mentalray\shaders_autoload\shaders\hairMRShader.dll, файл декларации шейдеров - диск:\корневой каталог 3dsmax7\shaders_autoload\include\ hairMRShader.mi. Библиотека содержит два типа шейдеров - для геометрического представления hair-объектов и для конвертирования материалов в цвет элементов. Основная задача этих шейдеров - описать hair-объекты модуля H&F на "языке" hair-primitive mental ray.

Использование режима MR prim превращает модуль H&F в инструмент моделирования 3ds max, результаты работы которого рендерятся mental ray. При этом сразу становятся доступны все возможности mental ray: hair- объекты освещаются любыми источниками света, рассчитываются все типы освещения, включая global illumination и ambient occlusion, доступны тени и материалы любого типа. Можно также выполнить экспорт сцены в mi - файл для рендера в standalone mеntal ray.

Рассмотрим пример - вырастим мех у крысы. Трехмерная модель выглядит следующим образом:

 


Сетка модели

 


Рендер сцены с источниками света

Для выращивания шерсти можно использовать два способа - из полигонов поверхности модели или из набора сплайнов. В данном случае удобнее воспользоваться первым способом.

Выращивание шерсти из полигонов основывается на генерации модификатором Hair and Fur (WSM) так называемых guide - кривых, или направляющих, которые определяют каркас всего многосоставного объекта.
В текущей версии Hair and Fur для 3ds max 7.5 guides - кривые генерируются в каждой вершине всех треугольников полигонного объекта - одна guide на вершину. Управлять количеством генерируемых направляющих непосредственно нельзя, только через количество треугольников поверхности. На практике количество guides желательно иметь таким, чтобы их можно было редактировать в интерактивном режиме. Например, для Athlon XP@2500 c 1Gb RAM и видеокартой GeForce FX 5700, верхняя планка находится на уровне 10-20 тысяч треугольников на поверхность. Превышение этого числа чревато серьезными "тормозами" при редактировании hair-объекта. Редактор Style Dialog (Hair) работает в отдельном OpenGL окне, поэтому производительность видеокарты напрямую определяет максимальное количество волос, с которым можно работать комфортно.

Оптимальным для выращивания меха из полигонных поверхностей является low-poly объект с хорошей топологией и примененным к нему модификатором Mesh Smooth.
В случае высокополигонных mesh-поверхностей, как в случае данной сцены, можно пойти другим путем - назначить поверхности модификатор Mesh Optimize и уменьшить число треугольников поверхности до приемлемого. Если этот способ по каким-либо причинам не подходит, остается строить волосы по созданному вручную набору сплайнов.

Для данной модели мех нужно вырастить на туловище и голове крысы. Уши, лапы и хвост покрыты "голой" кожей и волос не имеют. Поэтому, модель разделена на несколько отдельных mesh - поверхностей выделением групп полигонов туловища и головы и использованием функции detach.

 


Две поверхности, на которых будет выращен мех

Также, можно просто выделить нужные полигоны после применения модификатора Hair and Fur и нажать кнопку Update Selections.

 


Модификатор Hair and Fur,
секция Selection

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

Количество полигонов туловища модели крысы не превышает 20 тысяч, что вполне приемлемо, поэтому сразу применяем к ней модификатор Hair and Fur (WSM).
По умолчанию в видовом окне отображаются hair, а не guides, в соответствии с настройками секции Display модификатора.

 


Отображение в видовом окне
сгенерированных модификатором волосков

Теперь переходим к секции General Parameters модификатора и устанавливаем следующие значения параметров:

 

Поскольку мы уже довольно подробно ознакомились с идеологией представления многосоставных объектов, смысл этих и всех нижеследующих параметров должен быть совершенно понятен.

Hair Count определяет общее количество элементов для поверхности, к которой применен модификатор Hair and Fur. Для туловища крысы вполне достаточно 65 тысяч волосков, а максимум для одного модификатора составляет 999 999 элементов.

Hair Segments определяет количество сегментов одного элемента - волоска. Поскольку волоски щетины крысы почти прямые, 4 сегментов вполне достаточно. Если волосы длинные и завиваются, потребуется увеличить число сегментов.

Hair Passes реализует свойство прозрачности волосков. Для этой цели волоски рендерятся указанное в Hair Passes число раз в специальные буферы с разным значением seed и затем смешиваются друг с другом. Чем больше Hair Passes, тем прозрачнее волоски. Щетина крысы довольно груба, поэтому всего 2. Для волос человека потребовалось бы 4 или даже больше.

Density - плотность распределения волос по поверхности. Этот параметр интересен тем, что может использовать растровую карту для определения плотности. В данной сцене эта возможность не используется, плотность оставлена равномерной и равной 100 %.

Scale и Cut Length управляют длиной волос (в процентах от общей длины). Задать явное значение длины волос нельзя, соответствующий параметр просто отсутствует в модификаторе. Поэтому, частично управление длиной возложено на указанные параметры, а основной способ изменения длины - масштабирование в редакторе Style Hair. В общем случае длина волос в H&F пропорциональна размеру полигона.

Rand Scale определяет случайное изменение длины для разных волосков. Поскольку щетина крысы на теле довольно равномерна, этот параметр имеет относительно небольшое значение - изменение длины задано в пределах 20 %.

Root Thick и Tip Thick задают толщину волоска у основания (корня) и у верхушки соответственно. Значения этих параметров определены экспериментально, по результатам рендеров, и имеют значения 1 и 0.5. Значения толщин не абсолютны, а пропорциональны размеру полигона, из которого выращивается. Для планирования результата удобно считать, что значения толщины измеряются в процентах от размера полигона.

Displacement позволяет задать смещение основания волоска по высоте относительно поверхности. Этот параметр может быть полезен при присоединении сгенерированных по сплайнам волос к поверхности - для настройки контакта элементов с самым верхним слоем ("землей") в многослойных композициях.

Interpolate - основной режим генерации волос по guides-направляющим. Если галочка установлена, элементы в данной точке поверхности генерируются как результат линейной интерполяции по ближайшим направляющим. Если галочку убрать, hair - объект будет состоять и рендериться только из guide-направляющих.

Теперь выполним предварительную настройку материала волосков. Переходим к секции Material Parameters.

 

Occluded Amb определяет соотношение фонового освещения и освещения от источников света в сцене. Значение параметра равное 100 задает освещение только от источников сцены и полностью отключает фоновое освещение. Пока оставим значения по умолчанию - 60 % фонового освещения и 40 % от источников сцены (четыре источника типа spot).

Tip color и Root Color - цвет верхушки и основания волоска соответственно. Для меха крысы используется чистый белый цвет для обоих параметров, хотя для корней можно взять чуть более темный оттенок.

Для определения цвета также можно использовать растровые и процедурные карты или материалы, текстурные координаты для элементов наследуются от поверхности, на которой они выращены. Для волос использование материалов почти бессмысленно по причине малой их толщины. Если же в качестве элементов составного объекта посредством Instance Node секции Tools модификатора используются объекты с бОльшей площадью поверхности, для них назначение материалов для определения цвета вполне может иметь смысл. Например, задавая dgs - материал для цвета таких элементов, можно рассчитать фотонную карту для поверхности многосоставного объекта (рендер должен выполняться с использованием MR Primitive).

Если Instance - объекты имеют собственные материалы, они могут быть использованы. Тогда необходимость определения материалов в самом модификаторе отпадает. При использовании растровой карты/материала для определения цвета следует иметь ввиду, что цвет Tip color и Root Color выполняет роль множителя и всегда участвует в определении цвета. Конечный результат будет определяться умножением цвета карты/материала на цвет Tip color и Root Color.

Hue Variations и Value Variations определяют вариации оттенка и интенсивности цвета вдоль длины волосков. Эти параметры нужны для получения многообразия цветовых оттенков элементов, если это необходимо. Поскольку щетина крысы преимущественно белая, значения этих параметров имеют относительно небольшие значения - 10 и 5, можно меньше.

Specular и Glossiness определяют цвет и размер пятна подсветки волосков. Если элементы нужно отделить друг от друга, Glossiness должен иметь довольно большое значение, что обеспечивает маленький размер пятен подсветок. Наоборот, если требуется, чтобы волоски образовывали однородную массу, Glossiness должен быть небольшим. Диапазон значений Glossiness составляет 0 -100.

Self Shadow - самозатенение элементов, или тени от волосков, которые они отбрасывают друг на друга. Параметр имеет силу только в том случае, если рендер выполняется Hair and Fur в режиме buffer. Для рендера сцены выбрано значение 20.
Способ расчета тени, используемый Hair and Fur в режиме buffer, хотя и называется Shadow Map, таковым не является. Обычные Shadow map не в состоянии рассчитать тень для таких тонких элементов, как волосы. В Hair and Fur используется более сложный алгоритм - deep-shadow-accumulation buffers, или расчет буферов теней с накоплением по глубине объектов относительно источника света с учетом прозрачности волос. Этот алгоритм работает только с источниками типа spot. Детализация теней будет зависеть от фокусировки spot и размера Shadow map.
В mental ray аналогичный результат может быть достигнут расчетом ray trace теней в режиме segment. Это почти вдвое медленнее, но зато тени могут быть рассчитаны для источников света любого типа.

Geom Shadow позволяет изменять прозрачность тени, отбрасываемой на мех другими объектами. Также имеет силу только для рендера в режиме buffer.

Mutant Color и Mutant % позволяют определить цвет и процентное содержание волосков с цветом или материалом, отличающимся от основной массы остальных волос. Например, так можно определить "седые" волосы в прическе. В данной сцене эта возможность не используется.

Теперь самое время посмотреть, что у нас получается и выполнить предварительный рендер. Но прежде еще несколько замечаний.
На этой стадии настройки используется тип рендеринга buffer (модификатор Hair and Fur > секция Tools > Render Settings > Hair Rendering Options). В сцене четыре spot-источника, тип теней Shadow map (точнее deep-shadow-accumulation, поскольку тип рендера - buffer).

Итак, первый рендер:

 

Самое время "причесать" волоски.

Выделяем hair-объект и вызываем окно редактора Style Hair (секция Tools модификатора H&F > Style Hair).

 


Окно редактора Style Hair

Окно редактора предназначено для стилизации guides и имеет инструменты для выбора элементов, их редактирования, средства навигации и различные дополнительные функции. Подробности можно получить из справки по Style Hair.

Для редактирования меха крысы сначала использовалась "Attenuate the hair length by growth poly size". Эта функция изменяет длину волоска пропорционально размеру полигона, из которого он выращен - меньше полигон, короче волосок. Полезно для мест поверхности, где много складок и изгибов и где волосы естественным образом должны быть короче.

Затем длина всех волос одновременно была отмасштабирована инструментом Brush в режиме Scale до приблизительно нужной длины.

Далее, при включенном расчете столкновений с поверхностью-основой меха (Toggle collisions on), использовалась функция Recomb, которая "прижала" волоски по всей их длине к поверхности-основе и при помощи Brush в режиме Translate выполнено "причесывание" волосков в нужных направлениях. Этот процесс более всего сходен с рисованием, а степень его интерактивности может сделать работу либо удовольствием, либо сущим кошмаром.

Наконец, волоски у основания были немного приподняты от основы при помощи все того же Brush, но в режиме Poof Roots out, который выпрямляет часть волоска по направлению нормали у его корня. Это сделано для придания "прическе" объема, или "распушенности".

В результате всех этих манипуляций было получено следующее:

 

Редактор Style Hair имеет режим предварительного просмотра, который дает бОльшее представление о конечном результате и считает довольно быстро:

 


Окно предварительного просмотра Style Hair

Жмем Done, возвращаемся в 3ds max и выполняем рендер.

 

Волосы образуют излишне однородную, прилизанную массу. Ну так исправим эту однородность! И сделаем это при помощи секции Frizz Parameters:

 


Секция параметров Frizz

Параметры этой секции позволяют определить завивания (или локоны) элементов-волосков. Для этого нормали двух концевых точек каждого волоска отклоняются на случайный угол. Величина угла определяется заданием в настройках начальных значений углов и по генерируемой внутренним образом карте шума типа Perlin noise. Изгиб вдоль длины волоса рассчитывается интерполяцией нормалей промежуточных точек волоска по нормалям концевых точек.

Frizz Root и Frizz Tip - начальный угол нормалей для корня и верхушки волоска соответственно. Эти величины могут быть постоянны для всех элементов, а их относительная разница определяет отклонение верхушки относительно корня (то есть - степень извилистости волоска). Или могут определяться растровой картой, тогда начальные углы нормалей будут вычисляться по растровой карте. Случайные отклонения, вычисляемые по карте шума, складываются с начальными отклонениями и таким образом получаются результирующие отклонения, свои для каждого элемента.

Можно сказать, что применение Frizz придает каждому волоску уникальную "индивидуальность" - неповторимую форму и положение, а их нулевые значения отключают действие Frizz. Результат изменения параметров Frizz можно наблюдать в видовом окне. Если в секции Dynamics модификатора включен режим Live, изменение параметров Frizz можно анимировать.
Выбранные значения для меха крысы - 45 для корней и 50 для верхушек.

Секция Frizz Parameters также позволяет также управлять частотой шума и анимацией шума. Теперь мех выглядит так:

 


Влияние параметров Frizz

Аналогичную функцию выполняют и параметры секции Kink, с той только разницей, что карта шума применяется к нормалям всех точек волоса, а не только концевых. В результате можно получить, скажем так, "кудри" вдоль всей длины волоса. То есть, направления нормалей могут изменяться резко, а не плавно, как при интерполяции. Для данной сцены необходимости в этом нет, поэтому соответствующие параметры имеют нулевые значения.

Параметры секции Multi Strand, позволяющие собирать отдельные волоски в пряди или пучки, также не используются в этой сцене, поскольку щетина крысы такими свойствами не обладает.

Теперь перейдем к параметрам Render Settings (секция Tools модификатора > Render Settings) и изменим режим рендеринга "buffer" на "MR Prim" - это позволит задействовать механизм представления волос средствами mental ray (mental ray должен быть назначен текущим рендером). Тип теней у источников пока оставим Shadow map и изменим значение Material Parameters > Occluded Amb с 40 до 95 (мех освещается только источниками, фон почти не учитывается). Выполним рендер с значениями AA 1 - 4 и фильтром Lanczos.

 


Рендер в режиме MP Prim c Shadow map

Как видим, мех стал темнее, а волоски выглядит толще и грубее, детализация меньше. Время сравнимо со временем рендера в режиме buffer.
Теперь зададим расчет ray trace теней у источников в режиме segment вместо Shadow map и снова выполним рендер.

 


Рендер в режиме MP Prim с ray trace тенями

Рендер стал гораздо более детальным за счет более точного расчета теней. Как видим, обычные Shadow map для рендера волос не очень хороши. Время рендера увеличилось почти вдвое. Но зато такие тени могут быть просчитаны у источников любого типа.

Теперь все вышеописанное нужно повторить для поверхности головы. Но сначала нужно применить модификатор Mesh Optimize и уменьшить число полигонов вдвое. Все параметры волос головы идентичны параметрам волос тела.
Еще я добавим sss-fast материал для ушей, лапок и хвоста и немножко glossy для поверхности подставки.

Финальный рендер:

 


"Лабораторная крыса"

Пир необходимости эту сцену можно экспортировать в mi - файл для рендера в standalone mental ray. Размер файла настроенной сцены в формате 3ds max - около 40 мегабайт. При экспорте в mi (ASCII) размер файла увеличится в несколько раз.

Рендер этой сцены, содержащей около 100 тысяч элементов-волосков и около 50 тысяч полигонов, выполняется довольно быстро. А вот памяти расходуется в пределах 2,7 гигабайт. Это почти предел для Windows XP-32.

Это означает, что для сцен с большим количеством элементов, например - экстерьеров с большой площадью, покрытой травой, придется выполнять раздельный рендер по слоям или по проходам, если мы захотим использовать Hair and Fur для "выращивания" травы. Отдельно - рендер травы и отдельно - остальной сцены.
Количество доступной в 32-битных ОС памяти все чаще становится самым "узким" местом CG - расчетов.

 


Двухслойная композиция: первый слой - трава, второй - цветы, реализованный при помощи Instance Node H&F. Освещение - Skylight + Spot, ray trace тени, рендер mental ray (HR Prim) c использованием Final Gather (один диффузный отскок)

Итак, благодаря расширению Hair and Fur, реализованы ранее недоступные возможности mental ray, а арсенал средств моделирования 3ds max обогатился мощным набором средств моделирования и рендеринга таких интересных и нужных объектов, как многосоставные системы. Кроме того, Hair and Fur обладает собственными эффектными и эффективными средствами рендеринга, использующими Shadow-depth map buffers. Есть из чего выбрать.

 


Дата добавления: 2015-10-28; просмотров: 207 | Нарушение авторских прав


Читайте в этой же книге: Физическая модель подповерхностного рассеяния в mental ray – SSS Physical Material | Шейдер miss_physical | Тест 1. Расчет подповерхностного освещения методом однократного рассеяния | Тест 5. Текстурные трехмерные карты для коэффициента рассеяния | Часть 4. Упрощенная модель подповерхностного рассеяния SSS Fast | Материал miss_fast_simple_phen | Шейдеры группы miss_fast | Создание собственных материалов SSS Fast | Запекание с mental ray | RTT (Render To Texture) в 3ds max 7.5 |
<== предыдущая страница | следующая страница ==>
Создание и использование Normal bump map при помощи RTT и mental ray| Вход в программу MentorLearn

mybiblioteka.su - 2015-2024 год. (0.02 сек.)