- •Часть 1. Метод фотонных карт. Final Gathering
- •1. Испускание фотонов
- •2. Трассировка фотонов
- •3. Создание фотонной карты
- •4. Использование фотонной карты при рендеринге
- •Параметры настройки фотонных карт в mental ray для 3ds max, закладка Indirect Illumination
- •Оценка освещения точки поверхности по заданному количеству фотонов
- •Окно настроек фотонных карт
- •Настройка глубины трассировки для фотонов
- •1. Построение Grid сетки в растровом пространстве изображения
- •2. Предварительная стадия расчета fg
- •3. Рендеринг
- •Диагностический рендер fg-расчета. Радиус 10см, fg Samples 1000
- •Интерфейс настройки параметров fg-расчета
- •Часть 2.
- •Интерфейс шейдера Ambient/Reflective Occlusion в 3ds max
- •Сцена освещена двумя стандартными точечными источниками света (omni light)
- •Шейдер ао назначен диффузным свойствам материалов
- •Все тени в сцене рассчитаны ambient occlusion
- •Настройка ambient свойств материала для использования ао
- •Источник света проявляет диффузные характеристики поверхности
- •Ambient occlusion в режиме 1, учитывается цвет окружения
- •Шейдер ambient occlusion назначен точечному источнику света. Другого освещения в сцене нет
- •Простой reflective occlusion с картой отражения на параметре Bright – шейдер "видит" затеняющую геометрию, но не может построить правильные отражения – вместо них мы видим черные пятна
- •Пример диаграммы более сложного материала, позволяющего получить отражения с помощью reflective occlusion
- •Материал с Reflective occlusion, позволяющий получить отражения
- •Еще один пример материала для reflective occlusion
- •Источник света – Skylight, расчет освещения выполнен при помощи Final Gather, время вычислений – 2 часа 15 минут
- •Часть 3. Физическая модель подповерхностного рассеяния в mental ray – sss Physical Material
- •Шейдер miss_physical
- •Скриншот тестовой сцены
- •Слева-направо: камера под углом 90, 45 и 35 градусов к нижней грани
- •Слева - направо: depth 1, 10, 20, 100
- •Слева - направо: depth 1, 10, 20, 100
- •Слева - направо: depth 1, 10, 20, 100
- •Сцена 1. Молоко в стеклянном стакане
- •Сцена 2. Горящая цилиндрическая свеча
- •Сцена 3. Кубическая свеча
- •Часть 4. Упрощенная модель подповерхностного рассеяния sss Fast
- •Рассеянный задней поверхностью свет освещает переднюю поверхность
- •Материал miss_fast_simple_phen
- •Вверху — объект со стандартным материалом (Blinn), внизу — с материалом sss Fast Material
- •Вид интерфейса sss Fast Material по умолчанию в 3ds max Вид интерфейса sss Fast Material со всеми открытыми слотами свойств
- •Для шейдера bump использована растровая карта
- •Рассеяние без и с использованием ambient occlusion (нижнее изображение)
- •Применены растровые карты для bump, overall diffuse coloration и specular
- •Расчет освещения с final gathering, вверху — indirect off, внизу — indirect on
- •Шейдеры группы miss_fast
- •Диаграмма построения материала
- •Стандартный материал (phong) с картами для цвета, отражений и рельефа
- •Материал кожи со значениями по умолчанию
- •"The Final Battle". Автор: Max Kor
- •Создание собственных материалов sss Fast
- •Часть 5. Запекание текстур (render to texture)
- •Интерфейсы шейдеров mib_lightmap_write и mib_lightmap_sample
- •Пример достаточно удачных текстурных координат Неудачные текстурные координаты - множество швов и несвязанных координатных областей. Редактировать их будет довольно сложно
- •Blend - материал, запеченный scanline Запеченная текстура
- •Запеченная текстура
- •Копируем перетягиванием запекаемый материал в сэмплер поверхности
- •Рендер с текстурой, запеченной из blend-материала при помощи mental ray Запеченная текстура теперь выглядит правильно
- •Текстура с освещением
- •Интерфейс rtt
- •Секция параметров General Settings
- •Секция параметров Objects to Bake
- •Секция параметров Output
- •Секция Baked Material
- •Секция Automatic Unwrap Mapping
- •Сцена с caustic-эффектом, рассчитанным по фотонной карте
- •Настройки для запекания caustic фотонной карты
- •Запеченная фотонная карта
- •Рендер с запеченной в текстуру фотонной картой
- •Редактирование вершин Cage
- •Карта нормалей
- •Модель с Normal bump map
- •Высокополигонный источник и низкополигонный объект - цель
- •Часть 6.
- •Сетка модели Рендер сцены с источниками света
- •Две поверхности, на которых будет выращен мех
- •Модификатор Hair and Fur, секция Selection
- •Отображение в видовом окне сгенерированных модификатором волосков
- •Окно редактора Style Hair
- •Окно предварительного просмотра Style Hair
- •Секция параметров Frizz
- •Влияние параметров Frizz
- •Рендер в режиме mp Prim c Shadow map
- •Рендер в режиме mp Prim с ray trace тенями
- •"Лабораторная крыса"
Сетка модели Рендер сцены с источниками света
Для выращивания шерсти можно использовать два способа - из полигонов поверхности модели или из набора сплайнов. В данном случае удобнее воспользоваться первым способом.
Выращивание шерсти из полигонов основывается на генерации модификатором 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).