Основные настройки расчета GI.
СОДЕРЖАНИЕ
Введение……………………………………………………………………3
1.Управлящие параметры Vray……………………………………………4
2.Iradiance map …………………………………………………………….12
Заключение………………………………………………………………..16
Список использованный литературы…………………………………….17
ВВЕДЕНИЕ
Среди современных рендер-программ для 3ds max VRay пользуется наибольшей популярностью. Нисколько не преувеличивая можно сказать, что VRay популярен настолько, насколько все остальные рендеры - mental ray, finalRender и brasil r/s вместе взятые. Этот факт тем более удивителен и замечателен, что алгоритм и ядро программы разрабатывались всего несколькими людьми.
Популярность этой программы имеет самые веские причины. Во-первых, VRay использует в расчетах передовые вычислительные методы - он построен исключительно и полностью на основе метода Монте-Карло. В этом отношении, пожалуй, VRay можно использовать в качестве демонстрационной программы для метода Монте-Карло. Но кроме этого, VRay обладает целым рядом интересных инновационных технологических решений, обеспечивающих ему дополнительное преимущество в качестве и скорости расчетов. Данная статья преследует своей целью рассказать об основных внутренних механизмах расчетов VRay и предложить некоторые методы их эффективного использования.
Управляющие Параметры VRay
VRay: QMC Sampler
Группа параметров, управляющих в VRay общими свойствами метода Монте-Карло, расположена на закладке QMC sampler и выглядит следующим образом:
Значения параметров этой закладки определяют сколько и какие именно сэмплы будут использованы при вычислениях любых величин, использующих метод Монте-Карло. Напомню, что практически любая величина, рассчитываемая VRay - все виды освещенности, преломления и отражения, translucency, caustic и т. д., используют этот метод. В конечном итоге, от этих настроек зависит, как скорость расчетов, так и их точность, а, следовательно, - соотношение время/качество рендера изображения.
Lock to pixels используется для устранения миганий пикселов в анимации. Если установлена галочка в chekbox напротив этого параметра, при расчете изображения используется жесткая привязка значений рассчитываемых величин к пикселам изображения с тем, чтобы эти значения были одинаковы для одних и тех же пикселов разных соседних кадров. Метод Монте-Карло имеет случайную природу, поэтому и вычисляемые раз за разом с его помощью одни и те же величины могут немного отличаться друг от друга при прочих равных условиях. Если рассчитывается статичное изображение, этот параметр можно смело выключать. Lock to pixels и увеличение сэмплов для расчета величин - два основных метода борьбы с миганиями (flickering) в анимациях, рассчитываемых при помощи VRay.
Adaptation by effect on final result (importance sampling) - техника, используемая для выбора сэмплов. При расчете интеграла освещенности методом Монте-Карло используются выбранные по некоторому случайному закону значения подынтегральных функций (сэмплы) в пределах области определения функций (полусфера над расчетной точкой для непрозрачной поверхности и сфера - для прозрачной). Интересно, что сэмплы могут иметь геометрическую интерпретацию как направления, вдоль которых вычисляются значения функций - другими словами, как испускаемые из точки лучи сэмплирования. Техника importance sampling для выбора сэмплов использует принцип важности или значимости величины конкретного сэмпла для конечного результата. Если сэмплирующий луч вдоль некоторого направления возвращает малое значение освещенности или даже ноль, дальнейшее сэплирование в этом и близких направлениях не ведется. Другой пример - для вычисления темного размытого преломления не требуется большого количества сэмплов. В любом случае, включение параметра importance sampling будет заставлять движок VRay искать и отбирать для расчетов наибольшие по значению (и поэтому - более важные для изображения) сэмплы и отбрасывать вычисление сэмплов с малыми значениями. Параметр Amount управляет тем, насколько интенсивно техника importance sampling будет использоваться при вычислениях. Нулевое значение Amount полностью отключает использование importance sampling, а при Amount = 1 каждый сэмпл будет проходить отбор. В большинстве случаев использование техники importance sampling очень благотворно сказывается на рендерах - приводит к существенному ускорению расчетов при сохранении достаточно высокого качества. Однако техника importance sampling в силу своей случайной природы может давать досадные осечки - как это ни парадоксально, иногда ее отключение может быть очень полезным, поскольку это позволяет уменьшить шум в расчетах. Таким образом, уменьшение Amount приводит к повышению качества рендера и увеличению времени расчетов. Тактика в отношении этого параметра может быть следующей - увеличивать Amount, если это не приводит к серьезному ухудшению качества изображения и уменьшать, если в рендере имеется неустранимый никакими другими средствами шум. По умолчанию Amount=1.
Adaptation by sample values (early termination) - позволяет VRay анализировать величины сэмплов и обрывать процесс сэмплирования, если эти значения приблизительно одинаковы. Другими словами, если значения сэмплов мало отличатся друг от друга, вместо дальнейшей трассировки новых сэмплов используются усредненные значения уже вычисленных сэмплов. Если сэмплы сильно отличаются по значению, берется большее их количество. Параметр Amount определяет степень применения этой техники - при Amount=0 техника вообще не используется, при Amount=1 early termination использует самое минимальное, какое только возможно, количество сэмплирующих лучей. Если требуется высокое качество расчетов, следует использовать Amount=0, но заплатить за это придется увеличением времени рендеринга. Тактика в отношении этого параметра аналогична тактике в отношении importance sampling, значение Amount по умолчанию - 0.85.
Min. samples - устанавливает минимально возможное количество сэмплов. То есть, количество сэмплов для расчета некоторой величины не может быть меньше значения этого параметра.
Noise threshold - судья, арбитр, единолично решающий, когда вычисленные значения достаточно хороши для изображения. Вычисляемое значение величины сравнивается поэтапно само с собой. Если разница больше значения Noise threshold, вычисляются дополнительные сэмплы, если разница меньше, вычисления завершаются. Очевидно, этот параметр имеет самое непосредственное влияние на качество (зашумленность) и скорость рендера. Его увеличение может сделать расчет очень быстрым и очень "шумным", уменьшение - наоборот.
Описанные выше параметры позволяют VRay динамически принимать решения о количестве сэмплов для расчета той или иной конкретной величины непосредственно в процессе расчетов. Если Amount для importance sampling и early termination имеют нулевые значения, мы получим рендер, максимально возможный для VRay по качеству. Время расчета тоже будет максимальным, а количество сэмплов будет приближаться к количеству subdivs, указываемых для GI в настройках источников света. Если Amount для importance sampling и early termination равны единице, рендер будет минимального (но это вовсе не означает - плохого) качества, время расчета тоже будет минимально возможным, а количество сэмплов будет приближаться к значению, указанному в Min. Samples. Это как бы два противоположных полюса, в пределах которых расположены все промежуточные настройки, затрачиваемое на расчет время и степень качества рендера.
Рисунок.1 Время расчета для обоих значений Amount = 0, Noise threshold=0.005.
Рисунок.2 Время расчета для обоих значений Amount =1, Noise threshold=0.005. Визуально изображение идентично предыдущему, но время расчета в 2.5 раза меньше.
Рисунок.3 Время расчета для обоих значений Amount =1, Noise threshold=0.1. Уменьшение Noise threshold еще больше ускорило расчет, но совершенно погубило качество изображения (шум в углах и на стыках стен и пола, "зернистость" тени).
Выставленные в VRay значения по умолчанию параметров Amount и Noise threshold являются довольно универсальными и пригодны в большинстве случаев, или - как стартовые значения для собственных экспериментов. Менять их следует только тогда, когда возникает настоятельная и глубоко осознанная необходимость. Не рекомендуется устанавливать в 0 значение Noise threshold - это может привести VRay к бесконечному циклу вычислений, или, что произойдет скорее всего, - к аварийному завершению работы программы.
QMC - квази Монте-Карло метод, используемый VRay, отличается от "классического" Монте-Карло как раз благодаря использованию early termination и importance sampling. Они позволяют выбирать сэмплы, что делает их "не чисто" случайными, как того требует стандартный метод М-К.
Вычисления GI (Global Illumination)
Для расчета первой компоненты - прямого освещения, VRay обладает отдельным алгоритмом, способным работать независимо. Убедиться в этом просто, достаточно отрендерить трехмерную сцену без GI (убрать галочку в checkbox "On" на закладке VRay: Indirect Illumination). В арсенале средств модуля расчета прямого освещения имеется возможность обработки пространственных источников, так что посчитать мягкие тени не составляет никаких проблем. Настройки расчета прямого освещения присутствуют в параметрах источников света и теней (затухание, тип источника, параметры теней и др.).
Рисунок.4 Расчет только прямого освещения. Все области вне прямой видимости источников света находятся в глубокой тени. Мягкие тени - результат работы с пространственными источниками света.
Отключить расчет прямого освещения вполне возможно, для этого нужно воспользоваться кнопкой Exclude в настройках источников света. Этот прием полезен для визуального анализа карт в "чистом виде" и влияния на них настроечных параметров. Например, исключение объектов из освещения никак не скажется на фотонной карте, поскольку она рассчитывается, если в свойствах источника установлено Generate diffuse, то есть - излучать фотоны. Расчет фотонной карты может быть отключен только там. Можно и выборочно включать/исключать объекты из фотонной карты, если в свойствах конкретных объектов убирать галочки в Receive GI и Generate GI (закладка VRay: System>Object settings).
Имеется в VRay и собственный алгоритм обратной трассировки лучей, который также является самостоятельной и независимой частью системы расчета. Часть настроек ray tracing расположена на закладках VRay: Global Switches и VRay: Image Sampler (Antialiasing), часть вынесена в параметры материалов типа VRayMtl.
Расчет третьей компоненты освещения - отраженного диффузного освещения является одним из важнейших алгоритмов VRay и тоже достаточно независим от расчета других компонентов освещенности. Основные настройки расчета GI расположены на закладках VRay: Indirect Illumination, дополнительные - разбросаны фактически по всем закладкам VRay. Мы рассмотрим большинство из них - в свое время. Расчет GI можно произвольно включать и отключать при помощи check box "On" на закладке VRay: Indirect Illumination.
Настройки расчета четвертой компоненты - caustic-эффектов освещения, расположены в VRay: Caustic и VRay: System (Object settings и Light settings).
Таким образом, VRay обладает четкой модульной структурой, позволяющей отключать или включать расчет той или иной компоненты освещенности независимо от остальных, что удобно для их настройки. Дальше подробно мы будем рассматривать только расчет непрямого диффузного освещения (GI).
Основные настройки расчета GI.
Для расчета только Indirect Illumination VRay предлагает три основных способа:
· Direct computation;
· Irradiance map;
· фотонные карты (Global photon map).
Сразу обращает на себя внимание такая особенность расчетов, как разделение всех видов диффузных отражений на два - первый диффузный отскок (свет сначала достигает некоторой поверхности, диффузно отражается от нее только один раз и затем попадает в точку, освещенность которой рассчитывается) и все остальные отскоки (свет, который до момента попадания в расчетную точку диффузно отражается поверхностями сцены два и больше раз). Смысл такого разделения уже обсуждался выше - это связано с важностью вклада именно первого диффузного отражения (первого диффузного отскока фотона), вклады от остальных очень быстро затухают по мере увеличения числа переотражений. Для расчета этих двух видов отскоков могут быть использованы четыре различных сочетания упомянутых трех способов расчета:
· Direct computation для первого диффузного отскока и direct computation (direct+direct) или photon map (direct +photon) для остальных отскоков;
· Irradiance map для первого диффузного отскока и direct computation (irr_map+direct) или photon map для остальных отскоков (irr_map+photon).
Рисунок.5 Фотонная карта и прямой свет, без первого диффузного отскока.
Direct computation (DC) использует для расчета диффузной освещенности метод Монте-Карло. Другое название этого способа вычислений - brute force, что можно перевести как "грубая сила". При вычислениях direct+direct для каждой точки изображения строится полусфера единичного радиуса и выполняется сэмплирование (количество сэмплов указывается в настройке Subdivs группы First diffuse bounces>Direct computation) подынтегральной функции, основная часть которой - это диффузная часть BRDF. Сэмплирование BRDF означает случайный выбор одного из ее конкретных значений, а это равносильно выбору конкретного направления (угла) падения света. В этом направлении трассируется луч до новой точки пересечения с ближайшей поверхностью. В новой точке пересечения вычисляется ее прямое освещение (это и будет первый диффузный отскок) и для расчета более высоких отражений процесс должен повториться - построение полусферы (или сферы для прозрачной поверхности), сэмплирование в количестве subdivs группы Secondary bounces>direct computation, новая трассировка лучей и так далее до исчерпания Depth - глубины трассировки. Поскольку переотраженное диффузное освещение очень быстро затухает с возрастанием количества отражений, еще одним ограничителем на количество сэмплов и глубину трассировки, кроме Depth, выступает QMC Sampler - срабатывает importance sampling и early termination.
Вычисление при помощи "грубой силы" дает очень точное распределение полутеней в сцене (светотеневых переходов) совершенно без размытия. Но расчет выполняется очень долго. Нет, действительно - очень долго. Например, если выбрать количество Subdivs равным 50 для обоих видов отскоков, то количество сэмплов для одной точки составит 2500 лучей, а это 2500 новых точек, в каждой из которых будут трассироваться свои 2500 лучей, и каждый из них даст свои 2500 точек и так далее, пока допускают настройки QMC. Процесс очень быстро приобретает лавинообразный характер, и все это громадное количество лучей DC должен совершенно честно просчитать. Количество сэмплов вторичных отскоков у VRay по умолчанию равно одному лучу, этого оказывается вполне достаточно для хорошего качества в большинстве случаев и серьезно уменьшает количество расчетов. Кроме высокой точности светотени и медленности расчетов, недостаток DC - шум, связанный с тем, что расчеты выполняются индивидуально для каждой точки. Избежать шума можно только одним способом - поднять количество сэмплирующих лучей (Subdivs), что не самым лучшим образом скажется на времени расчетов. Поэтому, direct+direct computation используется на практике довольно редко и в основном - для reference-изображений, помогающих понять, как должен быть распределен вторичный свет в сцене (в этом случае шум не важен).
В случае использования direct +photon, трассировка из расчетной точки выполняется только до ближайших поверхностей, где рассчитываются их прямые освещенности, а освещенность от остальных отскоков оценивается из плотностей фотонных карт в точках пересечения в пределах заданного радиуса (параметр Search distance фотонной карты). Этот метод быстрее предыдущего, и может быть даже более точным при достаточно высокой плотности фотонных карт.
Существует еще один способ использования фотонных карт - для выбора (предсказания) таких направлений DC, которые обеспечивают существенный вклад в расчеты. В самом деле, зачем наугад "палить" сэмплами в окружающее пространство, если известно, по каким направлениям прилетают фотоны!? К сожалению, похоже, что VRay этот трюк не использует.[1]
Irradiance map
Отличие расчета методом irradiance map от direct computation состоит только в том, что расчет выполняется не для всех точек изображения, а лишь для некоторых. Освещенность остальных точек интерполируется по найденной освещенности ближайших расчетных точек (метод так называемых световых градиентов) в пределах радиуса, задаваемого в параметре Interp. Samples группы First bounces>Irradiance map. Это позволяет рассчитывать освещенность только в тех местах трехмерной сцены, где это действительно необходимо - в областях резкого изменения освещенности или геометрии поверхности, и аппроксимировать цвет на равномерно освещенных плоских участках поверхностей.
Отбор точек для расчета и сохранения в irradiance map происходит поэтапно, начиная с некоторого самого низкого разрешения изображения и до максимального разрешения. Минимальное разрешение определяется параметром Min. rate, максимальное - Max. rate группы параметров First diffuse bounces>Irradiance Map, значения этих параметров являются степенями двойки. Так что значение -2 соответствует одной четвертой, а ноль - единице. Расчет irradiance map выполняется несколько раз, каждый раз все более точно, адаптивно повышая качество. Например, если Min. Rate = -3, а Max. Rate = 0, расчет irradiance map будет выполнен четыре раза: (-3, -2, -1, 0). В качестве исходного разрешения принимается разрешение рассчитываемого изображения, уменьшенное в соответствующее количество раз. Для -3 на первом проходе действительно рассчитываться будет только каждый восьмой пиксел изображения. На следующем шаге рассчитанные соседние освещенности сравниваются между собой, если отличие в освещенности точек, их нормалях или пространственная близость объектов оказываются больше некоторых пороговых величин, из каждой группы выбирается и рассчитывается дополнительный пиксел.
Пороговые значения для освещенностей (цвета) указываются в параметре Clr. thresh, для нормалей - в Nrm. thresh, для взаимного пространственного положения - в Dist. thresh. После того, как все шаги будут выполнены, результат расчета может быть сохранен в файл. Это, собственно, и есть карта освещенности - irradiance map. Из-за сохранения результатов расчета в файл, метод irradiance map еще называют кэшированием. Затем наступает очередь финального рендера на полном разрешении, при этом уже рассчитанные освещенности пикселов изображения берутся из irradiance map, а остальные интерполируются градиентами по вычисленным значениям. На этапе финального рендера могут быть вычислены дополнительно еще некоторые точки - этот процесс активизируется установками суперсэмплинга. Суперсэмплинг имеет свои пороговые величины для изменения освещенности пикселов, которые могут не совпадать с Clr. thresh, и если они меньше - будет выполняться дополнительный просчет некоторых точек.
Из последнего замечания можно сделать вывод, что установки суперсэмплинга можно упрощать на этапе настройки irradiance map для ускорения расчетов, и устанавливать для них требуемое высокое качество уже после расчета и сохранения irradiance map, непосредственно перед финальным рендером. В отличие, от direct computation, для которого настройки суперсэмплинга должны быть указаны еще до начала расчетов. Таким образом, irradiance map+photon map обладают максимальной гибкостью в отношении настроек суперсэмплинга - их можно менять без пересчета как irradiance map, так и photon map, что допускает экспериментирование "малой кровью" с настройками суперсэмплинга.
Второй практический вывод касается зависимости значений Min. rate и Max. rate от разрешения рассчитываемого изображения - при увеличении разрешения эти величины можно уменьшать и наоборот. Например, если пара значений Min. rate = -3 Max. rate = 0 хорошо работает для изображения 800x600 пикселов, то для разрешения 1200x1024 вполне можно использовать Min. rate = -4 Max. rate = -1, а для еще более высоких разрешений эти значения можно ставить еще меньше. Связано это с тем, что при увеличении разрешения увеличивается количество рассчитываемых точек - одна и та же область трехмерной сцены представляется бОльшим количеством пикселей.
Собственно расчет освещенности точек выполняется аналогично direct computation - сэмплируется полусфера, находятся точки пересечения, рассчитывается прямая освещенность, если для вторичных отскоков используется тоже direct computation - строятся новые полусферы, если фотонные карты - происходит оценка освещенности по плотности фотонов. В общем - как обычно :). Но еще одна важная особенность расчета irradiance map и first diffuse bounce в целом - то, что на этапе вычислений первого диффузного отскока происходит подключение (читай - смешивания, сложения) как прямого освещения, так и освещения secondary bounces. Такова особенность VRay. Он не хранит все компоненты освещенности по отдельности, расчет первого отскока выполняется с учетом прямого освещения и остальных переотражений и результат записывается в файл. И если прямое освещение все же не хранится самой irradiance map, его можно отключать/включать, то многократные переотражения после расчета самостоятельного значения уже не имеют. То есть, если рассчитанная с учетом фотонной карты irradiance map сохранена в файле для дальнейшего использования, то загрузку фотонной карты из файла как и расчет secondary bounces можно отключать и это никак не скажется на конечном результате. Другой пример. Рассчитаем irradiance map без secondary bounces и сохраним в файл. Рассчитаем фотонную карту и тоже запишем в файл. Если теперь при рендере для first diffuse bounce использовать irradiance map из файла, а для secondary bounces - записанную фотонную карту и посчитать освещение, то сложения освещенностей не произойдет. Мы увидим только irradiance map и прямое освещение. Эта особенность расчетов GI в VRay имеет и положительные стороны - размер irradiance map гораздо меньше размера фотонной карты. А вышеописанная особенность позволяет нам использовать только irradiance map для дальнейших расчетов, если она предварительно рассчитана с учетом фотонной карты, и забыть о многомегабайтной фотонной карте.
Метод расчета irradiance map выполняется гораздо быстрее direct computation и без потери качества изображения. Поэтому, он является основным для расчета первого диффузного отскока. Адаптивный расчет по выбираемым точкам - очень интересная находка VRay, являющаяся его существенным преимуществом. Так, расчет GI при помощи irradiance map + photon map в VRay аналогичен расчету GI в mental ray при помощи сочетания фотонных карт и final gathering. Однако, final gathering, в отличие от irradiance map, выбирает точки для расчета равномерно на основе заданного значения радиуса и без учета изменения цвета и геометрии. Поэтому, для получения сопоставимых по качеству с irradiance map результатов, final gathering должен использовать большее количество точек, а значит - выполняет расчеты медленнее.
Что касается времени расчетов, direct+direct будет самым медленным, direct+photon map и irradiance map + direct будут конкурировать по времени, irradiance map + photon map - самый быстрый способ расчета, обеспечивающий, к тому же, и высокое качество изображения в силу физической корректности принципа фотонных карт. Поэтому, именно это сочетание наиболее часто используется на практике. Но бывают исключения. Типичный пример - расчет ночного освещения с использованием фотонных карт. Поскольку фотонов мало вследствие малой интенсивности источников света (ночь же), может потребоваться очень большое время для их накопления. Другой пример - отсутствие диффузной компоненты у материалов. В этом случае расчет фотонных карт может превратиться в бесконечный процесс с нулевым результатом, поскольку фотонные карты могут быть построены только для поверхностей с ненулевыми диффузными свойствами. Еще один типичный пример - расчет открытых пространств с использованием Skylight. Впрочем, последний пример поддается "лечению" правильной настройкой источников света и карт.
Теперь немного поговорим о параметрах самих карт - irradiance и фотонных.[2]
ЗАКЛЮЧЕНИЕ
Основной задачей любой программы рендеринга является вычисление освещенности и цвета произвольной точки трехмерной сцены. Задача эта очень непроста. Вычислительные методы компьютерной графики проделали довольно длинный путь эволюционного развития, прежде чем достигли современного уровня фотореалистичности синтезированных на компьютере изображений.
Первое, что научились считать - это освещенность объектов от источников света, находящихся в прямой видимости, когда объект и источник можно соединить прямой линией. Венцом этой модели расчетов стала модель освещения Фонга и модель затенения Фонга, которые позволили выполнять сглаживание цвета полигонов поверхности и вычислять зеркальные подсветки для нее. Эта модель освещения, а также ее модификации (Ламберт, Блинн, Торрент, Ward и другие) и сейчас являются основой для расчета прямой освещенности, правда, с некоторыми дополнениями. Одно из важнейших уточнений - учет пространственных размеров источника света, позволяет получать мягкие края у теней объектов. Другое дополнение относится к определению затухания интенсивности света с расстоянием. В частности, в физически корректных расчетах освещенности используется закон квадратичного затухания интенсивности распространяющегося луча света от расстояния.
Вторая компонента освещенности объектов определяется зеркальным (или близким к зеркальным) отражением от окружения и прозрачностью самого объекта. Для ее вычисления был разработан метод трассировки лучей - ray tracing method. Этот метод отслеживает траектории лучей света, начиная от камеры, до первой поверхности пересечения и затем - в зависимости от прозрачности или отражающих свойств поверхности, определяется направление дальнейшего распространения луча. Метод трассировки лучей от камеры впервые позволил учесть в расчетах освещенности объекта его окружение и был более эффективен, чем отслеживание лучей от источников света, поскольку обрабатывал только достигающие камеру лучи. Одним из недостатков классического метода трассировки лучей является «жесткость» получаемого изображения - излишняя четкость контуров, теней, цветов. Поэтому в дальнейшем была разработана модификация, известная как distribution ray tracing (DRT). Суть DRT в том, что при каждом пересечении трассируемого луча с поверхностями вдоль его траектории, из каждой точки пересечения строится не один, а несколько лучей. Этот процесс несколько напоминает цепную реакцию. Такой подход позволил рассчитывать размытые отражения и преломления (известные также как fuzzy, blurry или glossy отражения и преломления), но за счет огромного увеличения объема расчетов. Модель DRT реализована в свойствах отражений и преломлений материалов VRay при помощи параметра Glossy.