воскресенье, 23 июня 2013 г.

"finalgather points test" или решение проблемы засветов при низких настройках FG.

Наверняка многие пользователи Mental Ray в 3ds Max сталкивались с проблемой засветов связаной с низкими настройками Final Gathering. На рисунке ниже приведен пример двух рендеров выполненых с абсолютно одинаковыми настройками FG в режиме пресета Draft. О том, что способствует появлению засветов на рисунке справа, и о том, как получить результат подобныый тому что находится на рисунке слева мы поговорим далее.



Сцена для примера очень проста: ящик без боковой стенки внутри которого находится лампочка и который, в свою очередь, слегка "завис" над плоскостью.


Выполним рендер используя пресет Draft для Final Gathering


В результате под коробкой на изображении видны засветы.  

Почему это происходит и как это все работает?

В корне этой проблемы лежит FG интерполяция. Сетка из FG точек  генерируется в 2d пространстве (на поверхности самой картинки), и каждая  FG  точка рассчитывается методом Монте-Карло. Алгоритм распределения точек настроен таким образом, что плотность точек будет выше в тех местах, где объекты ближе расположены друг к другу, где кривизна поверхностей больше, а так же в местах изменения контраста. Увеличивая Initial FG points Density сетка не уплотняется равномерно по всему изображению и больше точек появляется в местах с кривизной поверхности, на краях геометрии, и там где меняется контраст. В нашей сцене значение Initial FG points Density равно 0,1. Сетка имеет не достаточную плотность и 30 точек между которыми должна произойти интерполяция занимают достаточно большую площадь (на самой картинке), так как точки находятся на достаточно удаленном растоянии друг от друга.

рендер выполненый в режиме диагностики точек FG

Далее, предположим что точка, которая находится на плоскости у основания коробки, и относительно которой  интерполяция  должна произойти, не в состоянии насобирать 30 точек только лишь на темном участке. Поэтому в расчет интерполяции так же берутся точки, которые находятся на паралельных нормалях геометрии. В нашем случае, в расчете освещенности пола в интерполяции участвуют точки, которые находятся на "дне" коробки. А так как яркость в этом месте в разы выше, то из 30 находящихся рядом в этом месте точек, между которыми происходит интерполяция, возможно 29 из них находится на темном участке и имеет яркость равную, например, 5, а одна точка находится на освещенном участке и имеет яркость равную, например, 90. Так вот эта одна, самая яркая, точка внесет самую весомую лепту в расчет интерполяции между всеми 30 точками и в результате мы получим засвет. Обратите внимание что увеличивая пресеты FG от draft до high, параметр Interpolate Over Num. FG Points остается равным 30. Это значит что сетка уплотняется и площадь точек на картинке между которыми должна произойти интерполяция уменьшается. Соответственно засвет уменьшается или исчезает вовсе. Поэтому при увеличении настроек FG засветы исчезают в ущерб затраченому на расчеты времени.

Как решить проблему не увеличивая настройки FG?

Начиная с версии 3.10.0.3 в Mental Ray был введен экспериментальный режим анализа точек FG. Принцип его работы заключается в том, что из точки относительно которой должна произойти интерполяция, оценивается видимость точек кандидатов для участия в интерполяции. Если точка кандидат не находится в зоне прямой видимости, то она не проходит отбор и взамен нее для интерполяции анализируется другая точка. Анализ точек кандидатов продолжается до тех пор пока не насобирается необходимое количество соответствующих критерию отбора точек. В нашем случае это означает что точки, которые находятся на плоскости, никогда не смогут быть интерполированы с точками которые находятся на "дне" коробки. Включается этот режим с помощью команды стринг опшенс "finalgather points test" on в свитке String options

рендер выполненый с включенным режимом анализа точек FG c использованием пресета Draft.  

8 комментариев:

  1. О, круто! Спасиб за такой найденый способ борьбы с ватой )))

    ОтветитьУдалить
  2. Ответы
    1. Будь все же осторожней. Эта функция увеличивает кол-во Probe лучей для определения видимости точек. В некоторых сценах время рендера может улететь в небеса. Так что это не панацея на все случаи жизни, но иногда выручает.

      Удалить
  3. Подскажите пжлста,у меня 14 max стоит,но свиток String options пустой ни одной строчки : (,просто пустое поле, что делать? и как включить режим о котором вы говорите? спасибо.

    ОтветитьУдалить
    Ответы
    1. вот в этом пустом поле и пишете: "finalgather points test" on

      Удалить
    2. Спасибо большое. сейчас попробую.

      Удалить
    3. не помогло...: ( наверно ччо то не так я делаю

      Удалить
  4. в случае сложной геометрии типа ткани, получается очень не очень.

    ОтветитьУдалить