- •Часть 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 тенями
- •"Лабораторная крыса"
Сцена с caustic-эффектом, рассчитанным по фотонной карте
Запекать нужно карту для плоскости, на которой лежит кольцо, поскольку каустика отражается на него. Выделяем плоскость и вызываем RTT. Выполняем следующие настройки параметров рендера в текстуры:
Настройки для запекания caustic фотонной карты
Для создания текстурных координат используется Automatic Unwrap с установками по умолчанию, поскольку плоскость довольно простой объект. В качестве элемента запекания выбрана LightingMap и включен расчет только непрямого освещения Indirect Light, поскольку запекается только фотонная карта. В качестве целевого слота выбран диффузный цвет нового материала (Diffuse Color).
Запеченная фотонная карта
Нужно отметить, что время расчета запекаемой текстуры гораздо больше времени рендера в камеру для получения сравнимого по качеству изображения. Это объясняется тем, что при запекании выполняется расчет для всех точек поверхностей объектов, а при рендере в камеру - только видимых точек. Разница во времени получается довольно существенная и зависит от типа запекаемого элемента.
После расчета карты, создан новый shell material, содержащий два материала. Первый материал предназначен для отображения каустики в видовом окне и для него просчитанная карта назначена в слот диффузного цвета. Второй материал предназначен для рендера и LigtingMap назначена в слот Self - Illumination, что позволяет использовать каустику независимо от диффузных свойств материала, благодаря чему их можно свободно менять, например, - назначать разные текстуры поверхности.
После небольшого редактирования текстурных координат получаем рендер с запеченной фотонной картой:
Рендер с запеченной в текстуру фотонной картой
Запекание фотонных карт глобального освещения выполняется аналогично, но может потребовать много времени для расчетов, особенно, если сцена велика по размеру. Запекание final gathering также вполне возможно, но время расчета рендера в текстуру будет намного больше времени рендера fg в камеру. Причина та же - при запекании нужно просчитывать fg для всех точек сцены. Ситуация усугубляется еще и тем, что для получения качества, сопоставимого с качеством рендера в камеру при запекании радиусы fg нужно уменьшать минимум в десять раз. Поэтому, запекание fg в текстуру является скорее задачей сетевого рендеринга. На одной рабочей станции выполнить расчет запекания fg за разумное время невозможно даже в простых случаях.
Создание и использование Normal bump map при помощи RTT и mental ray
Normal bump map относительно новая возможность 3ds max и представляет собой тип карты для получения детализации низкополигонных поверхностей по высокополигонным аналогам. Normal map является растровой картой, каждый пиксель которой своим положением и цветом кодирует положение и направление нормалей поверхности и высоту точек поверхности объекта относительно направления нормали.
Источником информация для Normal map является поверхность высокополигонного объекта, целью - поверхность низкополигонного объекта. Normal map эффективнее обычных bump map, поскольку содержит гораздо больше информации о положении и направлении нормалей, что и позволяет Normal map гораздо точнее имитировать детализацию низкополигонных поверхностей.
Изначально Normal map появилась как средство детализации низкополигонных поверхностей для игр. Однако возможности этих карт настолько хороши, что они стали еще одним полноценным дополнением в арсенале инструментов моделирования. Например, Normal map можно эффективно использовать при моделировании мелких деталей лиц компьютерных персонажей. Использование традиционной полигонной техники в этом случае затруднительно, поскольку требует слишком большого количества полигонов. Применение Normal map позволяет эффективно интегрировать Zbrush и 3ds max, особенно при моделировании лиц компьютерных персонажей. Основная модель, не обязательно низкополигонная, может быть смоделирована в 3ds max и затем экспортирована в Zbrush в формате .obj. Используя мощные возможности Zbrush, модель редактируется и обогащается мелкими деталями. Затем готовая модель экспортируется назад в 3ds max и используется как источник детализации поверхности основной модели при помощи создания Normal bump map.
Пример создания и использования Normal bump map. В 3ds max создана модель меча с текстурными координатами, количество полигонов модели около 17 тысяч.
Хотя модель является высокополигонной, их количества недостаточно для моделирования мелких узоров. Выполним экспорт модели в формате .obj, откроем ее в Zbrush, добавим деталей и экспортируем назад в 3ds max.
После обработки в Zbrush модель состоит из 141 тысячи полигонов и содержит множество мелких деталей. Создадим карту Normal bump map для исходной модели (цель) по этой высокополигонной модели (источник). Прежде всего, нужно совместить в пространстве и точно выровнять обе модели. Цель должна быть чуть меньше источника, так чтобы контур цели целиком находился внутри контура источника. Поэтому, при необходимости нужно отредактировать положение вершин поверхности цели.
Затем выделяем объект - цель и вызываем панель интерфейса RTT. Настраиваем RTT следующим образом:
Настройки:
устанавливаем галочку в Projection Mapping > Enabled, тем самым разрешаем использование Projection Modifier
отключаем Sub-Objects Level, оставляем только Object Level, поскольку Normal map создается для всего объекта целиком
выбираем Use Existing Channel и номер канала текстурных координат объекта - цели. При создании текстурных координат нужно соблюдать обязательное условие - они не должны перекрывать друг друга
в Output добавляем (кнопка Add) элемент Normal Map и в качестве целевого слота назначаем Bump либо Displacement
размер карты 4096х4096 - чем больше разрешение карты, тем точнее передача деталей
в группе Select Element Unique Settings выбираем Normal Bump и Height Map. Height Map выводится в альфа - канал изображения, поэтому нужно следить за тем, чтобы формат файла поддерживал 4 канала, например, это может быть .tga или .tif, но не .jpg. Эту карту можно использовать для displacement
в секции Baked Material выбираем Output into Source, запекаемая Normal map будет помещена в слот Bump исходного материала
возвращаемся к группе Projection mapping и нажимаем кнопку Pick. В появившемся диалоговом окне выбираем имя высокополигонного объекта - источника нормалей. В результате объекту - цели будет назначен projection modifier, который добавляется в стек объекта, а вокруг объекта появится Cage - контейнер, охватывающий поверхность объекта - источника
При создании Normal map Cage играет ключевую роль. Он предназначен для проектирования полигонных нормалей объекта - источника на поверхность объекта - цели. Поэтому, от точности его настройки зависит качество и точность Normal map. Для редактирования Cage нужно в стеке цели выбрать модификатор Projection, развернуть его подобъекты и выбрать Cage.
Cage рассчитывается по геометрии объекта - цели и состоит из полигонов и вершин, количество которых зависит от геометрии цели - чем больше полигонов у поверхности цели, тем больше полигонов у Cage и точнее может быть выполнено проектирование нормалей. Назначение модификатора Projection автоматически генерирует вокруг объекта - цели Cage, который почти всегда требует ручного редактирования.
Для этого в параметрах нужно выставить галочку у Display > Shaded, это позволит отображать в видовом окне Cage как полупрозрачную поверхность, что облегчает ее редактирование. Далее нажимаем Reset для того чтобы отменить автоматические настройки охвата модели, Cage плотно охватит поверхность цели. Используем регулятор Push > Amount для придания новой формы и величины смещения поверхности Cage относительно поверхности источника. Основная задача - как можно более точно воспроизвести формой Cage форму высокополигонного источника, при этом источник должен полностью попасть внутрь Cage, пересечения недопустимы. Если пересечения все же есть, то перейдя в режим редактирования вершин Cage, перемещаем их в местах пересечения участков поверхности источника и Cage.