Подписка на RSS

Фотоны в трехмерной графике

В трехмерной графике, а именно в Maya и 3d Max существует такое понятие, как карты фотонов. Расскажу немного о них. Основными особенностями карт фотонов является, то что они требуются при продуцировании глобального освещения и каустики (но не требуются для метода окончательной сборки (Final Gather)). Они представляют в трехмерном виде распределение световой энергии, определяя точки отражения фотонов.

Концептуально фотоны похожи на карты теней. Создаются на стадии трассировки фотонов. Карты фотонов используются шейдерами (shader) поверхностей, участвующих в расчете глобального освещения и каустики (полученные результаты добавляются к расчетам прямого (локального) освещения).

Карты фотонов глобального освещения и каустики

Зеркально отраженные или преломленные фотоны заносятся в карту каустики, все прочие попадают в карту глобального освещения. Если параметр Shinyness (Глянцевитость) шейдера фотонов увеличивается, зеркальный блик становится меньше, и вероятность зеркального отражения увеличивается. В этом случае происходит миграция фотонов из карты глобального освещения в карту каустики и плотность карты глобального освещения уменьшается. Такое рассуждение применимо и к параметру Translucence (Светопроницаемость) но в обратном порядке. При увеличении Translucence фотоны мигрируют из карты каустики в карту глобального освещения.

Если для расчета глобального освещения недостаточно фотонов, mental ray для Maya выдает соответствующее сообщение. Если в сцене очень много блестящих предметов, а каустика отключена, значительная часть освещения не будет показана на итоговой картинке.

В этом случае надо:
— включить каустику;
— убедиться, что осветитель (осветители) эмитируют каустические фотоны.

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

Трассировка фотонов

Трассировка фотонов создает карту фотонов (см. выше), которая используется рендерером mental ray для Maya для расчета глобального освещения и каустики.

Фотоны работают следующим образом:

— источники света могут эмитировать фотоны (пакеты энергии). О включении эмиссии фотонов конкретным осветителем см. ниже;
— фотоны отражаются от поверхностей, пока не будет достигнута максимальная глубина фотонов (Max Photon Depth);
— фотоны могут отражаться от поверхности;
— фотоны могут изменять направление движения (преломляться) проходя через прозрачную поверхность;
— всякий раз при встрече с поверхностью значение энергии фотона записывается в карту (подробности см. ниже).

Порядок включения трассировки фотонов описан ниже.

Условия запоминания фотонов

Фотоны заносятся в карту только при соблюдении следующих условий:

— шейдер поверхности должен иметь диффузный компонент;
— все материалы Maya (Lambert, Blinn и т.д.) имеют компонент диффузии, если атрибут Diffuse не выставлен в 0;
— некоторые шейдеры mental ray для Maya не запоминают фотоны;
— фотон отражался от поверхности хотя бы один раз;
— первое столкновение фотона с поверхностью не фиксируется, так как порождает только прямое освещение;
— значение Max Photon Depth, определяющее максимальное число отражений фотона не превышено;
— источник света не является направленным (directional light) (используйте только точечные источники (point light) или прожекторы (spot light));
— фотоны должны иметь направление движения и координаты точки испускания. Направленный источник света имеет направление, но не имеет координат.

Более подробно ограничения на трассировку фотонов описаны ниже.

Дополнительная информация о трассировке фотонов

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

Вероятность (P) рассчитывается следующим образом:

P3 = P(transmission)
= INTENSITY(transparency)
P(diffuse transmission)
= translucence
P(specular transmission)
= 1 — translucence
P2 = P(specular reflection)
= reflectivity * INTENSITY(specularColor)
P1 = P(diffuse reflection)
= diffuse * INTENSITY(color) * (1 — INTENSITY(transparency))
P0 = P(absorption)
= absorbs * (2.0 — P1 — P2 — P3)

Величина коэффициента P определяет, какая часть фотонов пропускается (с преломлением), отражается или поглощается поверхностью.

Обратите внимание, что фотоны запоминаются в карту только в случае наличия диффузной составляющей, поэтому, если P1 равно нулю, то фотон не записывается в карту. Чтобы улучшить производительность, запретите Globillum/Caustic Receiver.

Светопроницаемость определяется частью прошедших сквозь поверхность (с преломлением) фотонов. Поглощение зависит от цвета фотона и свойств Diffuse и Reflectivity материала. Вероятность зеркального отражения P2 не равна нулю при ненулевых значениях Shinyness (изотропные материалы) или spreadX и spreadY (анизотропные материалы).

Примеры

Зеленое диффузное отражение и красная диффузная прозрачность :

absorbs on
diffuse 1.5
color 0.0 1.0 0.0
transparency 1.0 0.0 0.0
translucence 1.0

1/6 diffuse transmission
1/6 diffuse reflection
2/3 absorption

Полное зеркальное преломление (Каустика) :

refractions on
refractiveIndex 1.5
transparency 0.9 0.9 1.0

1/1 specular transmission

Зеленое диффузное отражение и голубое зеркальное изотропное отражение :

reflectivity 0.8
specularColor 0.7 0.7 1.0
whiteness 1.0 1.0 1.0
shinyness 20.0
diffuse 0.2
color 0.4 1.0 0.4

3/19 diffuse reflection
16/19 specular reflection

Ваш отзыв


Video Tutorials