- •Часть 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 тенями
- •"Лабораторная крыса"
Интерфейсы шейдеров mib_lightmap_write и mib_lightmap_sample
Поскольку, кроме mib_lightmap_sample, в библиотеке mental ray других сэмплеров нет, возникает вполне логичный вопрос - что еще, кроме карт освещенности, можно запекать средствами самого mental ray? Правильный ответ - ничего, кроме карт освещенности. Для появления новых возможностей нужно программировать дополнительные шейдеры - сэмплеры.
Существует еще один способ: в качестве сэмплеров можно использовать любой материальный шейдер mental ray. В этом случае основной шейдер будет в нужное время вызывать материальный шейдер для каждой точки поверхности и записывать возвращаемый им цвет в запекаемую текстуру.
Этот способ не совсем корректен, поскольку использовать материальные шейдеры напрямую в качестве сэмплеров нельзя, так как они используют в расчетах данные о положении камеры и BRDF - двунаправленную модель расчета освещения (падающее освещение - отраженное освещение). Использование материальных шейдеров будет совершенно корректным только в случае, если для конечного результата положение камеры несущественно. Например, этот подход позволяет запечь blend- материалы 3ds max, запекание которых штатными средствами "макса" (render to texture) все еще затруднительно, или ambient occlusion, или процедурные карты.
Использование материальных шейдеров является недокументированной возможностью mental ray, использовать этот метод "можно, но осторожно". Назовем этот способ запекания "способом №1"
Кроме средств mental ray в 3ds max предусмотрены штатные инструменты запекания в текстуры - render to texture (меню Rendering > Render To Texture, клавиатурное сокращение "0" на основной раскладке), сокращенно - RTT. RTT совместно с mental ray прекрасно запекает большинство "родных" материалов 3ds max, хотя есть и исключения -blend и материалы, реализованные с помощью mental ray Connection. Запекаются также и многие материальные шейдеры mental ray, прежде всего те, которые видны в редакторе материалов и снабжены приставкой "3ds max". Будем называть штатный RTT "способом №2".
Существенным недостатком RTT является некорректная работа с материалами, чьи свойства определяются шейдерами через mental ray Connection. При запекании таких материалов RTT воспринимает их как стандартный материал 3ds max, полностью игнорируя закладку mental ray Connection в его свойствах. В итоге, запекание дает совершенно неправильный результат. При этом даже оригинальный материал, по которому выполняется запекание, повреждается. В качестве выхода из этой ситуации можно либо воспроизвести материал на основе mental ray material, тогда RTT будет правильно его обрабатывать, либо использовать способ №1 запекания материала шейдером mib_lightmap_write.
Типичная процедура запекания материала при помощи шейдера mib_lightmap_write состоит из следующих шагов.
1. Создаем текстурные координаты объекта. Для проверки карты имеющихся координат нужно воспользоваться модификатором Unwrap UVW. Требуется, чтобы карта координат была удобна для редактирования и содержала как можно меньше швов, потому что редактировать координаты после запекания придется вручную. Дело в том, что из-за особенностей шейдера mib_lightmap_write, после запекания будут видны места стыков отдельных областей текстурных координат и тем явственнее, чем меньше разрешение запекаемой карты. Для устранения швов нужно отмасштабировать текстурные координаты - уменьшить их, чтобы обеспечить перекрывание на стыках. Делать это нужно уже после запекания. Штатный 3ds max RTT лишен этого недостатка, он имеет возможность управления перекрыванием швов еще на этапе настройки запекания (эта возможность называется padding и будет рассмотрена чуть позже). Другим важным условием, предъявляемым к карте текстурных координат, является отсутствие наложений (перекрывание) отдельных областей текстурных координат друг на друга.