Программный комплекс Hydra состоит из 2 частей – плагина (HydraPlugin) к 3D Studio Max и сервера (HydraServer), который является основным вычислительным ядром комплекса.
Рисунок 1. Схема функционирования программного комплекса HydraRender.
При этом, плагин и сервер могут быть размещены физически на одной или на разных машинах. Взаимодействие осуществляется по протоколу TCP/IP. Если плагин и сервер размещены на одной машине, то в качестве адреса сервера надо указывать localhost - 127.0.0.1. Если плагин и сервер работают на разных машинах – вам необходимо указать ip адрес машины, на которой находится сервер.
Однако, сервер может работать и без плагина. В этом случае он принимает на вход модели в формате COLLADA (и это будет другой exe файл - test_app.exe).
Далее, и плагин и сервер могут работать как с GUI так и без gui.
Рисунок 2. Внешний вид интерфейса HydraServer.
В случае если используетсчя GUI, все управление осуществляется через него (не забудьте поставить python 2.7). Укажите нужную сцену кнопкой browse, задайте желаемое разрешение и нажимайте кнопку restart.
Но можно работать и без GUI. Все управление в этом случае будет осуществляться через горячие клавиши. Для этого запускайте программу из командной строки следующим образом:
"test_app.exe myPathToColladaFile.dae pathToColladaProfile.xml"
Если COLLADA профиля нет, просто не указывайте его.
Для сервера, ожидающего соединение с плагином, входной файл и профиль указывать не нужно, поэтому его можно просто запустить.
Основной алгоритм визуализации в HydraRender – path tracing. На данный момент экспериментально поддерживается также irradiance cache (в мировом и в экранном пространствах) для ускорения расчетов вторичного освещения.
Параметр Trace Depth. Отвечает за глубину трассировки. При отсутствии в сцене стеклянных, преломляющих объектов рекомендуется ставить этот параметр не выше 4. При наличии, не больше 10, в зависимости от сложности преломляющего объекта.
Hot keys = “1,2,3,4,5 …”
Параметр Shadows. Включены или выключены тени. В режиме “Ray tracing” тени всегда резкие. Мягкие тени будут считаться от площадный источников только в режиме “path tracing”.
Hot key = “Z”
Параметр Color Shadows (в текущем релизе не поддерживается). Если включен, то тени от прозрачных объектов буду цветные, в зависимости от цвета материала. При этом, для “тонких” (thing) прозрачных поверхностей затухание будет вычисляться простым домножением на “1.0 - trancparency”. Для прозрачных объектов, имеющих толщину тень будет затухать по закону Бугера-Ламберта-Бэра. Если тени выключены то этот параметр ни на что не влияет.
Hot key = “X”
Рассчет Indirect Illumination. Если вы хотите использовать irradiance cache, то перед рендерингом необходимо отдельно запустить расчет иррадианс кэша соответствующей кнопкой в GUI или горячей клавишей.
Hot key = “С” (включить/отключить diffuse bounces)
Hot key = “I” (Посчитать irradiance cache)
Hot key = “P” (Начать/прекратить path tracing)
Параметр “GPU BufferSize”. Может быть равен 1, ½ или ¼ (от размера экрана). Этот параметр отвечает за то, сколько памяти будет выделено на GPU под буфер данных для потоков. Для предварительного просмотра (особенно если вторичное освещение считается path tracing-ом – “brute force”) в низких разрешениях (~ 1024x768) удобно использовать размер равный 1. В этом случае вы сможете уже за 10-20 секунд оценить, устраивает ли вас изображение. Для финального рендеринга в разрешениях больше чем 1024x768 рекомендуется использовать BufferSize = ½. Значений ¼ следует использовать, только если у вас не хватает GPU памяти (сообщение об ошибке cudaMalloc failed).
Параметр Enable DOF. Включить или отключить Depth Of Field.
Параметр DOF Lens Radius. Радиус линзы. Чем больше радиус линзы, тем сильнее эффект размытия.
Параметр DOF Focal Plane Dist. Расстояние до фокальной плоскости. Геометрия, находящаяся в фокальной плоскости будет в резкости.
Настройки режима Path Tracing (контроль качества)
Параметр minRaysPerPixel. Минимально допустимое число сэмплов на пиксел.
Параметр maxRaysPerPixel. Максимально допустимое число сэмплов на пиксел.
Параметр qualityTreshold. Порог ошибки (относительной), после которого пиксел считается посчитанным. Рекомендумые значение от 0.005 - 0.01 (для HDR оценки). Важно отметить, что если число сэмплов на пиксел достигло своего макмимума, рассчет прекращается даже если ошибка больше допустимого порога.
Параметр useHDRQualityEstimation. Если равен true, все расчеты ведутся в HDR, иначе в LDR.
Параметр useLoyalEstimateFunction. Лояльная оценочная функция применяется после некоторого (как правило довольно большого ~200-400) числа сэмпов. Основной смысл лояльной оценочной функции заключается в том, чтобы производить оценку в большей степени из визуального качества изображения, а не из прямых числовых характеристик ошибки.
Существует определенная проблема, связанная с тем, что path tracing довольно медленно сходится (особенно в конце). Когда вы установили порог для ошибки скажем в 1% (0.01), то вы скорее всего имеете ввиду, что погрешность примерно 1% вас устраивает, а не что 1% - это максимально допустимая ошибка и больше ну никак нельзя (если так то не используйте лояльную оценочную функцию).
В реальности может получиться, что для того, чтобы с 1.2% уменьшить ошибку до 1.0% придется дополнительно произвести ~500-600 сэмплов. Лояльная оценочная функция останавливает процесс раньше, если сходимость замедляется, но ошибка близка к заданной погрешности (хотя может быть чуть больше ее) и значительно ускоряет таким образом процесс рендеринга.
Параметр loaylEstimateFunctionTresholdInRays. Число сэмплов на пиксел, после которого применяется лояльная оценочная функция.
Параметр drawBlocks. Отображать блоки, которые Hydra еще обсчитывает.
Параметр drawRaysStatInfo. Отображать статистику.
Настройки режима Irradiance Cache
Irradiance cache рассчитывается отдельно в мировом пространстве. Для того чтобы корректно использовать кэш освещенности:
1) Снимите галочку "diffuse bounce". Иначе вы будете считать вторичное освещение дважды.
2) Поставьте камеру в нужную вам позицию и нажмите кнопку "Irradiance Cache". Ничего не трогайте и ждите пока иррадианс кэш посчитается. Как только это произойдет, нажмите кнопку "Path tracing" для финального рендера сцены.
Рисунок 3. Sponza; Вторичное освещение поссчитано при помощи алгоритма Irradiance cache.
Параметр Monte-Carlo Trace Depth. Допустимые значения - (1,2 но можно вплоть до 10). Отвечает за глубину трассировки при вычислении освещенности в точках иррадианс КЭШа. Больше 2 ставить смысла, как правило, не имеет.
Параметр Hemisphere Samples Number. Допустимые значения (1024, 4096, 80192 или 16384). Отвечает за количество сэмплов в точках иррадианс КЭШа. К сожалению, в случае глубина трассировки = 2 сэмплов требуется как правило значительно больше, чем при brute force parh tracing подходе, потому что в path tracing получающаяся ошибка в виде шума фильтруется глазом. А при использовании иррадианс КЭШа – размазывается, что приводит к появлению грязных пятен. Поэтому если вы заметили артефакты в виде грязных пятен от вторичного освещения, имеет смысл попробовать увеличить параметр Hemisphere Samples Number.
Параметр Irradiance Cache Pass Number. Число проходов. По дефолту 20. Если некоторые места на изображении не покрыты точками или вы заметили другие артефакты, можно попробовать увеличить этот парметр.
Режим Ray Tracing
Этот режим предназначен в основном для интерактивного перемещения по сцене.
Управление камерой – (W,A,S,D), (Q,E), (R,F).
Параметр Анти-Алиасинг. Отвечает за устранение ступенчатости (только в режиме ray tracing). Допустимые значения – 1, 4, 16 и 64.
Hot keys = “G (1), H(4), J(16), K(64)”.
Режим Relighting
Hot key = “O” (начать рендеринг отдельно по источникам). По нажатию клавиши “O” HydraServer начнет расчет изображений отдельно для каждого источника. После того как расчет отдельно по источникам завершен, можно выполнять переосвещение.
На данном этапе для того, чтобы получить финальную картинку вам необходимо использовать внешнюю программу. HydraRelightCmd (см. соответствующую документацию). Программа переосвещения находится в разработке.
|