- •Часть 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 тенями
- •"Лабораторная крыса"
Диагностический рендер fg-расчета. Радиус 10см, fg Samples 1000
Настройка величины accuracy (Final Gather Samples) определяет отсутствие «шума» на рендере. «Гладкое» его значение зависит от плотности фотонной карты и радиуса сбора фотонов, а также от величины FG Radius – чем он меньше, тем больше FG Samples потребуется для достижения гладкости рендера. Изменение Final Gather Samples также оказывает влияние на плотность FG-точек – чем выше количество Samples, тем выше плотность FG-точек.
Хочу особо подчеркнуть, что если фотонная карта настроена неправильно, то есть является излишне «пятнистой», то получить гладкий рендер даже сильным накручиванием accuracy, скорее всего, не удастся.
Интерфейс настройки расчета FG в mr 3.3
Интерфейс настройки параметров fg-расчета
Samples
количество лучей, или FG- лучей, используемых для расчета интеграла непрямого освещения точки.
Radius
параметр определяет радиус поиска FG-точек для интерполяции освещения данной точки поверхности и плотность FG-точек.
Min. Radius
при попадании FG-точки в пределы этого радиуса, она обязательно будет использована для интерполяции, вне зависимости от величины ошибки.
Radii in Pixels
новая настройка, позволяет устанавливать размер Radius в пикселях. Когда эта функция отключена, Radius измеряется в мировых единицах (world units – метры, сантиметры и т.д.). Возможность установки величины Radius в пикселях удобна в том отношении, что позволяет наглядно представить размер области поиска FG-точек для интерполяции. С другой стороны, установка величины радиуса в пикселах позволяет добиться изменения детализации с изменением расстояния: для близких к камере объектов радиус будет меньше в мировых единицах, чем для более удаленных объектов при одном и том же значении радиуса в пикселах.
Filter
новая возможность, позволяет усреднять значения освещенностей соседних FG-лучей, что приводит к сглаживанию рендера. Практическую значимость имеют величины от 0 до 4. Значение 0 отключает фильтрацию, при Filter=1 усредняется 9 соседних FG-лучей, при 2 – 25 лучей, 3 – 49 и при 4 – 81 луч.
Trace Depth
недиффузные преломления и отражения для FG-лучей в количестве, устанавливаемом Max. Reflections, Max. Refractions и Max. Depth = Max. Reflections + Max. Refractions.
Use Falloff (Limits Ray Distance)
средство оптимизации FG-расчетов, позволяет исключить из расчетов те FG-лучи, длина которых меньше или превышает величины, заданные в Start и Stop соответственно. Использование Use Falloff наиболее предпочтительно для расчета освещения открытых сцен или больших по размерам интерьеров, почти бесполезна для небольших интерьеров (жилых помещений и т. д.).
Оптимизация расчета
В настоящее время существует два приема, которые позволяют существенно оптимизировать время расчета фотонных карт. О первом уже говорилось выше – это явное указание точного фактического радиуса того количества фотонов, которое используется для оценки освещения точек.
Второй способ относится к оптимизации расчетов FG, использующих GI фотонные карты. Суть его состоит в том, чтобы выполнить оценку освещения по фотонам в соответствии c настройками фотонной карты (количеством фотонов для оценки освещения, заданным в Maximum Num. Photons per Sample) и сохранить эти расчеты вместе с фотонной картой для последующего использования. Расчет выполняется по координатам фотонов, поскольку координаты рассчитываемых точек на этом этапе еще неизвестны. Во время рендера для каждой точки подбирается ближайший подходящий фотон и используется рассчитанное для него освещение. Таким образом, выигрыш в скорости должен получаться за счет того, что при каждом обращении к фотонной карте расчет освещения не выполняется, а берется его готовое значение из файла. Учитывая, что при FG расчетах количество лучей (и значит, количество обращений к фотонной карте) для каждой FG-точки может составлять до несколько тысяч, становится понятно, почему расчет с сохраненными расчетами освещения выполняется быстрее. Те, кто знаком с vRay, уловят аналогию с опцией convert to irradiance map в настройках фотонных карт этой программы.
На практике такая оптимизация достигается включением опции fast lookup в настройках расчета FG. При этом расчет фотонных карт несколько замедляется (незначительно), а объем фотонной карты увеличивается на 20% - 30%, поскольку сохранение рассчитанных освещенностей требует дополнительных 5 байт для каждой записи о фотонах в карте.
Наконец, и это особенно актуально для больших сцен, полезно ограничивать длину рассчитываемых FG-лучей при помощи Use Fallofff и использовать детализацию FG-расчета с расстоянием при помощи указания FG-радиуса в пикселах.
Расчет фотонная карта + FG
В следующей части обзора будут рассмотрены ambient occlusion, запекание текстур и новый шейдер SSS (subsurface scattering).