
- •Часть 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 тенями
- •"Лабораторная крыса"
Вверху — объект со стандартным материалом (Blinn), внизу — с материалом sss Fast Material
Общее значение цвета этого материала рассчитывается по следующей схеме. Все цвета рассчитываются простыми шейдерами по отдельности и "наслаиваются" друг на друга – освещенности могут просто складываться или складываться в режиме "Screen". Складываются вначале диффузные компоненты: нижний слой — рассеяние от задней поверхности, затем рассеяние от передней поверхности и, наконец, наверху — не рассеянное диффузное освещение. Суммарный диффузный цвет может умножаться на простой цвет или растровую карту (параметр overall color) и затем складываться с зеркальными подсветками для получения окончательного результата. Зеркальные подсветки "лежат" на самом верху.
Спецификация шейдера:
material "misss_fast_simple_phen" ( color texture "lightmap", скрыт в интерфейсе материала 3ds max color texture "depthmap", скрыт string "lightmap_group", scalar "lightmap_size", integer "samples", shader "bump", struct "d" { color "ambient", color "overall_color", color "diffuse_color", 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" }, struct "s" { color "specular", scalar "exponent" }, struct "a" { scalar "lightmap_gamma", boolean "indirect", scalar "scale_conversion", scalar "scatter_bias", scalar "falloff", boolean "screen_composit" }, integer "mode", # light selection mode 0..2, скрыт array light "lights", скрыт )
Вид интерфейса sss Fast Material по умолчанию в 3ds max Вид интерфейса sss Fast Material со всеми открытыми слотами свойств
Группа параметров SSS Fast Material (mi) Parameters:
lightmap и depthmap — по умолчанию, скрыты. Предназначены для указания имен карт lightmap и depthmap. В обычных обстоятельствах предполагается, что эти имена назначаются картам автоматически по некоторым внутренним правилам и определения не требуют. При явном указании файла, его имя и параметры нужно задавать только в слоте "lightmap", слот "depthmap" определять не нужно. Размер lightmap по ширине должен быть вдвое больше размера рендера по ширине, а по высоте соответствовать высоте рендера. Например, если размер рендера 500х500, ширина lightmap должна составлять 1000, высота — 500. И обязательно нужно указывать использование 32 бит на канал. Если имена файлов не указываются явно (слот "lightmap" остается пустым), карты резидентно хранятся в оперативной памяти.
Карта
lightmap с данными освещенности передней
и задней поверхности. "Полосатость"
изображения обусловлена совмещением
в соседних пикселях данных
о
передней и задней поверхности.
Карта
с данными глубины. Пусть вас не вводит
в заблуждение белый цвет — это издержки
8-битного отображения монитором 32-битного
изображения. Реальные значения пикселей
можно измерить "пипеткой" в HDRShop
Когда файл карт указывается явно, при самом первом рендере появляется сообщение об отсутствии указанной карты. Игнорируйте, его появление вызвано некоторыми особенностями создания и передачи карт освещенности между шейдерами материала. Расчет будет выполнен правильно и при следующих рендерах, если имя файла не менялось, этого сообщения не будет. В качестве альтернативы можно создать пустой файл (например, при помощи notepad) с тем же именем и расширением и сохранить его в том месте, которое было указано для карт.
lightmap_group (Scatter group) — имя группы. Паре карт lightmap/depthmap будет присвоено групповое имя, указанное в lightmap_group. Этот параметр предназначен для автоматического генерирования резидентных карт и передачи их для расчетов всем шейдерам. Все объекты, имеющее одно и то же имя в lightmap_group, будут взаимодействовать при расчете рассеяния, объекты с разными именами в lightmap_group взаимодействовать не будут. Использование различных групп увеличивает объем необходимой для расчетов памяти, поэтому использовать разные группы для материалов следует только в том случае, если это приводит к появлению артефактов. Например, при рендере рукопожатия двух людей для рук следует использовать материалы с разными именами в lightmap_group.
Другой пример — если один объект полностью содержится в другом объекте (стенки объектов не должны соприкасаться), то для блокирования подсветки от задней рассеивающей поверхности содержащего объекта внутреннему объекту можно назначить другой материал, но с тем же именем в lightmap_group. Имена чувствительны к регистру, то есть "А" и "а" — это разные имена.
Два
объекта — куб и помещенная в него сфера.
Материалы объектов разные, но имеют
одинаковое имя в lightmap_group и потому
взаимодействуют при расчете рассеяния
— сфера блокирует свет
Та
же сцена и те же материалы, но теперь с
разным значением lightmap_group. Сфера просто
исчезла (хотя она находится на прежнем
месте) — объекты перестали взаимодействовать
при расчете рассеянного освещения
lightmap_size — размер карты lightmap, выраженный в процентах от размера рендера. Обычно, 50% размера вполне достаточно, но при возникновении артефактов на краях объектов, размер lightmap нужно увеличивать.
samples (Number of samples) — количество близлежащих точек (сэмплов) lightmap, собираемых для расчета освещенности точки. Samples — один из регуляторов уровня шума в рендере. Минимальное значение, установленное по умолчанию, — 32 сэмпла на луч.
Верхнее
изображение — samples = 16,
нижнее
— samples = 256
Реальное количество собираемых сэмплов будет определяться тремя параметрами: значением samples, величиной радиуса рассеяния и размером lightmap.
bump (Bump shader) — шейдер, позволяющий определить расчет псевдорельефа (bump — искажение нормалей точек поверхности) при помощи процедурной или растровой карты. По умолчанию назначен шейдер mental ray Bump (3ds max), при необходимости его можно заменить на другой.