- •Часть 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 тенями
- •"Лабораторная крыса"
Стандартный материал (phong) с картами для цвета, отражений и рельефа
Теперь назначим модели материал кожи со значениями параметров по умолчанию.
Материал кожи со значениями по умолчанию
Выглядит не очень. Посмотрим, что можно с этим сделать. Сначала займемся настройкой рассеяния от первого слоя. Первый слой должен передавать "восковые" свойства кожи. Лучше всего настраивать его, назначив карту bump и балансируя вклад первого слоя с вкладом слоя диффузных не рассеянных отражений. Я назначил карту цвета слою Unscattered diffuse color, эту же карту слою Epidermal (top) layer scatter color и карту рельефа шейдеру bump. Для упрощения настройки отключены вклады от среднего и заднего слоев — их вес а установлен ы в 0. Зеркальные подсветки пока оставляют желать лучшего, но не отключались, поскольку так легче видеть bump.
Величина bump слишком велика, ее нужно уменьшить. Что касается растровых карт для не рассеянного цвета и первого рассеивающего слоя, то лучше использовать не цветные, а серые карты или слабо насыщенные по цвету карты, поскольку сама по себе кожа имеет бледно-серый цвет. Почти весь цвет создает рассеяние от нижележащего подкожного ("мясного") слоя. Главная задача этого этапа — как можно лучше передать игру света на bump, регулируя радиус рассеяния первого слоя и относительные вклады (веса) слоя не рассеянного освещения и первого рассеивающего слоя. Кожа должна иметь вид, как будто она покрыта тонким слоем воска. Пробуя различные значения bump, радиуса рассеяния первого слоя и весов слоя не рассеянных отражений и первого рассеивающего слоя, я пришел к следующим их значениям:
multiplier для шейдера bump — 0.7;
unscattered diffuse weight — 0.5;
epidermal (top) layer scatter weight — 0.7;
epidermal (top) layer scatter radius — 8 мм;
Брови как будто нарисованы на воске. Чтобы устранить этот эффект, я создал еще одну grayscale-карту из карты цвета, оставив на ней только брови и ресницы на белом фоне и отрегулировав значение серого при помощи levels (Photoshop), немного осветлив все изображение. Эту карту я использовал для Overall diffuse coloration.
Смысл этих действий — создать маску, блокирующую рассеяние в требуемых областях.
Использованная схема размещения растровых карт не единственная. Другой способ состоит в том, чтобы поместить карту цвета только в Overall diffuse coloration (карта должна быть цветной) и регулировать цвет первого слоя рассеяния и диффузный цвет. Недостаток этого способа — рассеяние будет изменяться вдоль поверхности, и даже полностью блокироваться в темных областях растровой карты, если они есть.
Пора включить в игру второй слой и настроить оттенок кожи. Меняя значение веса и радиуса рассеяния, я пришел к следующим их значениям:
Subdermal layer scatter color R = 242, G = 74, B = 51 (красноватый оттенок, а не оранжевый, как задано по умолчанию);
Subdermal layer scatter radius = 45 мм;
Subdermal layer scatter weight = 0.5
Цель этого этапа — получить нужный оттенок цвета кожи. Особое внимание следует обращать на цвет "терминатора" — границы между освещенной и темной областью. Он должен содержать достаточно цвета. Обратите внимание внимание, как изменился цвет "терминатора" от освещения сзади (верхняя часть головы). Пожалуй, засвет великоват, я немного уменьшу интенсивность заднего освещения. Включаем третий слой и настраиваем его вес и радиус рассеяния. Этот слой даст "подсветку" ушей и задней границы шеи. Значения, на которых я остановился:
Back surface (through) scatter color по умолчанию;
Back surface (through) scatter weight = 1.74;
Back surface (through) scatter radius = 40 мм;
Back surface (through) scatter depth = 30 мм
Пора перейти к зеркальным отражениям. Сначала отключим все зеркальные отражения, обнулив их вес.
Очень сухая кожа :).
Включаем первый слой отражений и настраиваем широкие подсветки:
Overall specular Weight, использована растровая карта, блокирующая отражения на бровях;
Edge narowness и Specular Color #1 по умолчанию;
Specular Weight #1 = 0.35;
Specular Edge Weight #1 = 0.8;
Shininess #1 = 2;
Включаем второй слой и настраиваем узкие относительно сильные подсветки, которые должны проявляться на краях выступающей геометрии (нос, скулы и т.д.)
Для второго слоя отражений я изменил только Specular Weight #2 = 0.2 и Shininess #2 = 50. Можно использовать карты зеркальных отражений, поместив их в Overall Specular Weight. Хорошая мысль использовать зеркальную карту для bump и немного размытых отражений Reflection Weight = 0.1, Reflection Glossiness = 10 (последнее может серьезно замедлить расчет и потребовать больших значений AA).
Добавим немного ambient occlusion и отражения от окружения (синий Gradient Ramp в Local Environment), увеличим размер карты до 100%, samples = 256 и Lightmap gamma curve = 1.
Вместо ambient occlusion можно использовать final gathering, а вместо градиентной заливки для окружения — карту HDRI.
Я использовал достаточно простую модель и текстурные карты для нее. Вот еще совершенно потрясающий пример материала кожи: