HDRI в Corona и 3ds Max: мягкие тени через Composite

Если HDRI даёт слишком резкие солнечные пятна, можно смешать несколько версий той же карты с разным размытием. Резкая версия сохранит рисунок света, а размытые добавят мягкую составляющую. В Corona такая схема собирается из CoronaBitmap, Composite и CoronaMix; веса карт и Blur затем можно менять из одной панели.

Подключите HDRI и общий контроллер поворота

Разбор рассчитан на знакомство со Slate Material Editor и обычным освещением через HDRI. В демонстрации используются 3ds Max 2026 и Corona 13 (Hotfix 1). Сначала соберите схему на простой сцене с окном: по пятнам на стене и полу легче оценивать разницу между резким и мягким светом.

Создайте CoronaBitmap и загрузите HDRI. Для сферической панорамы выберите Environment mapping → Mode: Spherical. Если карта имеет другую развёртку, режим должен соответствовать ей. Включите Transform from object и назначьте вспомогательный объект сцены. Позже назначьте этот же объект всем копиям карты, чтобы их направления совпадали.

В уроке контроллером служит круг со стрелкой. Стрелка указывает направление солнца только при соответствующем расположении солнца в самой панораме; для произвольной HDRI этот ориентир нужно проверить.

В Render Setup → Scene → Scene Environment выберите Single map. На этапе сборки сюда попадёт Composite, а после компенсации яркости — выход последнего CoronaMix. В этом режиме карта из стандартного Environment 3ds Max не управляет основным окружением Corona.

Схема HDRI в Slate Material Editor и слот Single map в настройках Corona
Composite подключён в Scene Environment → Single map. На этом этапе компенсация яркости ещё не добавлена. 00:08:20

Создайте версии карты с разным Blur

Сделайте независимые копии CoronaBitmap, которые читают один HDRI-файл. Инстансы самого узла здесь неудобны: изменение Blur должно затрагивать выбранную версию, а не все сразу. Сохраняйте одинаковые настройки ориентации и загрузки изображения.

В итоговой демонстрации используются четыре значения Blur: 1, 5, 10 и 25. Они дают разные степени размытия на выбранной панораме. Для своей HDRI подберите значения по сравнению света: одинаковые числа не гарантируют одинаковой мягкости на разных картах.

Blur находится в разделе Filtering CoronaBitmap. В этом уроке он изменяет HDRI прямо в редакторе, поэтому отдельные размытые файлы в Photoshop для показанной схемы не требуются.

  • Начните с наименее размытой версии и оцените контуры солнечного пятна.
  • Посмотрите каждую более размытую версию отдельно, прежде чем смешивать их.
  • Подберите уровни так, чтобы они давали различимый результат: промежуточный вариант, заметное смягчение и широкую рассеянную составляющую.
Размытые версии CoronaBitmap и параметр Blur в разделе Filtering
Копии одной HDRI с разным Blur. 00:07:10

Сложите карты в Composite и задайте их веса

Создайте Composite с четырьмя слоями и подключите по CoronaBitmap к каждому входу Layer. Для суммирования используйте режим Addition. Не оставляйте верхние слои в Normal: непрозрачный верхний слой будет перекрывать нижние вместо нужного сложения.

Создайте отдельный OSL Float Value для каждой карты и подключите его к соответствующему Layer (Mask). Эти числовые значения станут весами: увеличение веса усиливает вклад выбранной версии HDRI. Начальный диапазон от 0 до 1 удобен для последующей панели управления.

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

Компенсируйте яркость через второй Composite и CoronaMix

Соберите второй Composite с таким же количеством слоёв и режимом Addition. Здесь складываются только веса: подключите те же OSL Float Value к входам Layer. Используйте общие узлы значений в обеих ветках, чтобы вес HDRI и вес в знаменателе всегда менялись вместе.

Добавьте CoronaMix с Mix Operation: Divide. Подключите сумму HDRI к Base, а сумму весов — к Top. В показанной схеме делится изображение из Base на значение из Top; перепутанные входы дадут другой результат.

Смысл вычисления можно записать так: итоговая карта = сумма взвешенных HDRI / сумма весов. Если одинаковые карты усилили свет в четыре раза, деление на общий вес возвращает исходный масштаб интенсивности. При разных уровнях Blur схема компенсирует изменение общего веса, но рисунок света и яркость отдельных участков всё равно меняются.

После деления добавьте ещё один CoronaMix с операцией Multiply. Его Base получает нормализованную смесь, а Top — отдельный OSL Float Value для общей интенсивности. Выход этого узла подключите в Single map. Так баланс резких и мягких версий регулируется отдельно от общего усиления света.

  • Оставляйте хотя бы один ненулевой вес. Когда все веса равны нулю, знаменатель тоже равен нулю; такой случай эта схема сама не защищает.
  • Начните с общего множителя 1. Это линейное усиление карты, а не значение экспозиции в ступенях EV.
  • Проверьте изменение одного веса в обеих ветках. Если меняется только сумма HDRI, компенсация перестаёт соответствовать смеси.
Два Composite и входы Base и Top карты CoronaMix с операцией Divide
CoronaMix в режиме Divide: сумма HDRI подключена к Base, сумма весов — к Top. 00:13:35

Вынесите параметры в Attribute Holder

Добавьте Attribute Holder на объект, который уже управляет поворотом окружения. В Animation → Parameter Editor создайте параметры на выбранном модификаторе: слайдеры для весов HDRI, числовые поля для Blur и отдельное поле общей интенсивности. В показанной панели поле общей интенсивности называется GLOBAL_EXP.

В уроке веса задаются типом Float со слайдером, а Blur — типом Float с интерфейсом Spinner. Для весов используется диапазон от 0 до 1; показанный диапазон Blur — от 1 до 100. Его можно изменить под задачу. Значения на панели сами по себе не меняют освещение, пока не связаны с картами.

Откройте Parameter Wiring. На одной стороне выберите Custom Attributes модификатора, на другой — параметр нужного узла в дереве карты окружения. Свяжите вес с Float соответствующей маски, Blur — с filteringBlur его CoronaBitmap, общий множитель — с Float после Divide.

В демонстрации связи двусторонние. При таком подключении поле Driver определяет, откуда будет взято начальное значение. Перед Connect проверьте, что связываете правильную пару и сохраняете нужное значение. Повторите для остальных карт.

  • Измените вес на панели и убедитесь, что меняется соответствующий OSL Float Value.
  • Измените Blur и проверьте число в правильном CoronaBitmap.
  • Проверьте общий множитель отдельно от весов: он должен управлять всей смесью.
Окно Parameter Wiring со связью Blur и filteringBlur, рядом панель Attribute Holder
Parameter Wiring связывает числовое поле Blur на панели с filteringBlur соответствующей CoronaBitmap. 00:20:40

Сравните мягкий свет и смешанный вариант

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

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

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

  • Для сравнения держите камеру и настройки отображения неизменными.
  • Не меняйте одновременно веса, Blur и тональную обработку: будет трудно понять причину результата.
  • После настройки света проверьте его уже на материалах рабочей сцены.
Тестовый интерьер в Corona VFB с сильно размытой HDRI и мягким освещением стены
Проверка сильного размытия: солнечный рисунок почти исчезает, освещение стены становится мягким. 00:23:20
Рендер интерьера с солнечными пятнами и панелью весов и Blur нескольких HDRI
Смешанный вариант: пятна от окна сохраняются, а размытые версии добавляют мягкую составляющую света. 00:24:10

Настройте Tone Mapping отдельно от смеси HDRI

Смешивание HDRI управляет освещением сцены, а Tone Mapping в Corona VFB — отображением результата. В уроке показан отдельный вариант тональной обработки: ACES OT убирается, для сжатия диапазона используется Reinhard через оператор Highlight Compression, добавляются LUT и Lift, Gamma, Gain.

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

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

Что проверить, если схема ведёт себя неожиданно

Если интерактивный рендер реагирует медленно, попробуйте отключить Auto Preview у Composite через контекстное меню узла. Тогда изменение параметра не будет каждый раз требовать обновления его миниатюры. Это приём из урока, а не обещание ускорения любой сцены.

В демонстрации отмечены зависания и сбои при работе со схемой, в том числе при вращении управляющего объекта во время интерактивного рендера. Если столкнётесь с таким поведением, остановите интерактив перед поворотом. Альтернативный вариант из урока — управлять вращением карты через Wire Parameters.

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

  • Свет не меняется: проверьте Single map и подключение выходного узла.
  • Яркость скачет: проверьте общие маски, суммирование весов и входы Divide.
  • Повороты карт расходятся: всем CoronaBitmap должен быть назначен один контроллер Transform from object.
  • Панель меняет соседнюю карту: пересмотрите пары параметров в Parameter Wiring.

Вопросы и ответы

Можно ли сделать тени от HDRI мягче без Photoshop?

В показанной схеме можно: Blur CoronaBitmap изменяет размытие HDRI внутри 3ds Max. Несколько копий карты с разным Blur смешиваются через Composite, и их вклад можно регулировать отдельно.

Почему при смешивании HDRI становится светлее?

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

Обязательно ли копировать Tone Mapping из урока?

Нет. Composite и CoronaMix формируют карту окружения независимо от выбранного художественного оформления VFB. Важно сравнивать варианты смеси при неизменной тональной обработке и учитывать входное пространство своего LUT.

Связанные руководства

Техническая документация: Chaos: HDRI-окружение в Corona · Autodesk: карта Composite

Источник текста и кадров: Adán Martín — El SECRETO detrás de la MEJOR ILUMINACIÓN HDRi en Corona Renderer