Управление цветом и интенсивностью тени в Blender

Примечание от переводчика

Я счел оправданным исключение из статьи некоторого количества абзацев, относящихся к тому времени, когда функция настройки цвета тени была отдельным расширением, а не частью дистрибутива Blender. Желающие могут ознакомиться с пропущенными фрагментами в оригинале статьи.

Введение

Как правило, мои разработки для Blender являются прямым следствием проблем, с которыми я сталкиваюсь при создании очередной работы. В процессе работы над BlenderPeople появились animation baking, Floor Constraint, Visual Keying и улучшения Python API. Благодаря The Beast родились Sequencer и улучшения метода выбора в Action Editor.

Управление тенями явилось ещй одной проблемой, с которой я столкнулся при создании The Beast. Время поджимало и я не имел возможности покопаться в исходниках во время работы над этим роликом. Чаще всего мне удавалось подобрать правильное положение и интенсивность источников света только после того, как моё внимание привлекали излишне затенённые области. Контроль баланса настроек ламп и материалов занятие достаточно сложное, так что под конец я совсем не хотел добавлять новые лампы в сцену (стандартный метод для корректировки перезатененения) или менять их настройки.

Гораздо более простым и оптимальным для итогового результата способом была бы возможность регулировки интенсивности тени, создаваемой лампой-нарушителем. И в Blender, начиная с версии 2.48, встроена функция настройки RGB цвета тени.

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

Техническая часть

На следующем изображении приведен 5*3 массив сфер, расположенных между направленными источниками света (Spot Lamp), со включенными тенями, и текстурированной плоскостью. Для верхнего ряда используется затенение по умолчанию (RGB 0, 0, 0). Для среднего ряда настроена половинная интенсивность тени (RGB 0.5, 0.5, 0.5). Цвет тени нижнего ряда — ярко-желтый (RGB 1, 1, 0).

Колонки, слева направо:

  • две затеняющие лампы с буферизованными тенями, красного и синего цвета, смещенные и пересекающиеся
  • одна затеняющая лампа с буферизованными тенями, белого цвета. Для сферы выставлено значение Alpha 0.5, включен режим zTransp.
  • одна затеняющая лампа с буферизованными тенями, белого цвета. Для сферы включен режим OnlyCast
  • одна затеняющая лампа с трассированными тенями, белого цвета. Для сферы выставлено значение Alpha 0.5, включен режим Ray Transp.
  • одна затеняющая лампа, нерегулярный буффер (irregular buffer), белого цвета. Для сферы выставлено значение Alpha 0.3, ZTrans 0.3

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

Демонстрация цветных теней в Blender на примере сфер

Артистическая часть

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

Довольно часто, в моих (так же, как и в чужих) работах, получение желаемого результата требует изменения плотности тени. Затенение выглядит отлично, общая интенсивность ламп превосходна, но тени выглядят слишком тёмными. Добавление ламп типа Hemi, сферических (Sphere) ламп или окружающего освещения (AO) — все те действия, которые служат для исправления этого дефекта — изменяют общий баланс освещения/затенения в худшую сторону.

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

Рассмотрим решение проблемы с неудовлетворительно темной тенью при отличном световом балансе на примере трех изображений, созданных для The Beast.

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

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

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

Цветные тени в Blender на примере The Beast

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

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

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

Цветные тени в Blender на примере The Beast

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

При применении этой техники, не меняется насыщенность никаких теней сцены, кроме тени настраиваемого источника. Области, на которые не падает свет от лампы с цветной тенью, никак не меняются. По сути, применение обычного Spot-источника дает эффект локального применения AO.

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

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

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

Цветные тени в Blender на примере The Beast

Цветные тени в Blender на примере The Beast

Цветные тени в Blender на примере The Beast

Выводы

Цветные тени, несмотря на физическую некорректность, включаются в профессиональные 3D-пакеты (за исключением Blender), уже несколько лет. Эта функция не только является удобным инструментом, экономящим уйму времени, но ещё и улучшает итоговую картинку.

Поделиться в: Опубликовать в twitter Опубликовать в своем блоге livejournal.com