26 Июнь 2008
Irradiance map и Light cache.
Posted by Vadim BELLinSKY under: 3d max & VRay .
Этот урок об оптимизации просчета глобального освещения в статических сценах с анимированной камерой.
Используем 3d max и VRay.
Создадим какую-то простейшую сцену с кучей объектов на плоскости. Настроим GI довольно тривиально — тандем Irradiance map + Light cache. Жмем render и получаем картинку:

А теперь немного покавираемся в процессе. Сразу после просчета сохраните Irradiance map в какой-то файл:
Затем тут же укажите этот файл в качестве источника:

Так мы говорим нашему V-Ray, что Irradiance map считать не нужно — он уже просчитан ранее и хранится в указанном файле. Понятно. Не понятно. Как хранится, в каком виде — хоть бы представление какое-то иметь об этом!
Представление? Да легко! Идем Пуск > Программы > Chaos Group > V-Ray DEMO for 3dsmax R9 for x64 (например) > Tools > Irradiance map viewer и по запросу указываем наш файл с просчитанными ранее сэмплами. Вот они:

Ну точно! Узнаем узнаем! Хорошо. А покрутите-ка эту трехмерную картину:

Оп-па! Обнаружина брешь! И не одна. Теперь нам стало очевидным, что карта Irradiance map просчитывается довольно разумно — что из камеры видно, то сэмплами и покрывается. А что не видно — извините! И вот вам иллюстрация:

Это я просто камеру поставил «смотреть» немного справа. Вот как сказывается увиденная «брешь» на картинке.
Очень все это интересно, а ближе к сути можно?
Можно! Вот положим у нас в сцене все стоит намертво! Только камера движется. А что если не считать сэмплы в каждом кадре? Что если только через каждые, скажем, 10 кадров Irradiance map просчитывать. Да так просчитывать, чтобы новые сэмплы к уже имеющимся добавлялись! Так мы и охватим все части поверхности, которые в нашей анимации точно видны будут и глобальное освещение для них обязательно пригодится! Ну до чего же верно вы все подметили!
Ну давайте пробовать. Анимируем камеру. Например как я — движение слева направо, смотрит в одну точку, время анимации 50 кадров.
Irradiance map настраиваем так:

А Light cache так:

Ну само собой пути и файлы вымышленные и любые совпадения случайны! У вас свои папки/файлы =)
Дальше скажем, что нам надо посчитать диапазон 0-50 только через 10 кадров:

И вот тут еще надо:

Ну это понятно. Показывать только GI, картинку не считать. Приготовления закончены, давим render! Ой. Говорит, кадры будут утеряны, потому что мы секвенцию считаем, но никуда ее не сохраняем!? Да нормально все! Жмем «АГА» и идем пить кофе =)
Посчитали? Открываем снова Irradiabce map viewer и смотрим наш только что просчитанный файл с сэмплами:

Очевидно более «кропотливый» труд! Хвалю! Похоже обстоят дела и с файлом, где в каком-то виде хранятся сэмплы Light cache.
Ну что ж. Теперь можно настроить на прием данных из файла Irradiance map:

и Light cache:

Снимаем галочки Show GI only и Don’t render final image. Ставим просчет того же 50-го кадра и voila!

Там где были прорехи теперь относительно чисто! Теперь можно считать анимацию покадрово и с высочайшей вероятностью ожидать, что ни в одном кадре не появится никаких артефактов. Потому что такими семимильными (читай 10-кадровыми) шагами мы все-таки покрыли сэмплами все видимые поверхности сцены на протяжении всего диапазона.
Не тратьте времени, для этого есть render! =)
6 Comments so far...
Олег Rh+ Says:
4 Июль 2008 at 12:19.
Хорошо бы было сначала быстро отсчитывать “маску”, где должны быть сэмплы IrMap (на основании видимости из камеры), а затем в один проход рендерить саму IrMap-у. Или такой алгоритм есть в виреее? Вроде как идея на поверхности лежит…
Vadim BELLinSKY Says:
4 Июль 2008 at 12:32.
Хм… а поподробнее? Или не знаю инструментов, или чего-то недопонимаю.
Насчет маски от видимости из камеры — о том и речь, что Irradiance Map считается именно там, где точка из камеры видна. А насчет одного прохода вовсе не понял — в несколько проходов как раз досчитывается только то, что в результате сдвига камеры стало видно. Т.е. старое уже не пересчитывается — к нему добавляются новые зоны, оказавшиеся в поле зрения камеры. Вот почему не важен шаг — 1 кадр, 10 кадров — тут главное не пропустить что-то мимо внимания.
Олег Rh+ Says:
4 Июль 2008 at 16:50.
Как ВЫ думаете, сэмплы в разных кадрах в режиме Fly - переписываются поверх друг друга или вирей настолько хитрый, что видит, куда ещё надо добавить сэмплов в недостающих местах ?
Хм, я счас открыл Vray 1.50
Режима Fly - нету )
Олег Rh+ Says:
4 Июль 2008 at 16:52.
Есть multiframe inc.
Vadim BELLinSKY Says:
5 Июль 2008 at 14:56.
Действительно… Fly — нет такого режима.
Есть Fly-through (Light cache)… и Multiframe incremental (Irradiance map)






















Урок по созданию морской воды в 3ds max.
Урок об оптимизации просчета глобального освещения в статических сценах с анимированной камерой.
Этот короткий урок поможет освоить эффект Glow (свечение), который есть почти в каждой программе композитинга.