- •Часть 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 тенями
- •"Лабораторная крыса"
Параметры настройки фотонных карт в mental ray для 3ds max, закладка Indirect Illumination
Существует основополагающая формула, используемая для оценки освещения в произвольной точке поверхности по заданному количеству фотонов:
Оценка освещения точки поверхности по заданному количеству фотонов
здесь
N – количество участвующих в оценке освещения фотонов;
Ei – энергии фотонов;
f – BRDF поверхности;
r – радиус сбора фотонов;
nv, ni – углы между направлениями расчета освещения и падения фотонов.
Из этой формулы следует несколько важных свойств.
Во-первых, результат расчета зависит от свойств поверхности. Во-вторых, расчет освещения является суммой вкладов энергий заданного количества фотонов. В-третьих, величина вклада от конкретного фотона зависит от расстояния между точкой и этим фотоном. Чем дальше расположен фотон, тем меньше его вклад.
Для практики расчета более полезным является правило, связывающее количество собираемых вблизи точки фотонов с плотностью фотонной карты в этой точке и радиусом сбора:
2) N = (плотность фотонной карты в точке x) х pi х r ^2, где
N – количество фотонов, собираемых для оценки освещения в точке x;
pi – число пи = 3.14;
r – радиус сбора фотонов
Под плотностью фотонной карты понимается отношение общего числа фотонов к общей площади поверхностей, для которых они создаются. Плотность реальной фотонной карты имеет локальный характер, то есть, меняется от точки к точке поверхности. Практически важно знать только минимальную плотность фотонной карты, этого достаточно для выполнения необходимых настроек.
Из правила (2) вытекает ряд важных свойств, которые являются основными в практике настроек:
3а) увеличение плотности фотонной карты в n раз (или, что то же самое, увеличение размера фотонной карты в n раз) позволяет собирать в n раз больше фотонов при том же радиусе сбора или уменьшить радиус сбора того же количества фотонов в корень квадратный из n раз;
Пример: Если при данной плотности фотонной карты вблизи точки собирается 100 фотонов в пределах площадки радиусом в 10 см, то увеличение размера фотонной карты в 4 раза позволяет:
либо собирать 400 фотонов на той же площадке радиусом в 10 см;
либо собирать 100 фотонов с площадки вдвое меньшего радиуса (5 см)
3б) если плотность фотонной карты неизменна, то увеличение/уменьшение радиуса сбора в n раз приводит к увеличению/уменьшению количества собираемых фотонов в n^2 раз. Пример: Если плотность фотонной карты такова, что 100 фотонов собирается с площадки радиусом 10 см, то увеличение радиуса сбора в два раза приведет к увеличению сбора фотонов в ее пределах в 4 раза, то есть в пределах площадки радиусом 20 см будет собрано 400 фотонов, а в пределах радиуса в 5 см – только 25 фотонов.
3в) если требуется увеличить/уменьшить число собираемых фотонов в n раз, то для этого необходимо:
либо увеличить/уменьшить плотность фотонной карты в n раз
либо увеличить/уменьшить радиус сбора фотонов в корень квадратный из n раз
Для того, чтобы иметь возможность воспользоваться этими правилами, необходимо уметь определять минимальную плотность фотонной карты в конкретных сценах, или фактическое количество фотонов, собираемых с площадки некоторого радиуса.
Исследование свойств фотонной карты опирается на тот факт, что отношение общего числа излученных в сцене фотонов к числу сохраненных в фотонных картах является величиной постоянной при прочих неизменных свойствах сцены – геометрии, освещении и материалах. Такое отношение является уникальной индивидуальной характеристикой сцены и позволяет аппроксимировать результаты небольшой фотонной карты для карт любой плотности для одной и той же сцены.
В качестве примера рассмотрим свойства фотонной карты небольшой плотности для конкретной сцены. Установим в настройках, чтобы фотонная карта содержала 50 тысяч фотонов на источник света (их в сцене два), и будем исследовать при каком радиусе можно собрать 200 фотонов. Я устанавливаю начальное значение радиуса сбора в 1 см (что заведомо меньше, чем необходимо) и буду увеличивать радиус сбора, пока изображение не перестанет меняться. Значение радиуса, при котором изменения перестанут происходить и будет приблизительным фактическим радиусом сбора 200 фотонов. Чтобы не пересчитывать фотонную карту при каждом изменении радиуса, при первом просчете фотонная карта сохраняется в файл. В качестве ориентира можно использовать рендер с большим радиусом сбора:
Рендер с большим радиусом - 4 метра
Теперь устанавливаем маленький радиус и постепенно увеличивая его, находим минимальное значение, при котором рендер перестает меняться (становится идентичен рендеру с большим радиусом).
Начинаем с радиусом в 1 см и постепенно увеличиваем его
Найденное значение радиуса составляет приблизительно 44 см:
При радиусе сбора в 44 см рендер практически перестает меняться и становится идентичен рендеру с радиусом сбора 4 метра
Таким образом, для примера данной сцены, 200 фотонов собираются с площадки фактического радиуса не более 44 см. В тех местах, где плотность фотонов выше, этот радиус будет меньше. Можно дополнительно воспользоваться диагностическим рендером, показывающим карту распределения плотности фотонов в сцене.
Диагностический рендер, показывающий распределение плотности фотонов в сцене
Это так называемая false-color диаграмма, где каждому цвету (температуре) соответствует определенное значение плотности. Красный цвет – самая высокая плотность, синий – самая низкая, зеленый – промежуточная средняя плотность.
Теперь можно воспользоваться правилами (2) и (3а – 3в) для интерполяции фотонных свойств сцены. Например, если нужно чтобы 400 фотонов собиралось для оценки освещения точек трехмерной сцены с площадки радиусом не более 10 см, потребуется фотонная карта в 39 раз большего размера, чем текущая (50 000 фотонов), т.е. фотонная карта в 2 миллиона фотонов.
Рендер с фотонной картой в 2 миллиона фотонов, радиусом сбора 10 см и числом собираемых фотонов = 400
Хотя mental ray и позволяет не указывать в настройках радиус собираемых фотонов, его явное указание имеет целый ряд преимуществ. Во-первых, знание фактического радиуса сбора позволяет ориентироваться в точности вторичного освещения. Чем больше радиус сбора, тем больше размытость вторичных теней. Если радиус сбора фотонов превышает 10 см, тени вряд ли можно считать правильными.
Во-вторых, правильное определение фактического радиуса сбора позволяет сократить время расчета фотонной карты за счет уменьшения радиуса поиска, а значит – времени поиска фотонов в базе данных. Экономия времени для одного рендера (кадра) по абсолютной величине относительно невелика и составляет от нескольких секунд до нескольких минут в зависимости от количества собираемых фотонов и плотности фотонной карты. Тем не менее, при анимации даже такой небольшой выигрыш во времени расчета одного кадра может оказаться существенным. Экономия времени также может быть существенной и при FG расчетах, поскольку в них используется многократное обращение к фотонным картам для оценки освещения.
Явное указание количества собираемых фотонов позволяет программе расчета гибко изменять в сцене радиус сбора фотонов в зависимости от плотности карты в данной точке (при этом максимальный радиус сбора не превысит заданный в настройках), что самым благоприятным образом сказывается на гладкости финального рендера.
Кроме того, вполне возможно связать число собираемых фотонов и плотность фотонной карты с качественными настройками FG, что при наличии некоторого опыта позволит сэкономить массу времени.
Интерфейс настройки фотонных карт в mr 3.3 для 3ds max
В 3ds max 7 настроечные параметры фотонных карт собраны на закладке Indirect Illumination диалогового окна Render: