Rendering a walk-through animation |
Главная | Tutorials |
Search Keywords: animation, walk-through
Часть II: Рассчет irradiance map
В этом уроке мы сделаем рендер walk-through анимации статической сцены, где ничего кроме камеры не двигается. Мы будем использовать GI для рассчет аосвещения сцены, что делает задачу несколько усложненной. GI обычно слишком медленно рассчитывается даже с уровнем качества достаточным для анимации. Для оптимизации этого процесса и уменьшения времени рендера, мы можем использовать то, что сцена статическая и в ней двигается только камера. Большинство GI решений в V-Ray использующие (irradiance map, photon map, light cache) являются или полностью или частично независящимим от положения камеры, и мы можем использовать этот факт для уменьшения времени рендера.
Для этоого урока, мы будем использовать irradiance map как главный (primary) GI алгоритм, и light cache как вторичный алгоритм. Чтобы сделать процесс более понятным, мы разделим рендер на три части.in three steps.
На первом этапе, мы рассчитаем light cache для всей анимации. На втором этапе, мы рассчитаем irradiance map. На третьем этапе, мы сделаем финальный рендер анимации.
Конечно вы не обязаны использовать этот метод для рендера такой анимации. Вы можете всегда использовать более медленный метод грубой силы и избежать вовлечения всех этих этапов предварительных расчетов различных GI методов, заплатив за это временем рендера.
1.1. Откройте стартовую сцену.
1.2. Назначьте V-Ray в качестве рендера.
1.3. Установите Background color в 3dsmax Environment and Effects диалоге в RGB 252,252,252.
1.4. В Render scene диалоге, включите Global illumination и установите главный и вторичный GI алгоритмы в Light cache.
1.5. Установите Image sampler type в Fixed для более быстрого рассчета превью.
1.6. Включите Show calc. phase в секции Light cache .
1.7. Проверьте skylight Override MAX's опцию в секции Environment.
1.8. Установите skylight цвет в RGB 252,253,255 и HSV(156,3,255).
1.9. Установите множитель skylight цвета - Multiplier в4.0.
1.10. Отключите Default lights опцию в секции Global switches. Это отключит освещение 3DMAX по умолчанию и она буудет освещениа только от environment skylight.
1.11. Перейдите в скцию Camera и измените Camera type на Fish eye.
1.12. Отключите Auto-fit , измените значение Dist на 1.0 и Curve на 0.35. Мы изменили тип камеры на Fish-eye для получения более интересного эффекта.
1.13. Сделайте рендер кадра 0 и кадра 360 .
Картинка выглядит неплохой, но нам нужно сделать рассчет для всей анимации, а не только для одного кадра. Хотя это не строго обязательно - мы можем делать рендер анимации с light cache рассчитываемой для каждог окадра; но рассчет light cache сделанный только один раз уменьшит время рендера, особенно для длинных анимаций.
1.14. Установите режим light cacheMode в Fly-through. Проверьте чтобы диапазон кадров анимации соответствовал диапазону для которого вы хотите сделать рендер. Это важно потому, что light cache будет использовать текущий диапазон анимации при рассчете fly-through cache.
Все light cache сэмплы будут распределены по всем кадрам анимации, нам нужно увеличить значение сабдивов light cache. Точное значение зависит от качества которое вы хотите получить и от вашей конкретной анимации. Если камера двигается медленно, или ее путь относительно короткий (например только одна комната здания) тогда вы можете использовать меньшее значение Subdivs, поскольку большинство сэмплов попадет в те же места. Если камера двигается быстро или покрывает большое пространство сцены, вам нужно больше сэмплов для получения аналогичной их плотности и соответственно качества.
1.15. Установите light cache Subdivs в 2000.
1.16. Сделайте рендер например 360 го кадра. Хотя мы рендерим только один кадр, режимFly-through заставляет light cache сделать рассчет для всей анимаци:
В течение flyfrom -through рассчета, preview дисплей не очень информативен, так как он отображает все рассчитываемые сэмплы (как на приведенном изображении):
Теперь когда мы рассчитали light cache, нам нужно увидеть подходит ли нам полученное качество. Мы можем сделатьь это получив рендеры несколькив взятых на угад кадров (с использованием рассчитанной light cache).
1.17. Сохраните light cache на диск, например в lightcache.vrlmap.
1.18. Установите режим light cache в From file и выберите имя тольк, что сохраненного файла.
1.19. Измените Filter в секции Light cache с Nearest на None. Теперь мы можем лучше видеть размер сэмплов (samples' size).
1.20. Сделайте рендер 435 кадра:
Вы можете видеть, что в местах где камера приближается бдиже к стенам, light cache сэмплы меньше и выглядят более шумными. Это потому, что light cache Scale установлен в Screenпо умолчанию. Это подходит для неподвижных сцен, но для анимации нам нужно более равномерное распределение сэмплов. Для достижения этого, нам нужно использовать опцию World.
1.21. Установите light cache Scale в World.
Теперь нам нужно определить подходящий Sample size для нашей сцены. Это можно сделать, например, создав геосферу прямо в виде камеры или объект Tape и использовать его для визуализации размера сэмпловo. Для нашей сцены, размер сэмпла около 2.0 кажется вполне походит (сцена имеет Generic единицы). В общем вы можете использовать размер сэмплов настолько большим насколько это возможно без появления артефактов (протекания света и т.п.). Даже если вы получите некоторое протекание света, можно убрать его при помощи уменьшения значения Interp. samples фильтра.
1.22. Установите light cache Sample size в 2.0.
Помните, что когда вы используете World единицы измерения, вы должны быть уверены, что ваша сцена не слишком большая (например с большим объектом для модели участка земли) или light cache сэмплы не слишком большие, иначе вы можете израсходовать всю память для light cache. Это не очень большая проблема в режиме Screen , поскольку поверхности удаленные от камеры получают меньше сэмплов. Для внешних (ландшафтов) рекомендуется использовать режим Screen всегда.
1.23. Измениете light cache режим назад на Single frame и сделайте меньше значение Subdivs, до 500 только для проверки, что размер сэмплов подходящий. Здесь приведен пример сэмпла 435:
Сэмплы имеют одинаковый размер везде и они кокраз достаточного размера, для исключения артефактов в изображении.
1.24. Установите режим опять во Fly-through .
1.25. Для сглаживания light cache немного больше, увеличьте Subdivs до3300.
1.26. Измените Filter опять в Nearest.
1.27. Сделайте рендер 360-го кадра:
Рассчет теперь идет дольше в результате увеличившегося числа сэмплов.
1.28. Сохраните light cache и установите режим в From file.
Вы можете заметить, что light cache файл стал значительно больше по размеру. Это частично потому, что тепрь в light cache больше сэмплов, частично из-за установленного режима World - одинаковая плотность сэмплов везде в сцене (в Screen режиме, резмер сэмплов увеличивается при удалении от камеры и плотность сэмплов уменьшается, что ведет к уменьшению общего числа сэмплов).
Теперь вы можем сделать рендер нескольких случайных кадров Now we can render several different frames to make sure that the light cache is adequate for our animation.
1.29. Сделайте рендер нескольких кадров.
Похоже они достаточно хороши и мы можем продолжить, перейдя к следующему этапу.
В сравнении с light cache, рассчет irradiance map может занимать намного больше времени. Потому, что light cache делает очень грубый и недетализированный рассчет освещения. Irradiance map, с другой стороны, прорабатывает даже мелкие теней и освещения.
Irradiance map не может быть рассчитана с использованием backburner. Она должна быть рассчитана на одном компъютере. Потому, что мы будем использовать режим Multiframe incremental для irradiance map.
2.1. Установите главный алгоритм GI в Irradiance map.
2.2. Установит режим irradiance map в Multiframe incremental.
2.3. Включите опцию Show calc. phase.
Камера, у нас, двигается довольно медленно, поэтому нет необходимости делать рендер каждлго уадра на этом этапе. Мы можем оценить irradiance map сделав рендер, например, каждого 10-го файла. Если камера двигается быстрее, нам понадобится сделать рендер большего количества кадров, например, каждого 5-го кадра.
2.4. Установите 3dsmax для рендера коаждого 5-го кадра в секции Common диалога Render scene.2.5. Включите опцию Don't render final image в секции Global switches, так как мы пока не делаем финальную анимацию и нам не нужны финальные кадры (будет рассчитываться только освещение).
2.6. Сделайте рендер всей последовательности (каждого 5-го кадра).2.7. Сохраните irradiance map в файл, например, irmap.vrmap.
2.8. Установите режим (Mode) irradiance map в From File, с использованием сохраненного файла.
Теперь у нас есть одну суммарную irradiance map для всей последовательности анимации. Мы можем сделать рендер нескольких кадров, для оценки полученной карты.
2.9. Отключите опцию Don't render final image.
2.10. Сделайте рендер 0-го и 360-го кадра:
Эти два изображения были получены с настройками использованными для финального рендера анимации, как в Части III.
Теперь мы готовы сделать окончательный (финальный) рендер анимации.
Для финальной анимации вы можете использовать backburner (с irradiance map сохраненной или на клиенте ил на каждом компьютере учавствующем в распределенном рендере). В любом случае, вы должны обеспечить доступность irradiance map для каждого компьютера учавствующего в рендере.
3.1. Установите тип Image sampler в Adaptive subdivision с Min/Max rate равным 0/3 для лучшего качества антиалиасинга. Вы так же можете включить опцию Normals, для уменьшения фликера от мелких деталей.
3.2. Не забудьте irradiance map тип интерполяции (Interpolation type) установить в Density-based. Это обеспечит выбор самых близких сэмплов из кешированной карты (irradiance map).
3.3. Установите 3dsmax для рендера всех кадров анимаци.
3.4. Запустите рендер анимации
Здесь находится окночательная сцена (ending scene).
Здесь окончательный рендер, такой-же как получите вы если будете точно следовать рекомендациям этого урока (8 MB).
В этом разделе помещены некоторые вопросы отностительно этого урока, заданные на форуме, вместе с ответами на них.
Q: Делаете ли вы рендер отдельных файлов для каждого кадра с последующим преобразованием в avi или делаете непосредственно вывод результата рендера в формате avi?
A: Отдельные кадры анимации снаяала выводились в формате .png, и после этого компилировались в .avi. Так вы не потеряете весь avi файл если, что то пойдет не так (электричество, зависание и т.п.) и кроме того вы можете изменять настройки копрессии позднее.
Q: Почему вы выбираете Multiframe incremental вместо, например, Incremental add to current map? В чем разница между этими режимами, которая делает предпочтительным использование Multiframe incremental? Я спрашиваю потому, что сам всегда использую Incremental add to current map.
A: Единственная разница в том, что режим Multiframe incremental удаляет карту из памяти перед началом рендера. При использовании Incremental add, текущая карта из памяти не удаляется.
Q: Я хочу прояснить ... Возможно ли использовать режим Incremental add to current map вместе с backburner без появления проблем (например фликера)? Делает ли backburner корректоно распределение кадров без необходимости для max-а сохранять файлы? Читая ваш пост приведенный выше, я понял, вы предлагаете отправлять разные секции анимации на каждый рендер-нод.
A: Да , вы можете делать рендер разных секций анимации на разных нодах, но вы должны соединить разные части irradiance map вручную, прежде чем делать финальный рендер анимации. Так же вы должны, обеспечиь нахождение каждой секции только на одном ноде.
Q: Мне нуждно сделать анимации с использованием распылителяr, и у меня здесь много glossy отражений и преломлений. Если я буду следовать рекомендациям в вашем уроке, какими мне сделать финальные настройки? С использованием lightcache для вторичного отскока и Use light cache for glossy rays или без light cache и отключенным вторичным алгоритмом? Работает ли Use light cache for glossy rays и irmap для главного алгоритма достаточно хорошо?
A: Вы можете использовать light cache сохраненный вместе с irradiance map. Если вы так делаете, вы можете отключиь вторичный алгоритм, для сохранения памяти. Но, если вы хотите, чтобы light cache помог рассчитать блики с использованием опции Use light cache for glossy rays, тогда вам нужно загружать light cache во время рендера.