- •Часть 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 тенями
- •"Лабораторная крыса"
Часть 2.
Свойства и использование Ambient/Reflective Ocllusion
В седьмой версии 3ds max, благодаря mental ray 3.3, появился новый шейдер Ambient/Reflective Occlusion. Это шейдер обладает рядом интереснейших возможностей, позволяющих использовать его для решения широкого спектра задач визуализации и рендеринга, включая имитацию GI. Рассмотрением его свойств и возможностей практического применения и посвящено данное небольшое исследование.
Начну немного издалека. Построение изображений (рендеринг) в трехмерной компьютерной графике опирается на расчет трех основных компонент цвета поверхности – окружающего освещения (ambient color), диффузного освещения от прямых источников света (diffuse color), а также – зеркальных и specular отражений/преломлений. Ambient освещение в стандартной модели затенения в 3ds max не предполагает наличия источников света и основывается на простом, #34;одноцветном", фоновом цвете, который просто добавляется к диффузному и specular освещению поверхности. Последнее вовсе не означает, что для ambient-компоненты материала нельзя задавать карту цвета, например – растровую или процедурную карту.
Расчет непрямого или глобального освещения (GI) является другим, физически корректным способом расчета ambient освещения – в данном случае "фон" рассчитывается как результат вторичных переотражений света от прямых источников между поверхностями трехмерной сцены. Назначение шейдера ambient occlusion лежит в этой же области – предложить еще одну возможность (или, если угодно – альтернативу) расчета ambient - освещения поверхностей трехмерных объектов.
Предлагаемая шейдером ambient/reflection occlusion схема расчета состоит в определении степени, или меры "затенения", или блокирования, точек поверхности окружающей геометрией в сцене.
Величина степени затенения рассчитывается по следующему правилу.
Для каждой точки поверхности, видимой в камеру, строится полусфера относительно ее нормали. Затем, через сферу, в сцену испускается в случайных направлениях некоторое количество лучей. Для испущенных лучей возможны только два варианта развития событий – либо они столкнутся с поверхностями других объектов и будут считаться "затененными" (occluded), либо они беспрепятственно выйдут за пределы сцены (или за пределы расстояния указываемого в настройках шейдера) и будут считаться "свободными", незаблокированными. В результате, степень затенения точки будет определяться как отношение числа заблокированных к общему числу испущенных лучей. Например, если всего испущено 10 лучей, только 5 из которых пересеклись в пределах сцены с другими объектами, то цвет точки будет иметь значение 50% серого, поскольку 50% лучей заблокировано другой геометрией. Как видим, все довольно просто.
Поскольку шейдер ambient/reflection occlusion (далее в тексте – АО) рассчитывает фоновое освещение, вполне логично сравнить возможности его алгоритма с расчетом полного глобального освещения методом final gathering + photon map. По сравнению с Final Gathering, АО не рассчитывает освещенность в точке пересечения с другой геометрией и не учитывает затухание света с расстоянием. А по сравнению с фотонными картами, АО не учитывает вторичных переотражений света между объектами. В силу указанных различий АО шейдер является корректной альтернативой расчета GI только в случае открытых сцен (экстерьеров) и дает неправильные результаты для закрытых сцен (интерьеров). Однако физическая корректность освещения в компьютерной графике не всегда является первостепенной задачей, чаще достаточно просто правдоподобности освещения. Такую правдоподобность АО вполне способен обеспечить. Допустимо также использовать АО совместно с фотонными картами, вместо FG. Хотя такой результат также будет далек от физической корректности, он может давать вполне убедительное и гладкое "псевдо-глобальное" освещение, причем время расчета будет гораздо меньше по сравнению с временем расчета методом FG + Photon Map.
Рассмотрим назначение параметров шейдера АО.
Прежде всего, я приведу спецификацию шейдера, как ее дает mental images:
color "mib_amb_occlusion" ( integer "samples" default 16, color "bright" default 1 1 1 1, color "dark" default 0 0 0 0, scalar "spread" default 0.8, scalar "max_distance" default 0, boolean "reflective" default off, integer "output_mode" default 0, boolean "occlusion_in_alpha" default off ) version 2 apply texture
Отсюда вытекает способ использования АО в сочетании с другими шейдерами для создания материала со сложными свойствами – mental ray phenomena или материалов 3ds max.
АО в результате вычислений может возвращать величину "color", т. е. цвет, и может принимать цвет от других шейдеров в качестве параметра для вычислений (параметры "bright" и "dark"). Результат вычислений шейдера ambient occlusion также может быть передан внешней функции-обработчику, например, для комбинирования результатов вычислений нескольких шейдеров в один общий результат.
АО может быть успешно использован для определения ambient-свойств материалов 3ds max. В этом случае результат вычислений АО будет сочетаться с диффузными, отражающими и преломляющими свойствами материала, по правилам, стандартным для материалов 3ds max.. Таков один из возможных способов реализации основной функции шейдера – "ambient occlusion", то есть затенение фонового освещения.
Еще один вариант использования АО – соединять его с другими шейдерами посредством "комбинирующих" материалов 3ds max, например – Shellac, Fallof, Mix и других. В этом случае АО может быть использован для определения любых свойств материала. Именно так реализуется функция reflect occlusion – для определения отражающих/преломляющих свойства материала используется сочетание АО, материала типа Raytrace и растровой карты для отражений.
Вполне возможно и одновременное использование обоих этих методов, в этом случае будет выполняться "полное" затенение, то есть и "ambient occlusion" и "reflective occlusion".
Наконец, третий способ использования шейдера АО – для целей компоузинга во внешних программах и пост-обработки изображений.
Интерфейсе шейдера АО в 3ds max выглядят следующим образом: