- •Часть 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 тенями
- •"Лабораторная крыса"
Расчет освещения с final gathering, вверху — indirect off, внизу — indirect on
scale_conversion (Scale conversion factor)— простой линейный делитель всех расстояний. Позволяет увязывать единицы измерения для различных сцен, с целью одинакового визуального проявления материала вне зависимости от масштаба объектов, к которым он применяется. Например, если материал разработан в сцене с единицами измерения миллиметр и затем используется для объекта с единицами измерения сантиметр, фактор нужно установить равным 10 (1 мм = 1/10 см). Изменение этого параметра также позволяет быстро регулировать степень проявления подповерхностного рассеяния для всего материала сразу, что может быть удобно при настройке. Значение scale_conversion по умолчанию равно 1, что предполагает миллиметры в качестве единиц измерения сцены. Рекомендую при работе со всеми Fast SSS материалами и шейдерами использовать именно миллиметры (и реалистичные размеры объектов, разумеется).
scatter_bias (Scatter Bias) — определяет изотропию подповерхностного рассеяния, знакомую нам по модели физического рассеяния (параметр g, определяющий распределение вероятности рассеяния по углам) и может изменяться в пределах от -1 до 1. Если scatter_bias = 0, рассеяние происходит равномерно во всех направлениях (изотропное рассеяние), при scatter_bias = 1 происходит рассеяние преимущественно вперед, при scatter_bias = -1 — рассеяние "назад".
falloff (Falloff strength) — задает форму затухания рассеянного освещения вдоль радиуса. Большие значения задают более быстрое и резкое затухание, мЕньшие значения — более плавное и гладкое затухание и создают ощущение более короткого радиуса рассеяния, чем оно есть на самом деле. Поэтому, при уменьшении falloff может потребоваться увеличение радиуса рассеяния для компенсации этого эффекта. Для значений falloff от 1.0 до 10.0 все сэмплы в пределах радиуса рассеяния имеют приблизительно одинаковый весовой коэффициент. Для величин от 0.1 до 1.0 сэмплы вблизи границы площадки рассеяния имеют меньшие весовые коэффициенты. Уменьшение falloff приводит к затемнению рассеивающих слоев, причем передний слой гораздо более чувствителен к изменениям.
screen_composite (Screen "soft" compositing of layers) — позволяет определить способ сложения вкладов от различных типов освещения в материале. Когда галочка в чекбоксе установлена, используется Screen compositing, этот режим аналогичен режиму смешивания слоев"screen" в Photoshop. В отключенном положении все вклады просто суммируются по величине (add), что часто может привести к появлению засветок. Add - режим можно использовать, если рендер выполняется в HDRI файл для последующей нелинейной тоновой коррекции (tonemapping).
Шейдеры группы miss_fast
Основными "строительными" модулями для SSS — материалов являются шейдеры misss_fast_shader (SSS Fast Render Shader), misss_skin_specular (SSS Specular Reflection for Skin) и misss_lambert_gamma (SSS Lambert Gamma). Они специально разработаны для того, чтобы с их помощью можно было создавать новые материалы со свойствами подповерхностного рассеяния.
Misss_fast_shader (SSS Fast Render Shader)
Misss_fast_shader имеет модульную структуру, которая позволяет "каскадировать" любое (разумное :) число основных SSS - шейдеров друг с другом.
Спецификация misss_fast_shader:
color "misss_fast_shader" ( color texture "lightmap", color texture "depthmap", shader "bump", shader "diffuse_illum", color "diffuse_color", shader "specular_illum", scalar "diffuse_weight", color "front_sss_color", scalar "front_sss_weight", scalar "front_sss_radius", color "back_sss_color", scalar "back_sss_weight", scalar "back_sss_radius", scalar "back_sss_depth", scalar "scale_conversion", boolean "screen_composit", boolean "output_sss_only", scalar "falloff", integer "samples", ) apply material version 4
Назначение параметров шейдера соответствует аналогичным, которые мы уже рассмотрели на примере материала SSS Fast Material.
Рассмотрим подробнее его "строительные" свойства.
Все параметры misss_fast_shader, имеющие тип shader позволяют подключать через них другие шейдеры. Есть возможность соединения нескольких misss_fast_shader друг с другом и создания материала с произвольным количеством рассеивающих слоев, добавления свойств зеркального отражения или даже изменения модели расчета освещения поверхности.
Shader "bump"— параметр должен определяться шейдером или материалом. Здесь недостаточно использовать просто растровую или процедурную карту. Обусловлено это тем, что misss_fast_shader должен знать оригинальное направление нормалей и направление нормалей после применения bump, поскольку расчет подповерхностного рассеяния может выполняться только с не искривленными нормалями. Другими словами, использование шейдера или материала для bump гарантирует учет bump на этапе расчета lightmap и его сохранение в карте. В интерфейсе 3ds max bump уже реализован как материал, остается только войти в его свойства и назначить карту.
Shader "diffuse_illum"— предназначен для определения алгоритма расчета освещения поверхности от источников света. Обычно, для этого должен быть использован шейдер misss_lambert_gamma (SSS Lambert Gamma), если оставить этот параметр неопределенным, то, по умолчанию, он и будет использован. Однако здесь можно задавать любой шейдер, рассчитывающий освещение — не только Lambert, но и, например, Phong, Ward, Cook-Torrance, Blinn и другие (напоминаю, эти шейдеры по умолчанию скрыты и не появляются в списке шейдеров редактора материалов, но их можно открыть, отредактировав файл base.mi). Именно здесь нужно подключать (каскадировать) еще один misss_fast_shader, если требуется создание материала с дополнительными рассеивающими слоями.
Shader "specular_illum" — предназначен для встраивания шейдера, который будет рассчитывать зеркальные отражения и подсветки поверхности. Как правило, для этой цели лучше использовать misss_skin_specular (SSS Specular Reflection for Skin), поскольку он оптимизирован для расчетов с органическими материалами (учитывает закон Фреснеля). Но ничто не мешает использовать для этой цели любой другой подходящий шейдер. Если шейдер не указать явно, зеркальные свойства рассчитываться не будут.
Таким образом, построение собственного SSS - материала должно выполняться в соответствии со следующей диаграммой: