Hydra renderer doc. Components.

Компоненты

Последнее изменение: 20 июля 2020

Этот раздел объясняет работу основных компонентов Hydra render.

О Hydra renderer

AboutHydraRender

Hydra Renderer — это самостоятельный, физически корректный визуализатор на GPU и плагин для Autodesk 3ds Max, способный создавать реалистичные изображения. Разработкой занимаются российские разработчики. Движок, АПИ и плагин для 3ds Max распространяются бесплатно и с открытым исходным кодом.

Новое в Hydra 2.5

  • Плагин для 3ds max 2021.
  • Анизотропные BRDF: Beckmann и TRGGX.
  • Multiscattering GGX (отражения и преломления).
  • Falloff.
  • Blended box (triplanar mapping).
  • Ambient occlusion (AO, dirt).
  • DOF для IBPT и MMLT (пока ещё есть небольшие артефакты).
  • Кламп для уменьшения шума.
  • Поддержка отключения фильтрации текстур (важно для текстур вращения анизотропии).
  • Исправления багов. Полный список в “c:\[Hydra]\Changes.txt”.

Hydra в Autodesk 3ds Max

Материалы

MaterialsSphere

Материал или шейдер, в системах рендеринга, это математическое моделирование свойств поверхности (цвет, блик и т.д.). Пользователю даётся набор параметров управляющих этими свойствами. Далее описаны материалы имеющиеся в Hydra renderer.

HydraMtl

HydraMtl - материал представляющий самые распространенные свойства поверхностей: рассеянное (диффузное) отражение, направленное (глосси и зеркальное) отражение, с учётом закона Френеля, прозрачность с преломлением и без, просвечивание, самосвечение (эмиссия) и микрорельеф.

Как правило, именно по этим критериям и создаются настройки материалов, где разные свойства взаимодействия света и поверхности вынесены в отдельные группы параметров.

Интерфейс:
HydraMtl_GUI
Общее поведение:
  • Множитель “Multiply” меняет яркость цвета и текстуры.
  • Галка “Tint” тонирует текстуру указанным цветом.
Группы параметров:

Настройки материала расположены в группах описывающих какое-то характерное поведение.

  • Diffuse
  • Reflectivity
  • Transparency
  • Opacity/Special
  • Translucency
  • Emission
  • Relief
Diffuse

Диффузное отражение, это рассеянное отражение света во все стороны от поверхности. Это то, какими мы видим большинство неметаллических предметов, без учёта блика. Мы используем распространённую модель Ламберта.

  • Roughness - для диффузии, это реализация алгоритма Oren-Nayar, который более точно описывает поверхности с сильным микрорельефом, где присутствует самозатенение микро граней поверхности, например такие как ткани, ворс, сыпучие объекты (песок, грунт), асфальт, необработанная древесина и т.д.
Reflectivity

Данная компонента отвечает за зеркальные отражательные свойства, проще говоря блики.

  • Glossiness
  • Этот параметр рассеивает отражения, сводя их к почти диффузному. 1- соответствует полностью зеркальному отражению, 0 - рассеянному. В некоторых рендерах для отражений вместо термина Glossiness используется термин Roughness - шероховатость, это инвертированный glossiness.

    Разные модели отражений (BRDF) по разному ведут себя при малой глянцевости (большой шероховатости) и не всегда совпадают с обычной диффузией.

    ReflGlossiness

    Материалы с различными значениями glossiness (0.25, 0.5, 0.75).

  • Fresnel
  • Френель - это удобный способ моделирования двухслойных материалов. Изначально формулы Френеля были разработаны для стекла. При попадании луча света на стекло, часть энергии отражается, а часть проходит внутрь и преломляется. То, какая часть света проходит внутрь, а какая отражается, зависит от угла падения и определяется формулами Френеля. Однако позже формулы Френеля начали использовать для моделирования материала, состоящего из 2 слоев (как минимум). Первый слой - стекловидная пленка, которая и создает эффект Френеля. Второй слой, как правило, диффузный. Например дерево покрытое лаком, пластик, краска и т.д.

    Заметка:

    Интересно отметить, что используемые в современных рендерах формулы Френеля - это формулы для диэлектриков, в частности стёкол. Для металлов, то есть проводников, существуют другие формулы точно описывающие их поведение. Однако, так совпало, что при задании больших значений IOR в формуле френеля для диэлектриков, они начинают вести себя похожим образом на формулы Френеля для проводников. Fresnel IOR = 50 или 20 далеко от физического смысла, но дает похожий результат на формулы Френеля для проводников, то есть “случайно получается” металл. В Hydra Renderer мы не стали нарушать эту старую добрую традицию, и поддержали ставший “де факто” трюк с большими значениями fresnel IOR используемый в других рендерах.

    На следующем изображении представлено моделирование материала с покрытием с использования формулы Френеля. Первый слой представляет собой прозрачную стекловидную плёнку с определённым IOR френеля, например 1.5. Ниже лежащий слой диффузный. Свет проходит сквозь первый слой под прямыми углами, и всё чаще отражается при скользящих углах, т.к. количество отражающих частиц на пути света возрастает. Попав в диффузный слой, свет окрашивается, переотражается от частиц и выходит в разных направлениях, формируя рассеянное, равномерное отражение.

    Именно вернувшийся цвет из диффузного слоя и слоя отражений мы задаём в настройках материала.

    DiffuseAndReflects_BRDF

    Моделирование материала с покрытием, с использованием формул Френеля.

    В металлах нет стекловидной плёнки, а вместо диффузного слоя, плотный слой частиц, который сразу отражает свет, не допуская его внутрь. Поэтому металлы, как и диффузный слой, отражают свой цвет, но могут иметь разную шероховатость, начиная от зеркала и заканчивая почти диффузным рассеиванием.

  • IOR
  • Коэффициент преломления (IOR - index of refraction) для формул Френеля, о которых говорилось выше. Не смотря на то, что в названии речь про преломления, для отражений они тоже работают. Он влияет на стекловидный слой для неметаллов, о котором говорилось ранее, и для металлов. Для неметаллов подойдут значения 1.5 - 3. Для металлов 20 - 100.

    ReflectionIOR

    Диффузия синего цвета и белые отражения. Reflectivity IOR: слева 1.5, в центре 5 и 25 справа. При увеличении IOR данный двухслойный материал становится всё более металлическим.

  • Anisotropy Новое в 2.5
  • Параметр определяет силу анизотропных, направленных отражений, подобных шлифованному металлу, когда структура шероховатостей имеет оформленное направление. В настоящее время доступно только для Beckmann и TRGGX моделей.

  • Rotation Новое в 2.5
  • Параметр в градусах, определяющий направление анизотропных отражений.

    NoAnisotropy
    Anisotropy

    Без и с анизотропией.

  • BRDF Type (модель отражения)
  • Математическая модель рассеяния отражений.

    • Phong - простая универсальная модель.
    • Torr-Sparr - микрофасетная модель Torrance-Sparrow.
    • Beckmann - анизотропная микрофасетная модель. Новое в 2.5
    • GGX - самая распространённая микрофасетная модель, в настоящее время считающаяся стандартом индустрии. Новое в 2.5
    • TRGGX - анизотропная микрофасетная модель. Новое в 2.5

    Микрофасетные моделирует моделируют более реалистичное поведение отражений. Все микрофасетные модели в исходном виде не учитывают переотражение между микрофасетками, поэтому с уменьшением glossiness (увеличением шероховатости) они теряют энергию и не проходят "тест печи", другими словами они темнеют больше чем нужно.

    FurnaceTest_GGX

    GGX furnace test, “тест печи” показывающий потерю энергии на разных уровнях глоссинесс от 0 до 1.

    Для следующей стадии физ. корректности, нужен учёт переотражения - multiscattering, который выполняется дополнительными вычислениями. При этом сферы в этом тесте будут сливаться с фоном, что будет означать полное отражение энергии. Также при использовании цвета в отражениях, при понижении glossiness шероховатость будет расти и цвет отражений будет немного насыщаться, это физ. корректно и связано с переотражениями в микрофасетках.

    Helmet_GGX-SS
    Helmet_GGX-MS

    GGX singlescattering и multiscattering.

    Обратите внимание что на обоих картинках выше текстура только в слоте glossiness, цвет отражений в настройках одинаковый. Слева цвет потемнел и стал более грязным. Это может выглядеть неплохо для старого водолазного шлема, но второй вариант по настоящему физ. корректный. Также, во втором случае, мы можем сами добавить текстуру грязи для цвета отражений. А вот в первом варианте мы уже никак не уберём эту грязь.

    В настоящее время Hydra renderer поддерживает multiscattering только для GGX модели отражений. Он всегда включён и не нуждается в дополнительной настройке.

    Заметка:

    Вы можете провести этот тест в любой системе визуализации. Расположите сферы с разным уровнем glossiness или roughness на сером фоне, сила отражений должна равняться единице и быть белого цвета, это 100% отражений. Если сферы темнеют, значит мультискаттеринг не поддерживается этой моделью. Если светлеют, значит модель вовсе нарушает закон сохранения энергии.

  • Extrusion
  • Extrusion в Hydra render отвечает за вытеснение диффузии отражением. Hydra поддерживает традиционный способ смешивания диффузного и зеркального отражений применяемый в современных рендерах, где по мере увеличения отражения, оно заменяет собой диффузию.

    Strong - вытесняет диффузию по максимальному значению одного из RGB каналов. Другими словами - по мере роста силы цвета.

    Luminance - вытесняет диффузию по мере роста относительной яркости цвета.

    Заметка:

    Относительная яркость цвета - это цвет представленный в чёрно-белом виде. Это не усреднение каналов, а их относительное представление яркости для зрения человека. Например зелёный ярче, чем красный, а красный ярче чем синий. Поэтому в режиме Luminance зелёный цвет будет сильнее проявлять отражения, чем красный, а красный сильнее чем синий.

    Данный параметр влияет на результат, только если цвет отражений не белый. Вычисления вытеснения производятся в 32 битах, от 0 до 1, где 1 это максимальный цвет (255 в 8 битах).

    На следующем изображении у сфер желтая диффузия. В отражении сферы имеют чёрно-красную чекер-текстуру (“шахматная доска”). Все две модели вытеснения являются физически-корректными, однако они по разному интерпретируют процесс смешивания цветных компонент диффуза и отражения.

    Extrusion

    Слева вытеснение Strong. справа Luminance.

    Слева вытеснение Strong. Красный цвет в RGB это (255, 0, 0) или в нашем случае в 32 битном значении (1, 0, 0). Соответственно для вытеснения берётся максимальное значение одного из каналов. Здесь это значение 1, оно больше других двух значений. Это и будет силой вытеснения. 1 - это максимальная яркость, значит и вытеснение будет максимальным. Поэтому мы видим только отражение, диффузия полностью вытеснена.

    Справа вытеснение по Luminance. Мы используем классическую формулу перевода цвета в яркость по формуле:

    Y = 0.2126 * R + 0.7152 * G + 0.0722 * B

    Подставляем наши цвета (1, 0, 0) в формулу:

    Y = 0.2126 * 1 + 0.7152 * 0 + 0.0722 * 0 = 0.2126. Отражение вытеснило диффузию всего на 0.2126 или примерно 21%, что мы и видим.

    Оба способа имеют право на жизнь, но метод Strong нам кажется более интуитивным, поэтому он выставлен в настройках по умолчанию.

Transparency
Extrusion

Эта группа параметров отвечает за прозрачность материала с учётом преломлений и внутренних переотражений.

  • Transparency color
  • Параметр “Transparency” имитирует мгновенное окрашивание луча, без дальнейшего изменения яркости и цвета при прохождении через объём.

    При наличии прозрачности Френелевские отражения включаются автоматически, так как такое поведение наиболее точно соответствует реальным прозрачным объектам. Отключить френеля в этом случае нельзя.

  • Glossiness
  • То же самое что Glossiness для отражений. Позволяет делать матовые преломляющие материалы.

    TranspGlossiness

    Transparency glossiness: 0.25, 0.5 и 0.75.

    Из-за того что при преломлении луч проходит через поверхность дважды, при тех же значениях glossiness преломления будут размываться намного сильнее отражений.

    Начиная с версии 2.5 для преломлений используется multiscattering GGX. Новое в 2.5

  • Distance multiply и Distance color
  • Эти параметры моделируют постепенное изменение яркости и цвета луча, другими словами окрашивание, по мере прохождения его через объём объекта. Это связано с заполнением объёма разных химических элементов, не видимых глазу, которые поглощают разные длины волн света, пропуская остальные, что и изменяет его цвет, но в целом оставляя при этом объём прозрачным.

    Заметка:

    Поглощённый свет переводится в тепло. Именно поэтому, например, корпус чёрного автомобиля стоящего под солнцем, будет горячее корпуса белого автомобиля. Вообще любой не белый цвет, это результат поглощения одних длин волн света и отражения остальных. Отражённые любым способом волны, попадая в глаз человека и вызывают ощущение цвета. В компьютерной графике мы не заботимся о поглощённых волнах, а оперируем лишь отражёнными, т.е. теми, что мы видим.

    Сила окрашивания зависит от реального масштаба сцены и происходит экспоненциально, по закону Бугера-Ламберта-Бэра. Чем больше параметр “Distance multiply”, тем быстрее свет окрашивается внутри прозрачного объекта. Distance multiply = 0, отключает эту опцию.

    TranspDistColor

    Distance multiply: 10, 25 и 50. Distance color: зелёный, RGB(11, 204, 79).

    Обратите внимание, что “Transparency”, на данном скриншоте белого цвета, с множителем равным 1, для всех 3 объектов, а их цвет обусловлен только постепенным окрашиванием. Чтобы окрашивание темнело, нужно яркость цвета ставить меньше 100%. Для наглядности призмы посчитаны без отражений.

    Заметка:

    В предыдущих версиях этот параметр назывался Fog color. Но мы решили переименовать его в Distance color. Мы считаем это более подходящим термином для этого явления, так как объём остаётся прозрачным и только окрашивается.

    Термин “Fog” (с англ. туман), всё-таки больше подходит для эффекта подповерхностного рассеивания, когда в объёме появляется видимая, диффузная взвесь похожая на туман, способная, при достаточной плотности, сделать материал не прозрачным. Этот эффект пока не реализован в Hydra.

    Оба эти эффекта физически корректны, и имеют схожую природу, связанную с заполнением объёма разных примесей. В первом случае эти примеси не видны и влияют только на изменение яркости и цвета. Во втором видны, из-за более крупных фракций, и имеют собственные отражательные свойства, в большинстве случаев диффузные, что и выглядит как однородный туман.

  • IOR
  • Index Of Refraction - показатель преломления. Влияет только на угол преломления.

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

    TranspIOR

    Вазы с разными показателями преломления: 1.5, 1.75, 2.0. Для наглядности вазы посчитаны без отражений.

    Вот некоторые распростанённые показатели:

    # Материал IOR
    1 Воздух 1.0003 (в компьютерной графике, как правило равно 1)
    2 Лёд 1.31
    3 Вода (20°С) 1.333
    4 Спирт 1.36
    5 Оливковое масло 1.46
    6 Стекло (обычное) 1.48 - 1.53
    7 Стекло (оптическое) 1.48 - 2.18
    8 Изумруд 1.59
    9 Топаз 1.63
    10 Рубин 1.76
    11 Сапфир 1.77
    12 Алмаз 2.417

    Заметка:

    Может показаться странным, что показатель преломления льда ниже воды, а значит и его плотность тоже. Но все мы помним, что лёд не тонет. Это и говорит о его меньшей плотности. Вода при замерзании расширяется, и её плотность уменьшается. Другими словами, данный объём льда весит меньше, чем тот же объём воды.

    Когда вы моделируете стекло, вам нужно настраивать отдельно два параметра - fresnel IOR в отражениях и IOR в преломлениях. Параметр fresnel IOR влияет только на количество отраженного/пропущенного света, но не влияет на изменения угла падения луча при преломлении. Напротив, IOR в разделе transparency влияет только на изменение угла преломления луча, но никак не влияет на количество отраженной или пропущенной энергии. Как правило, оба параметра должны совпадать.

  • Thin (no refract)
  • Указывает на то, что объекты с этим материалом тонкие, не имеющие толщину. Этот параметр имеет смысл включать, если вы настраиваете, например, материал оконного стекла, смоделированного простой плоскостью или какой-то пластик. Если в таком объекте не включить этот параметр, прозрачность будет темнее чем нужно. Это связано с особенностью расчётов преломлений, для тонких объектов они немного отличаются.

Opacity/Special

Группа параметров связанная с непрозрачностью материала.

  • Opacity переводится как “непрозрачность”. Поэтому текстуры здесь работают не как в Transparency, а наоборот - белый цвет в текстуре отвечает за НЕ прозрачность, а черный за прозрачность материала. Ещё он отличается от Transparency более быстрой скоростью просчета, особенно при многократном перекрытии объектов с таким материалом, например в массиве листы или травы.
  • Cast shadows - вкл./выкл. тени объекта.
  • Smooth - включение всех полутонов текстуры в opacity, что немного замедляет просчет. Для текстур с резкими краями, например листьев или травы, этот параметр можно отключить и получить небольшой выигрыш в скорости просчета.
Translucency
Translucency

В настоящий момент translucent - это простая модель просвечиваемого материала, подходящая для реализации преимущественно тонких объектов: тканей, листьев деревьев, бумаги, загрязненных стекол и т.д. Она работает так же как освещение Ламберта, но с обратной стороны. При увеличении транслюцентности диффузия будет уменьшаться вплоть до полного отсутствия. Это моделирование полного прохождения света сквозь объект. Например: Diffuse multiply = 1, Translucency multiply = 0.8, Translucency color = белый. То есть 80% света прошло насквозь, диффузия на рендере уменьшится автоматически до 0.2 (20%).

В Hydra render вы можете сами выбирать цвет и текстуру для транслюценции, для более тонкой настройки просвечивания, но это несколько осложняет её понимание. Потому что яркость цвета транслюцентности влияет на итоговую силу просвечивания - чем темнее цвет, тем меньше просвечивает. И в этом случае параметр Translucency multiply перестаёт показывать пропорции прохождения света, а становится лишь множителем цвета и текстуры.

В связи с этим остаётся полагаться на визуальные пропорции. Для этого нужно отключить заднюю подсветку в материал эдиторе, выставить цвет или текстуру в диффузию и транслюцентность и менять параметр Translucency multiply, наблюдая изменение пропорций просвечивания, для поиска нужного варианта.

MatEditorBackLightOff

Так же не следует ожидать полностью физически корректной симуляции подповерхностного рассеивания (SSS) для объемных тел.

Emission

Emission используется для самосвечения объектов. Например, экран телевизора или плоскость с панорамой города за окном. Стоит учесть, что светящиеся меши сэмплятся в Hydra только при помощи неявной стратегии сэмплирования. Это означает, такой источник учитывается только тогда, когда отраженный луч попал в него случайно. Такая модель хорошо работает, если объект имеет крупный размер или эмиссия не слишком яркая. Поэтому если Вам нужно смоделировать яркий источник света маленького размера, Emission для этого использовать не рекомендуется, лучше создать источник света явно или воспользоваться материалом HydraMtlLight. Свет от Emission всегда прибавляется к цвету материала. Никакой модели вытеснения, как в случае с отражениями и диффузией здесь нет.

  • Cast GI
  • Данная опция включает и отключает диффузное освещение от этого материала, то есть свечение этого материала на другие объекты, как источник света. В основном эта опция используется для моделирования окружения за окном. В этом случае за окном ставится плоскость, имитирующая окружение, галка отключается, а освещение диффузных поверхностей настраивается при помощи “Небесных Порталов” (Sky Portals) или других источников с отключенной видимостью. Так образом, за окном мы увидим какой-то пейзаж, он будет влиять на отражения, но светить на поверхности будет другой, реальный источник света.

    Emission_noCastGI

    За окнами расположена плоскость с фотографией улицы в слоте Emission. Однако, она не освещает комнату. Вместо этого мягкий свет в комнате настроен при помощи прямоугольных источников света, для ускорения просчета.

    В версии рендера 2.3b появился материал HydraMtlLight, который позволяет делать свет от таких плоскостей с фотографией с высокой скоростью просчета, как у обычного источника.

Relief

Данная вкладка служит для настройки микрорельефа поверхности на основе текстур или по другому говоря — карт, содержащих информацию о нормалях (Normal map) и высот (Height map, обычный бамп). Этот рельеф лишь имитация, поэтому подходит для не слишком сильного рельефа.

Relief

Слева реальная, выдавленная по текстуре высот геометрия. Справа плоскость с текстурой нормалей. В правом нижнем углу показаны использованные текстуры нормалей и высот.

При использовании текстуры нормалей, её нужно предварительно положить в стандартную карту 3ds Max - Normal Bump. Текстуру высот можно использовать напрямую. Совместное использование текстур нормалей и высот пока не поддерживается.

Параметры:

  • Height - задает силу выдавливания.
  • Smooth lvl. - задаёт размытие рельефа, с сохранением резких краёв, для устранения лишней мелкой детализации.
  • Invert height - инвертирует текстуру нормалей и высот. Для инвертирования каналов в текстуре нормалей используйте стандартные флажки внутри карты Normal Bump.
  • Parallax (чекбокс) - включает алгоритм “Parallax Occlusion Mapping” (POM) создающий иллюзию реальной геометрии. Работает только с текстурами высот.
  • Parallax - задает глубину продавливания поверхности внутрь для POM.

Ограничение:

Параллакс временно недоступен.

Так же, в большинстве случаев для текстур нормалей нужно отключать гамма коррекцию. Для этого, при загрузке текстуры, нужно выставить Gamma Override = 1.0.

NormalmapGamma1

HydraMtlLight

HydraMtlLight - материал превращающий объект в источник света. Отличается от простой эмиссии тем, что семплится явной стратегией, как настоящий источник света, поэтому быстрее рендерится и поддерживает IBPT и MMLT. Идеально подходит для ярких источников света необычной формы или с текстурой. Например экран телевизора, плафон лампы с текстурой, нить накаливания, плоскость с текстурой улицы за окном и т.д.

Emission_cornellBox
HydraMtlLight

Слева белая спираль с материалом HydraMtl с эмиссией, справа - с HydraMtlLight, за одно и тоже время.

HydraMtlCatcher

Этот материал нужен для встраивания объекта в фон. Он прозрачен и принимает тень. При использовании в энвайронменте карты HydraBack/Envir, на кетчер проецируется текстура из слота Background и другие, видимые объекты, начинают получать корректные отражения как будто от фона.

CatcherAndBackEnvir

Пример встраивания объектов: чайник, тор, сфера и рюмка, в фон.

В данном примере, на столе расположена плоскость с материалом HydraMtlCatcher. В энвайронменте используется карта HydraBack/Envir, в фоне которого используется картинка со столом, рюмками на ней, и стульями. В энвайронменте хдр панорама с похожим сюжетом, которая освещает 3д объекты и формирует на них отражения. Хдр панорама немного затонирована в желтоватый цвет, чтобы освещение совпадало по цветовой гамме с фоном. Плоскость кэтчера получает тени от 3д объектов и является источником для отражений в них.

Double sided

Материал не поддерживается. Если вы хотите создать просвечивающий материал для поверхности без толщины, типа штор или листьев деревьев, используйте настройку Translucent в HydraMtl.

Материалы сторонних рендеров

Материалы сторонних рендеров не поддерживаются, но их можно конвертировать в материал гидры, используя скрипт конвертер находящийся в свитке Tools. Даже если какие-то материалы работают, всё равно рекомендуется конвертировать их, для большей стабильности и предсказуемости работы.

Текстуры

Hydra Renderer поддерживает все основные битмап и 2д процедурные текстуры, запекая их в обычные текстуры. В том числе работают специфические color correction и composite. Процедурные 3д текстуры пока не поддерживаются.

Ограничение:

На данный момент мапы HydraAO, HydraBlendedBox а также Falloff имеют внутреннее процедурное представление в движке, и их пока нельзя вкладывать друг в друга.

Falloff Новое в 2.5

Hydra render возобновляет поддержку стандартного фаллоффа 3ds max, но в связи с новыми архитектурными решениями ядра, разработка фаллоффа только начата и пока работает только смена цвета. Falloff type временно используется всегда по Френелю с IOR равным 1.5.

Так же фаллофф можно использовать в качестве маски в стандартном бленд материале, для смешивания двух материалов, например для создания дополнительного покрытия лаком (coating). Для этого базовый материал остаётся как есть, а материал покрытия должен быть чистым зеркалом, с выключенным Френелем. В этом случае он “ляжет” поверх базового материала по Френелю, что будет физ.корректно.

Этот подход является более гибким, чем вынос параметра Coating в основной материал. В этом случае, материал для покрытия вы можете сделать любым. Это будет полноценный материал в котором может быть свой рельеф (бамп), свои текстуры для отражений и глосси и т.д. Дублировать всё это в основной материал нам представляется не целесообразно.

Для создания более сложных материалов может понадобиться вкладывать бленд в бленд. Это не удобно, поэтому в дальнейшем мы планируем создать слоёный материал, представляющий собой расширенный бленд материал на несколько слоёв. Это позволит создавать многослойные материалы без необходимости вкладывать бленд в бленд.

No_Coat
Coat

Без покрытия и с покрытием.

Обратите внимание, в варианте без покрытия тоже используются отражения, просто они в этом примере не так явно видны.

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

No_Sheen-Fuzz
Sheen-Fuzz

Имитация ворсинок на тканях.

HydraAO Новое в 2.5

HydraAO

Карта AO (ambient occlusion) не является каким-то физическим явлением, но позволяет имитировать разные эффекты, связанные с равномерным затеннением в углах моделей. Например имитация глобального освещения, грязь, подчёркивания контактных теней и подобных.

HydraAO_GUI

  • Occluded color - цвет перекрывающихся, вогнутых областей.
  • Unoccluded color - цвет не перекрывающихся, выпуклых областей.
  • Distance - дистанция перекрытия.
  • Calculate for - в текущей версии реализован только режим Concave (вогнутый). В дальнейшем планируется добавить режим Convex (выпуклый), позволяющий создавать этот эффект на выпуклых участках, например для создания потёртостей на рёбрах объектов.
  • Falloff - плавность перехода.
  • Only for this object (в разработке) - опция для отключения приёма окклюжена от других объектов. Нужен для эффектов не сильно зависящих от окружающих объектов. Например для ржавчины на металлическом объекте, или для анимации, чтобы при перемещении объекта он не принимал окклюзию, если это не нужно.

Также как и falloff, вы можете использовать её в бленд материале.

Ограничение:

HydraAO пока не поддерживает использование текстур.

HydraBack/Envir

HydraBackEnvir_GUI

Текстура использующаяся в энвайронменте и позволяющая загружать разные текстуры в окружение (environment) и задний фон (background). При этом текстура в окружении работает также как и раньше, отражается и является неявным источником света, а текстура на заднем фоне видна только первичным лучам и нигде не отражается.

При использовании материала HydraMtlCatcher, текстура из фона проецируется на кетчер и позволяет другим материалам получать корректные отражения как будто от фона.

HydraBlendedBox Новое в 2.5

HydraBlendedBox_GUI

Эта карта представляет собой кубическую проекцию текстуры на объект, с плавными переходами между гранями куба, для устранения швов кубической развёртки.

  • Blend size - величина плавности перехода.
  • Map scale - размер текстуры в мировых координатах.
  • Number of projections - количество проекций текстур. В настоящее время всегда равно 1.
  • Texture - слот для тектуры.
CubeMap
BlendedBox

Кубическая развёртка и блендед бокс.

Ограничение:

  • Текстура располагается в мировых координатах, поэтому она не совпадёт с простой кубической развёрткой, а также при движении объекта текстура останется на месте.
  • Временно не поддерживается для рельефа.

Источники света

Lights

Источники света в 3д графике, это специальные объекты необходимые для освещения сцены. Как правило они в упрощённом виде имитируют работу реальных осветительных приборов. Но в большинстве случаев этого оказывается достаточно для убедительного и реалистичного представления.

Заметка:

Обратите внимание, режимы яркости канделы и люмены рассчитываются на основе реальных размеров объектов, так как связаны с площадью источников света. Поэтому если вам важно использовать реальные характеристики яркостей источников света, канделы или люмены, то сцена должна быть настроена в соответствующих системных единицах, например сантиметрах, и объкты должны иметь правдоподобные размеры.

Стандартные

Рендер поддерживает основные параметры всех стандартных источников света.

Для создания мягких теней от направленного (direct) источника вам необходимо выбрать ‘Area Shadows’ в разделе ‘Shadows’ и регулировать мягкость при помощи параметров ‘Length’ и ‘Width’. Рендер использует среднее арифметическое от этих параметров.

Фотометрики

Рендер поддерживает основные параметры фотометрических источников света всех типов: Point, Rectangle, Disk, Sphere и Cylinder. А также все световые распределения: диффузное, прожекторное и WEB (ies формата).

Заметка:

Начиная с Hydra v2.5 яркость Hydra render источников вычисляется основываясь на стандартной физической формуле перевода кандел в экранную яркость. За экранную яркость берётся энергетическая яркость (лучистость - англ. Radiance), измеряемая в Вт/(ср*m2). В целях унифицирования разных источников сцета, фотометрики так же будут вычисляться по этой формуле. В связи с этим яркость фотометриков на рендере стала темнее, чем во вьюпорте. Видимо 3ds Max вычисляет яркость по другой формуле.

Hydra light

Собственный источник света. Поддерживает типы: Point, Rectangle, Disk, Sphere, Cylinder и Sky portal. Световое распределение: диффузное, прожекторное и WEB (IES формата).

Совет:

Sky portal рекомендуется для освещения интерьеров по классической схеме. В энвайронмент помещается хдр панорама, за окно ставится портал. Отключаем видимость галкой Visible in render, чтобы в альфе канале он не перекрыл фон, для возможности его замены в композинговой программе, например в Фотошопе.

Заметка:

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

Но при использовании IBPT и MMLT вам всё равно понадобятся порталы, т.к. в этих алгоритмах свет должен идти от источника. При использовании этих алгоритмов расклад по скорости/качеству может измениться.

Ограничение:

В текущей реализации Hydra light не светит во вьюпорте, но мы надеемся что нам удастся это починить. 🙂

Освещение на основе изображений (Image-based lighting)

Для освещения сцены текстурой, например HDR панорамой, достаточно поместить её в слот Environment map (главная панель Rendering -> Environment, или цифра 8 на клавиатуре).

Яркость можно регулировать несколькими способами:

  1. Перетащить текстуру из слота энвайронмента в слот материал эдитора. Далее в текстуре, в свитке Output менять параметр Output Amount или RGB Level. Также там можно настроить кривые, если это нужно.
  2. В настройках рендера, во вкладке Engine, в свитке Override параметром Environment multiplier.
  3. Global lighting Level в настройках энвайронмента. Данный множитель использовать не рекомендуется, потому что он влияет на все источники света, что может привести к путанице.

Так же может понадобится повернуть панораму, чтобы подобрать направление освещения. Это можно сделать только в настройках текстуры, используя первый способ, поэтому мы рекомендуем его к использованию, как самому гибкому.

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

Освещать таким образом можно всё что угодно - экстерьеры и интерьеры, например текстурой неба или просто предметы, например текстурами комнаты или со студийными источниками.

IBL_01
IBL_02
IBL_03

Примеры освещения текстурой. Справа в нижнем углу показана используемая хдр текстура.

HydraSunSky

Источник света моделирующий солнце и небо. В настоящее время используется всепогодная модель неба Perez.

  • Soft shadow - рассеивание тени.
  • Position - позиция солнца на небе. Влияет на цвет.
  • Irradiation area - область света солнца. Также ограничивает бросание лучей от солнца в режимах двунаправленной трассировки - IBPT и MMLT, что положительно сказывается на производительности, т.к. лучи летят только в указанной области.
  • Align to sky portals - подгоняет область света под размеры Hydra render источников. Удобно подгонять под порталы в окнах, чтобы в режимах IBPT и MMLT лучи летели только в окна.
  • Override environment - Заменяет текстуру в энвайронменте на модель неба.
  • Haze - дымка.

Источники света сторонних рендеров

Источники света сторонних рендеров, кроме фотометриков, напрямую не поддерживаются, но есть возможность конвертирования в совместимые с гидрой источники. Скрипт конвертер источников света рендеров V-Ray и Corona находится в свитке Tools.

Настройки рендера

В настройки рендера можно зайти выбрав в главном меню Rendering -> Render setup, или нажав F10 на клавиатуре. Далее нужно выбрать “Hydra renderer” в списке доступных движков визуализации, для дальнейшей работы с ним.

RenderChoice

Rendering quality

Это настройка качества или правильнее будет сказать точности изображения. Чем выше настройки, тем точнее результат и как следствие меньше шума. В данный момент движок не поддерживает адаптивный сэмплинг, поэтому количество семплов одинаковое для всего изображения.

RenderingQuality_GUI

Позиции ползунка: "Draft", Low", "Medium", "High" и "Ultra" лишь условно соответствуют качеству, потому что для каждой сцены количество сэмплов для финального качества может быть разным. Как правило чем сложнее сцена, тем больше нужно сэмплов.

  • Inf. - бесконечное количество семплов/лучей.
  • Samples per pixel - количество семплов/лучей на 1 пиксель.
  • Limit render time (min) - ограничение времени рендера в минутах. Рендер может закончиться раньше указанного времени, если будет просчитано указанное количество семплов из предыдущего пункта.
  • Совет:

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

  • Ray bounce - количество переотражений или путей лучей. Подробнее:
  • RayBounce-0

    Ray bounce 0 - нет путей, всё чёрное.

    RayBounce-1

    Ray bounce 1 - луч попадает в объект и не переотражается, поэтому будут видны только самосветящиеся объекты, источники света и энвайронмент.

    RayBounce-2

    Ray bounce 2 - луч попадает в объект и переотражается. Появился свет от источников, тени, отражения. Преломления в шаре нет, т.к. луч проходит внутрь, но попадает в заднюю стенку.

    RayBounce-3

    Ray bounce 3 - добавилось преломление энвайронмента. Путь: луч попадает в поверхность шара, проходит внутрь и попадает в заднюю стенку, выходит и попадает в энвайронмент и пол. Но значение энвайронмента в этот момент известно, поэтому мы его видим в преломлении, а значение пола нет, ему надо ещё один баунс, чтобы получить яркость от любого источника.

    RayBounce-4

    Ray bounce 4 - добавился пол. Путь: 1 - поверхность, 2 - задняя стенка, 3 - энвайронмент и пол, - 4 от пола в источник. Для появления каустики понадобилось увеличить Diff. bounce до 1.

    Для стёкол можно рассчитать простую формулу Ray bounce = 2 + кол-во стенок у преломляющего объекта. Для плафона с толщиной стенок нужно ставить 2 + 4 преломления для стенок = 6. Для 2х перекрывающихся плафонов, 2 + 4 + 4 = 8.

  • Diff. bounce - количество диффузных переотражений. Чем ярче источники света, тем заметнее их влияние на следующих этапах переотражения, но разница эта не большая, а при увеличении этого параметра время рендера будет увеличиваться, поэтому рекомендуется какое-то компромиссное решение.

Engine

Engine_GUI

В Hydra Renderer используются следующие алгоритмы для вычислений всех световых взаимодействий (Global illumination):

  • Path Tracing - трассировка путей. Рекомендуется использовать в сценах с простым равномерным вторичным освещением, когда сцена освещена в основном источником света или энвайронментом, например интерьеры с большим окном или дневные экстерьеры. В настоящее время единственный из всех перечисленных, который поддерживает выпрямление перспективных искажений камеры Tilt correction.
  • Light Tracing - трассировка путей от источника света. Хорошо справляется со сложным освещением, например источник света в плафоне, где большая часть света закрыта им. Так же, пожалуй это самая лучшая стратегия для каустики. Но этот метод плохо сэмплит отражения, т.к. крайне мала вероятность попадания лучей в камеру, и не сэмплит самосветящиеся объекты, поэтому в чистом виде практически мало пригоден для комплексных сцен. Это переходное звено к IBPT и выкладывается для тестов.
  • IBPT (Instant bidirectional path tracing) - смесь PT и Light Tracing. Берет лучшее из двух стратегий. Хорошо справляется со сложным освещением, где доминирует вторичное освещение или каустика, когда источники закрыты плафонами, шторами и т.д.
  • MMLT (Multiplexed metropolis light transport) - один из самых сложных и эффективных адаптивных алгоритмов, сочетающий достоинства всех вышеперечисленных. Имеет преимущество только в сценах со сложным освещением и каустикой (лампы в плафонах, окна закрытые шторами и т.д.). В некоторых ситуациях справляется лучше, в некоторых хуже. Здесь всё зависит от конкретной сцены.

Дополнительные настройки:

  • Caustics - включает прохождение света от источника, через материалы с ненулевым параметром Transparency.
  • Fast background - режим ускоряющий просчёт в сценах с большими участками без геометрии, например автомобиль или здание на фоне энвайронмента. В сложной сцене вы можете долго не увидеть первый пасс, т.к. обходятся все пиксели изображения с 256 семплами на пиксель. В обычном режиме за пасс обходятся не все пиксели и с меньшим кол-вом семплов, поэтому результат виден быстрее. В данном режиме не работает QMC.
  • Auto texture resize - автоматическое уменьшение разрешения текстур, в зависимости от их расположения в сцене и разрешения рендера, позволяющее сильно сэкономить память.

Если консоль рендера не выдает предупреждений о нехватке памяти и на рендере присутствуют все текстуры, то опцию “Auto texture resize” можно не включать, т.к. этот алгоритм каждый рендер будет заново проверять сцену и масштабировать текстуры, что не очень быстро.

Camera

Camera_GUI

  • Enable DOF - включение размытия по глубине. Используется честное семплирование на сферической линзе.
  • Defocus - параметр задающий силу размытия. Камера всегда сфокусирована на своём target и имеет самое резкое изображение в этом месте.
  • В настоящее время DOF в режимах Light tracing, IBPT и MMLT имеет небольшие артефакты в виде ореолов вокруг объектов.

  • Motion blur. Размытие движения пока не поддерживается на уровне движка, но вы можете это сделать используя эту опцию в стандартной камере, когда картинка складывается из нескольких, просчитанных подряд под-кадров. Количество семплов на пиксель можно уменьшить пропорционально количеству подкадров. В сумме они дадут примерно тоже качество, как для одного кадра с большим количеством семплов.

    MotionBlur_GUI

Device list

DeviceList_GUI

Список доступных устройств для рендера.

  • Remember device choice. После выбора устройств, нажмите эту галку. Ваш выбор сохранится в файл и оттуда будет браться для рендера.

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

Path tracing

PathTracing_GUI

  • QMC lights - сэмплинг источников света и теней методом квази монте карло.
  • QMC materials - сэмплинг материалов методом квази монте карло.
  • Методы QMC это путь в сторону де рандомизации. Они имеют более равномерное распределение в пространстве, чем обычные случайные числа (рандомные числа), ускоряя просчёт. Но из-за этого местами может проявляться некоторая периодичность в виде лесенок, шашечек и других визуально нежелательных структур. Их появление предсказать очень сложно, т.к. оно зависит от большого числа переменных: ракурс, источники света, материалы и их взаимное расположение в пространстве и так далее. Как правило, если во время просчёта эти структуры слишком медленно пропадают, то скорее всего они не исчезнут за приемлемое время и эту настройку лучше отключить для этого кадра. Также, если вы рендерите очень долго, а шум в некоторых местах всё равно остался, попробуйте отключить эти опции.

  • Env. clamp - максимальное значение яркости энвайронмента. Временно недоступно.
  • BSDF clamp Новое в 2.5 - максимальное значения яркости отражённых лучей от материалов. Параметр был временно недоступен и возвращен в несколько переработанном виде.
  • Оба вида клампа используются для борьбы с ярким точечным шумом. Чем меньше значение, тем меньше точечного шума.

MMLT

MMLT (Multiplexed metropolis light transport) - алгоритм адаптивного просчёта вторичного освещения. Имеет смысл использовать в сценах со сложным лайт транспортом: большим количеством вторичного освещения, глосси отражениями и каустикой.

Scene01_PT_30min
Scene01_MMLT_30min

Слева Path tracing, справа MMLT за одно и тоже время.

Достоинством метода является возможность посчитать освещение, которое другие методы будут считать намного дольше. Недостатком метода является сложный прогноз качества, из-за возникающих в некоторых сценах артефактов, в виде пятен сэмплов.

MMLT_GUI

  • Estimate time - примерное время в часах, которое бы понадобилось алгоритму Path tracing, для финального качества на Nvidia GTX 1060.
  • MMLT имеет несколько настроек внутри алгоритма, но все они сложны для понимания и не всегда очевидно, что именно настраивать. Всвязи с этим мы максимально упростили настройку, сведя всё к примерной оценке времени рендера в часах.

  • Enable median filter - включение медианного фильтра только для вторичных лучей MMLT, для уменьшения его шума.

Для более подробного обзора MMLT и сравнения с другими алгоритмами, можете посетить страничку об этом на нашем сайте.

Override

  • Gray materials - заменяет во время рендера все материалы, кроме имеющих не нулевое Transparency, например стёкла, на серый материал с цветом RGB(128, 128, 128), для оценки и настройки освещения.
  • Environment Multiplier - изменяет яркость энвайронмента.

Post processing

Пост процесс это 2д обработка изображения после рендеринга.

Denoising

В настоящее время деноизинг не доступен и находится на переработке.

Common corrections

PP_Common_GUI

  • Exposure - яркость изображения, экспозиция.
  • Compress - сжатие высокого динамического диапазона (hdr) в низкий динамический диапазон (ldr), для полного охвата цветов монитором. Моделируются некоторые свойства человеческого зрения.
  • Contrast - увеличение разницы между яркими и тёмными тонами изображения.
  • Saturation - изменение насыщенности цвета.
  • White balance - автоматическая коррекция тональности изображения. Моделируются биологические механизмы цветопостоянства, по стандарту CIECAM02. Имеется возможность ручного выбора точки белого во фреймбуфере. Чёрный цвет включает автоматическое определение точки белого, что не всегда корректно работает.
  • Uniform contrast - нелинейное перераспределение яркости, для достижения равномерного контраста изображения. В изображениях с сильными разрывами в яркости, может приводить к заметным искажениям.
  • UniformContrast

    Слева оригинал, справа с фильтром uniform contrast

  • Normalize - линейное растягивание диапазона яркостей с отсечкой точечных выбросов, для увеличения контраста изображения. В большинстве случаев рекомендуется ставить на максимум, чтобы заполнить весь LDR диапазон.
  • Не рекомендуется для анимации или если нужно точно сравнить несколько кадров. Из-за адаптивной природы алгоритма кадры могут иметь немного разную яркость.

  • Sharpness - увеличение резкости изображения.

Optics effects

OpticsEffects_GUI

  • Chromatic aberration - моделирование аберраций оптической системы, выраженной в разном угле отклонения волн света разной длины.
  • Vignette - моделирование явления частичного ограничения (затемнения) наклонных пучков света оправой или диафрагмами оптической системы. Выражается в затемнении углов изображения.
  • Заметка:

    В реальной фотографии с эффектами хроматической аберрацией (Chromatic aberration) и виньетирования (Vignette) как правило борются, т.к. они по праву считаются побочными эффектами несовершенной конструкции оптики и фотоэлементов. Но в мире стерильных синтетических изображений (рендерах) этот эффект придает некоторое сходство с реальной фотографией, что несколько компенсирует недостаток реалистичности, если таковой имеется на изображении. Также они могут использоваться как художественный приём.

  • Diffraction stars. Настройки дифракционных звёзд.
  • Size - размер звезды. Пропорционален разрешению рендера, поэтому настроив для одного разрешения, размер пропорционально изменится и для другого.
  • Num. rays - количество лучей звезды.
  • Rotat. rays - угол поворота звезды.
  • Rand. angle - случайные отклонения лучей.
  • Spray ray - разброс/распыление лучей.

Дифракционные звёзды появляются только на областях с большой яркостью.

Вы также можете использовать любую стороннюю программу для реализации более сложного пост процесса, сохраняя изображение в форматы hdr, tiff или exr, указав в настройках формата Non clamped range (32 bit per channel), чтобы сохранить оригинальное HDR изображение.

Tools

Набор дополнительных инструментов и скриптов.

  • Convert to Hydra - скрипт конвертирующий материалы и источники света из других рендеров в Гидру.
  • Convert from Hydra - скрипт конвертирующий материалы и источники света Гидры в другие рендеры.
  • ScriptConvert_GUI

  • Override param. all HydraMtl - скрипт изменяющий некоторые параметры всех материалов HydraMtl в сцене.

Debug

Этот свиток содержит некоторые настройки нужные для разработки.

  • Log to file - сохраняет сообщения плагина и рендера в “С:\[Hydra]\logs\”.
  • Save image (initial interval) - сохраняет рендер в “С:\[Hydra]\rendered_images\”, начиная с указанного времени и далее удваивая время. Например: 5, 10, 20, 40 и т.д.

Render elements

RenderElements_GUI

Рендер элементы - это некоторые дополнительные изображения, пассы, рассчитывающиеся во время рендера, которые могут помочь в дополнительной обработке визуализированного изображения, при использовании специализированного программного обеспечения предназначенного для этого.

  • Alpha (add 4 channel) - добавляет 4 канал в изображение рендера, в котором непрозрачные объекты белого цвета, фон черного. Полупрозрачные объекты имеют серый цвет пропорциональный их прозрачности.

Остальные рендер элементы сохраняются только при включенной опции сохранения изображения на главной вкладке настроек рендера.

SaveFile_GUI

Ход разработки

Появится в следующем релизе 2.6

  • ...
  • ...

В разработке

  • Переход на Vulkan API, для поддержка аппаратного рейтрейсинга в NVidia RTX.
  • Исправление багов.

В планах

  • Вложенность процедурных текстур (falloff, blend box, AO) друг в друга.
  • Денойзер.
  • Active shade.
  • Region render.
  • И другое.