3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

20 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Тесты GI в mr 3.4, новая схема настройки расчета GI
igsiv_
сообщение 25/05/2005, 23:33
Сообщение #1


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Мы все привыкли к тому, что для качественного расчета вторички в mental ray методом FG +PhotonMap для настроек FG нужно устанавливать маленькие значения max radius (менее 1 см) и накручивать accuracy – число FG sample до 2000 - 3000. Так вот, это неправильно.
Точнее, не совсем правильно. А еще точнее, это лишь часть правды.
Дело в том, что уменьшая до безобразия радиус, мы тем самым заставляем ментал рассчитывать практически все видимые в камеру точки исключительно методом Monte-Carlo и полностью исключаем интерполирование. Когда радиус становится слишком мал, в его пределах нет (или почти нет) FG - точек и это справедливо почти для всех видимых в камеру точек.
Для того, чтобы FG был FG, необходимо, чтобы выполнялась интерполяция, поэтому поступать нужно с точностью до наоборот - значение max. radius нужно задавать большим. Насколько большим?

Сообщение отредактировал igsiv_ - 25/05/2005, 23:36
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:39
Сообщение #2


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Позволю себе напомнить, что в документации ментала написано, что "max. radius определяет зону поиска FG-точек, которые могут быть использованы в интерполяции". Могут, не значит обязательно будут использованы. А обязательно использованы будут только те точки, ошибка интерполяции от которых не превышает заданного значения (ошибки интерполяции). Поэтому, задавать макс. радиус можно сколь угодно большим, ментал сам выберет подходящие для интерполяции точки и отбросит остальные. Небольшой оптимизации скорости расчета можно добиться установлением реального радиуса сбора, но в принципе, этим можно пренебречь.
Известно, что по умолчанию, ментал использует около 10% от максимального размера сцены, это вполне приемлемо. Ориентироваться можно также на размеры плоских областей в сцене – например, на размер стен, пола или потолка в интерьрах и т.д. Смысл в том, что гладкие ровные поверхности должны большей частью интерполироваться, а не рассчитываться.
Что по поводу min. radius. Вот, это очень важно. Снова приведу цитату из документации: "min. radius определяет радиус площадки, в пределах которой все FG-точки обязательно будут принимать участие в интерполяции", добавлю – вне зависимости от ошибки интерполяции. Это значит, что именно min. radius отвечает за точность расчета вторички во-первых, и за ее размытость во-вторых. Устанавливая большое значение min. radius можно так размыть вторичку, что шум и артефакты будут скрыты даже при малых значениях accuracy (числе FG-лучей). И наоборот, малые значения min. radius позволяют точно рассчитать GI, правда, потребуется накручивать accuracy.
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:41
Сообщение #3


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Что это за "ошибка интерполяции" и где в настройках ее найти?
Такой настройки в интерфейсе ментала нет, и не ищите. Я предполагаю (и уверен в этом), что ошибка интерполяции "завязана" на значение accuracy – ее величина определяется в зависимотси от значения FG-sample. Чем больше это значение, тем меньше устанавливается ошибка интерполяции и тем требовательнее отбираются FG-точки для интерполяции. Попутно, это приводит к увеличению количества FG-точек и более плотному их расположению. Увеличиваем accuracy, значит и увеличиваем кол-во FG-точек. Это разумно, поскольку при малом числе FG-сэмплов, шум от расчета FG-точек методом Монте-Карло будет перекрывать ошибки от интерполяции, если она мала. А такое "завязывание" двух параметров в один обусловлено стремлением разработчиков упростить интерфейс. Таким образом, mental ray оценивает величину ошибки интегрирования методом М-К по заданному значению FG-samples и устанавливает величину ошибки интерполяции, которая соответствует ошибке интегрирования.

Все это приводит к следующей схеме настройки расчета вторички менталом:
1. Устанавливаем max. radius большим (1/10 максимальной размерности сцены, можно и больше), min. radius оставляем пока по умолчанию;
2. Задаем небольшое значение accuracy в пределах 30 - 200 сэмплов на точку;
3. Считаем FG c сохранением в файл;
4. Поскольку изменение радиусов влияет только на интерполяцию, можно их менять, загружая расчет FG из файла (use file, без rebuild) и теперь настраиваем min. radius. Если есть шум и грязь, его можно увеличить, если грязи нет, а нужно увеличить точность вторички, радиус уменьшаем (в пределах, которые нам позволит accuracy, использованный при расчете).
5. Благодаря тому, что появился фильтр для усреднения значений FG-samples , а также благодаря тому, что радиусы можно задавать в пикселах и тем самым устанавливать точность вторички в зависимости от удаленности от камеры, можно реально считать хорошую вторичку при очень низких значениях accuracy. При этом вторичка будет и гладкой и достаточно точной.
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:46
Сообщение #4


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Теперь приступим к тестам. Для тестирования я выбрал модель интерьера кафедрального собора св. Джеймса (Cathedral of St James), расположенного в городе Sibenik. Модель этого собора использовалась в соревновательных тестах расчета освещения разными программами, адрес: http://hdri.cgtechniques.com/~sibenik2/index_sibenik.htm
Сама модель выполнена в LightWave и потом экспортирована в разные 3D-форматы. Модель не доделана, да еще и экспорт выполнен "по-быстрому". В результате геометрия – полный кошмар: дыры, недоделки, тонкие и длинные как иглы полигоны, сдвоенные плоскости... Я поправил, что мешало рендеру, сцену можете скачать отсюда, если есть желание принять участие в тестах. Еще одно, материалы были сделаны в оригинале для brazil, я так и оставил, не стал ничего удалять. В тестах ментала использовал один общий для всей сцены стандартный 3ds max - материал, свойства поверхности и фотонные свойства определены dgs material c ненулевыми диффузными свойствами.
Модель собора довольно велика – около 50 метров по самой длинной стороне, поэтому сценка – очень серьезный тест для рендеров. Я сомневаюсь, что ее вообще можно посчитать в ментале за разумное время на одном компьютере по схеме "маленький радиус - большое accuracy", то есть методом М-К only.

Во всех тестах расчет Global Illumination выполнен методом Photon Map + Final Gathering, фотонная карта считалась один раз и затем грузилась из файла. Размер фотонной карты около 2 млн. фотонов, радиус сбора фотонов 3 метра, собиралось приблизительно 600 фотонов на каждую точку. Время расчета фотонки – около 10 минут.

Сцена (1.6 мБ)

Фотонная карта


Сообщение отредактировал igsiv_ - 26/05/2005, 00:30
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:50
Сообщение #5


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 1
FG
samples = 10 (!)
max radius = 300 cm, min radius = default (30cm)
filter = 1
time = 0:23:54.52 for computing finalgather points
time render image 800x600 aa 1/4 1/4 + 15 min

рендер Тест 1

Сообщение отредактировал igsiv_ - 26/05/2005, 00:31
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:51
Сообщение #6


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Я немного "намутил" с освещением, поэтому изменил его настройки в последующих сценах – уменьшил интенсивности и увеличил сэмплироваание area источников света с 16 на 64 сэмпла. Всего в сене около 70 ис, по большинству area-типа.
Как видно из рендера, трехметровое значение max. radius никак не сказалось на точности вторички и на величине шума. Зато все плоскости имеют довольно "гладкий" вид. Вообще, для меня стало откровением, что всего при 10 сэмплах на FG-точку можно получить такую гладкую вторичку. Естественно, о точности и четкости вторички речь не идет. Min. radius оставлен по умолчанию и в данном случае составляет 30 см. То есть, все FG-точки с площадки радиусом 30 см принимают участие в интерполяции! По сути, вторичка размазывается по площадке диаметром в 60 см, что и позволило достичь ее гладкости. Экспериментирование с уменьшением радиуса почти немедленно приводит к появлению грязи и шума в углах.
Я не стал больше возиться с этими настройками, но в принципе, можно уменьшить мин. радиус и убрать грязь увеличением FG filter до 2-3 или 4. Это может дать более точную вторичку без потери ее гладкости. Еще интересный вариант – попробовать использовать эти настройки с большой фотонной картой, фотонка обеспечит точность вторички, а FG- ее сглаженность. Этот вариант я пока не тестировал.
Суммарное время расчета составило10+24+15=49 минут, что очень неплохо для такой большой сцены.
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:53
Сообщение #7


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 2
PM та же
FG
samples = 50
max radius = 300 cm, min radius = default (30cm)
filter = 0
time = 0:58:03.47 for computing finalgather points
time render image 800x600 aa 1/4 1/4 + 15 минут

рендер Тест 2

Увеличил количество сэмплов с 10 до 50, что детализирует вторичку, радиусы прежние, а фильтр (=0). В рендере присутствует заметный шум.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:32
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:54
Сообщение #8


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 3
samples = 50
max radius = 300 cm, min radius = default (30cm)
filter = 2
time = 0:58:03.47 for computing finalgather points
time render image 800x600 aa 1/4 1/4 + 15 min

рендер Тест 3

Включение фильтра (=2) сглаживает шум полностью, время расчета не увеличивается. На мой взгляд, это вполне рабочая вторичка, обладающая достаточно сбалансированным компромиссом между точностью и гладкостью и ценой всего лишь в 1 час времени.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:33
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:56
Сообщение #9


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 4
samples = 50
max radius = 300 cm, min radius = 3cm
filter = 2
time = 0:58:03.47 for computing finalgather points
time render image 800x600 aa 1/4 1/4 + 15 min

рендер Тест 4

Пробуем увеличить точность вторички, уменьшая мин. радиус с 30 до 3 см. Точность и четкость вторички несомненно повысилась, правда, и "шумность" рендера тоже немножко, можно еще увеличить значение фильтра.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:34
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:57
Сообщение #10


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 5
samples = 50
max radius = 300 cm, min radius = 3cm
filter = 2
from same FG map
time render image 800x600 aa 1 16 + 1h 27 min

рендер Тест 5

Ну и 50 сэмплов "в полной красе" – с aa min = 1 и max = 16. Расчет с таким aa увеличил время рендера на полтора часа.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:35
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 25/05/2005, 23:59
Сообщение #11


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 6
PM та же
FG
samples = 100
max radius = 300 cm, min radius = 3cm
filter = 1
from same FG map
time = 2:46:01.35 for computing finalgather points
time render image 800x600 aa 1/4 1/4 + about 1h 30 min

рендер Тест 6

Пробую еще увеличить точность и четкость вторички при помощи увеличения сэмплов до 100 и понижая значение фильтра до 1. Ну, точность повысилась, да и шум тоже. Фильтра в 1 недостаточно даже при 100 сэмплах на FG-точку. Время расчета FG возросло почти до трех часов.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:36
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 26/05/2005, 00:00
Сообщение #12


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 7
samples = 100
max radius = 300 cm, min radius = 1cm
filter = 2
from same FG map
time = 2:46:01.35 for computing finalgather points
time render image 800x600 aa 1 16 + 3h 53 min

рендер Тест 7

Альтернативный вариант – точность вторички повышаю уменьшением min. radius c 3 до 1 см , а шум убираю фильтром, значение которого теперь равно 2. Повышение точности довольно существенное по сравнению с 3см. Ну и расчет с рабочим аа min=1 max=16, в результате чего время финального рендера возросло почти на 4 часа. Результат выглядит лучше, чем в предыдущем случае. Грязь на некоторых тонких деталях, на мой взгляд, вызвана недостаточным для такой сцены разрешением картинки. Вообще же точность вторички и ее гладкость вполне "на уровне", и это всего при 100 сэмплах.

Сообщение отредактировал igsiv_ - 26/05/2005, 00:37
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 26/05/2005, 00:02
Сообщение #13


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Тест 8
Пришло время использовать радиусы в пикселах. Дело в том, что высокая детальность вторички для дальних областей сцены вовсе и не нужна. Поэтому, разумнее задавать детальность вторички в зависимости от расстояния до камеры. И реалистично, и для гладкости хорошо.

samples = 100
max radius = 300 pixels, min radius = 1 pixels
filter = 2
from same FG map
time = 2:46:01.35 for computing finalgather points
time render image 800x600 aa 1 16 + 2h 03 min

рендер Тест 8

Замечательно то, что и время финального рендера c aa сократилось вдвое (думаю, за счет упрощения antialiasing).

Сообщение отредактировал igsiv_ - 26/05/2005, 00:39
Go to the top of the page
 
+Quote Post
igsiv_
сообщение 26/05/2005, 00:03
Сообщение #14


Мастер
Иконка группы

Группа: Участник
Сообщений: 1 024
Регистрация: 07/05/2004
Пользователь №: 5 766



Выводы.
1. Для качественного расчета вторички вовсе не нужны малые значения max. radius, а совсем наоборот - для интерполяции нужны большие значения max. radius. Малые значения нужно устанавливать, если хотите просчитать рендер чистым Монте-Карло.
2. Min. radius определяет гладкость и точность вторички, чем меньше это значение, тем точнее вторичка и больше шум. На практике радиус в 1 см вполне применим в большинстве случаев.
3. Использование FG filter и радиусов в пикселях позволяет подавить шум и ускорить рендер.

Все вместе дает нам возможность считать рендеры в ментале гораздо быстрее, чем при использвовании малых значений max. radius и больших значений accuracy без потери качества.
Go to the top of the page
 
+Quote Post
Sleng
сообщение 26/05/2005, 00:16
Сообщение #15


gagarin
Иконка группы

Группа: Участник
Сообщений: 1 788
Регистрация: 05/05/2003
Пользователь №: 2 104



igsiv_ ну ты крут!!!
я в шоке
реально людям помогаешь
сегодня пожалуй уже спать пойду
а вот завтра засяду испытывать новый подход:)

Будь добр
А залей куданить сцену с последними (сантиметровыми) настройками тоже поглядеть blush.gif

Сообщение отредактировал Sleng - 26/05/2005, 00:26
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






20 страниц V   1 2 3 > » 
Reply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 19/03/2024 - 09:10