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! =)

в закладки:
  • Google
  • Live
  • Scoopeo
  • memori
  • YahooMyWeb
  • PlugIM
  • Digg
  • Taggly
  • del.icio.us
  • Sphinn
  • Facebook
  • Mixx
  • blogmarks
  • Kirtsy
  • Technorati
  • Wikio
  • yandex
  • Blogosphere News
  • co.mments
  • feedmelinks
  • news2-ru
  • description

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)

Maya Tutorials Says:

3 Октябрь 2008 at 22:17.

Thanks for tutorial :)
Stefan

Leave a Reply

RSS Feedback

Рубрики

Популярные уроки

Most viewed

Архив

Январь 2009
Пн Вт Ср Чт Пт Сб Вс
« Ноя    
 1234
567891011
12131415161718
19202122232425
262728293031  
 
 
Rambler's Top100