Обязательно ознакомьтесь с другими частями этого руководства, чтобы узнать больше о SSS и объемных эффектах в Corona Renderer! Дополнительную информацию о сетке объемов Corona Volume Grid смотрите ниже:
Что такое объект Corona Volume Grid? (CVolumeGrid)
Corona Volume Grid позволяет вам рендерить объекты, которые действительно объемны и основаны на 3D сетке, в отличие от сеток с Corona Mtl или Corona Volume Mtl, которые всегда требуют некоторой поверхности, состоящей из полигонов, для отображения объема.
Типичные области применения сетки Corona Volume Grid включают:
- Пожар
- Взрывы
- Дым
- Облака
- Пар
- Другие визуальные эффекты, основанные на моделировании частиц или жидкостей
- Объекты, которые невозможно или трудно отрисовать при использовании классической полигональной сетки
Огонь
Дым
Пар
Где найти?
Corona Volume Grid можно создать, перейдя в Командную панель, а затем Create > Corona > CVolumeGrid.
Какие форматы поддерживаются?
Поддерживается только формат OpenVDB (.vdb). Вы можете узнать больше о нем на сайте http://www.openvdb.org/, а скачать примеры файлов .vdb можно на сайте http://www.openvdb.org/download/.
Corona Volume Grid также поддерживает анимированные файлы OpenVDB (.vdb sequences).
Какие элементы управления доступны?
Наиболее полезные элементы управления включают:
Emission
Включает эмиссию для данного объема. Это можно представить как температуру мельчайших частиц дыма. Чем выше температура - тем ярче светятся частицы.
Эмиссия выключена.
Эмиссия включена.
Emission - Channel
Выбирает канал (сетку), присутствующий в файле OpenVDB, который будет использоваться для эмиссии среды. Обычно он должен быть установлен на "температура", чтобы получить такие результаты, как огонь или взрыв.
Существует также дополнительный канал под названием "константа" - это один сплошной цвет, который применяется ко всей граничной области объема. В случае использования режима "константа" для эмиссии, вся граница объекта сетки объема начнет светиться. Этот канал полезен, например, для рассеивания при создании дыма - вы можете установить постоянный цвет рассеивания, чтобы иметь одинаковый тип рассеивания внутри всей среды, и тогда ее толщина будет контролироваться только свойствами поглощения.
Канал эмиссии установлен на "constant".
Emission - Scale
Делает общую эмиссию более или менее интенсивной (большие значения означают большую интенсивность).
Шкала высокой эмиссии.
Низкая шкала эмиссии.
Emission - Tint
Этот цвет применяется к эмиссии (можно рассматривать его как своего рода фильтр).
Оттенок эмиссии установлен на синий.
Emission - Map
Это маска, используемая для эмиссии. Обратите внимание, что маска применяется в трехмерном пространстве, поэтому добавление карты шума приведет к тому, что к объекту будет применена трехмерная маска шума.
Процедурный шум используется в качестве карты для эмиссии.
Emission - Mode
Определяет, как интерпретируются данные текущего выбранного канала:
- Raw data - использует исходный цвет и интенсивность, которые хранятся в файле vfb. Затем на него влияют параметры масштабирования и оттенка.
- Сопоставление каналов - используются пользовательские настройки из инструмента "Сопоставление цветов каналов".
- Черное тело - моделирует цветовое излучение черного тела при заданной температуре Кельвина (полезно для моделирования пожаров).
Absorption
Определяет, как далеко свет может пройти внутри объекта, прежде чем он будет полностью поглощен.
Absorption - Channel
Выбирает канал (сетку), присутствующий в файле OpenVDB, который будет использоваться для поглощения. Обычно его следует установить на "дым", чтобы получить такие результаты, как огонь или взрыв. Существует также дополнительный канал под названием "constant", который заполняет всю границу сетки объема.
Absorption - Scale
Заставляет объект поглощать свет быстрее или медленнее (более высокие значения означают более быстрое поглощение, что означает более темный общий цвет, более густой дым).
Более низкая шкала поглощения. Дым кажется более тонким.
Более высокая шкала поглощения. Дым кажется более густым.
Absorption - Tint
Цвет применяется к поглощению (можно рассматривать его как своего рода фильтр).
Absorption - Scale
Маска, используемая для поглощения. Обратите внимание, что маска применяется в трехмерном пространстве, поэтому при добавлении карты шума к объекту будет применена трехмерная маска шума.
Scattering
Определяет, как свет будет рассеиваться внутри объема.
Scattering - Channel
Выбирает канал (сетку), присутствующий в файле OpenVDB, который будет использоваться для рассеяния. Обычно он должен быть установлен на "constant", чтобы весь объект рассеивал свет одинаково в тех областях, где поглощение позволяет это сделать, но другие каналы тоже могут работать хорошо, в зависимости от потребностей.
Scattering - Scale
Заставляет объект рассеивать свет больше или меньше (более высокие значения означают большее рассеивание и более яркий общий цвет).
Более низкая шкала рассеивания. Дым кажется темнее.
Более высокая шкала рассеивания. Дым выглядит ярче.
Scattering - Tint
Цвет применяется к рассеиванию (можно рассматривать его как своего рода фильтр).
Оттенок рассеивания установлен на синий.
Scattering - Map
Маска, используемая для поглощения. Обратите внимание, что маска применяется в трехмерном пространстве, поэтому при добавлении карты шума к объекту будет применена трехмерная маска шума.
Scattering - Directionality
Направленность рассеяния. 0 дает изотропное ("диффузное") рассеяние. Положительные значения дают рассеяние вперед. Отрицательные значения приводят к рассеянию назад. Значение по умолчанию 0 подходит для большинства сред, за исключением облаков, где более высокие положительные числа создадут эффект "серебряной подкладки".
Scattering - Single bounce only
Эта опция должна быть включена, если ее отключение не является абсолютно необходимым. Если опция включена, в среде будет рассеиваться только одиночный отскок (прямое освещение). Это приводит к смещенному (более темному), но гораздо более быстрому рендерингу. Полезно, например, для рендеринга "крестных лучей" внутри среды.
Рендеринг:
Rendering - Interpolation
Решает вопрос о соотношении скорости и качества. Это похоже на фильтрацию, используемую во многих приложениях при работе с 2D текстурами.
- "None" - самый быстрый рендеринг, но самое низкое качество с возможностью "пикселированного" или "блочного" вида сетки.
- "Linear" - это компромисс между качеством и скоростью рендеринга, и этот режим используется по умолчанию.
- "Quadratic" обеспечивает наилучшее качество, но за счет времени рендеринга.
Интерполяция не используется. Время рендеринга: 24 с. Результат заметно "блочный".
Интерполяция установлена на линейную. Время рендеринга 24 с (как и при отсутствии интерполяции). Результат выглядит гораздо более гладким и естественным.
Интерполяция установлена на квадратичную. Время рендеринга 31 с. Результат выглядит более естественным, но рендеринг происходит медленнее.
Rendering - Step size
Размер шага лучей. Определяет, сколько "объемных шагов" может быть использовано для рендеринга объекта. Большие значения означают более быстрый рендеринг, больше шума и большую вероятность появления артефактов. Меньшие значения означают лучшее качество, но более медленный рендеринг. Чтобы получить приемлемое время рендеринга, размер шага должен быть установлен на максимально возможное значение, пока не будут заметны артефакты марширования лучей ("срезы", видимые внутри объекта).
Размер шага 0,5 см. Время рендеринга 3 мин 46 с. Дым густой, детали сохраняются.
Размер шага 5 см. Время рендеринга 48 с. Дым становится тоньше, и деталей видно меньше.
Размер шага 50 см. Время рендеринга 29 с. Весь объект становится прозрачным, и детали теряются.
Rendering - Flip frame
Переворачивает оси Y и Z файла OpenVDB, в результате чего объект поворачивается на 90 градусов. Этот параметр следует использовать, если при загрузке объект оказывается неправильно повернутым.
Rendering - Preview type
Preview type- использовать для файла OpenVDB предварительный просмотр ограничивающей рамки или облака точек.
Внимание: предварительный просмотр облака точек может работать медленно при загрузке большого файла.
Rendering - Preview quality
Плотность предварительного просмотра облака точек.
Rendering - Motion blur
Определяет, как будет вычисляться размытие движения.
Rendering - Режим
- Disabled - отключает размытие движения
- Simple - простая интерполяция между двумя кадрами OpenVDB - может привести к артефактам
- Velocity based - плавная интерполяция на основе канала скорости файла OpenVDB - требует выбора правильного канала скорости.
- Velocity - выбирает канал, который хранит информацию о скорости для расчетов размытия движения. Обычно для этого используется "velocity".
- Multiplier - сила эффекта размытия движения (большие значения означают более выраженное размытие движения).
Размытие движения выключено.
Простое размытие движения.
Размытие движения на основе скорости.
Как достичь желаемых результатов - примеры
Пример 1
Мы хотим добиться темного, густого дыма, который не излучает и не рассеивает свет:
- Эмиссия и рассеивание отключены (так как они нам не нужны).
- Поглощение включено и установлено на высокую шкалу.
Пример 2
Мы хотим добиться интенсивного огня с темным, тонким дымом, который рассеивает свет:
- Эмиссия включена, так как мы хотим отрисовать излучающую часть огня. Масштаб эмиссии установлен на 5, чтобы усилить интенсивность.
- Для излучения выбран режим черного тела, так как мы создаем реалистичный огонь.
- Поглощение включено для рендеринга дыма, однако его масштаб уменьшен до 0,5, так как мы хотим, чтобы дым был тонким.
- Рассеяние включено, а масштаб установлен на 0,05 для слабого эффекта рассеяния.
Пример 3
Мы хотим добиться яркого пара:
- Для этого примера нам не нужна эмиссия, поэтому она отключена.
- Поглощение включено, но его масштаб уменьшен до 0,05, чтобы сделать пар прозрачным.
- Шкала рассеивания установлена на 1, чтобы пар выглядел ярким.
Пример 4
Мы хотим добиться "волшебного" огня с разноцветным дымом:
- Мы используем эмиссию, поглощение и рассеивание.
- Чтобы добиться фиолетового оттенка дыма, мы используем пользовательский оттенок рассеивания.
- Для красочного огня мы используем опцию отображения цвета канала для эмиссии (см. ниже дополнительную информацию и мини-учебник).
Как использовать инструмент отображения цвета канала?
Проще говоря, отображение цвета канала можно использовать для окрашивания свойств объемной сетки (излучение, поглощение, рассеяние) на основе градиента. Например, красно-желтый градиент может быть использован для создания реалистичного огня.
Диалог отображения канала позволяет сопоставить значения с плавающей точкой, хранящиеся в канале, с цветами. Сопоставление вычисляется следующим образом:
- Сначала значения с плавающей точкой масштабируются с помощью параметра "Входное масштабирование", чтобы они вписывались в [0,1]. Можно использовать кнопку "Автомасштабирование" для автоматического вычисления входного масштаба.
- Плавающее значение отображается на цвет с помощью цветового градиента. Самый левый цвет градиента определяет, как значение 0 отображается в цвет, а самый правый цвет определяет, как значение 1 отображается в цвет.
- Цвет, вычисленный по градиенту, масштабируется кривой. Обратите внимание, что на вход кривой подается не цвет из градиента, а "входное масштабированное" плавающее значение из канала (т.е. результат операции 1).
- Окончательный цвет вычисляется путем обратного масштабирования цвета с использованием обратной величины "Input scaling".
Предлагаемый рабочий процесс (на основе эмиссии):
- Установите канал эмиссии на температуру.
- Установите режим "Channel mapping".
- Откройте окно "Channel color mapping".
- Нажмите кнопку "Auto-scale" для автоматической настройки значения масштаба.
- Установите нужные цвета градиента:
- Самый левый цвет представляет собой цвет самых темных элементов объемного эффекта (в случае использования температурного канала это означает самую низкую температуру, поэтому все области за пределами видимого огня).
- Самый правый цвет представляет собой цвет самых ярких элементов объемного эффекта (в случае использования температурного канала, это означает самую высокую температуру)
- Все значения между ними представляют собой переход между крайними значениями интенсивности (левое и правое).
- На этом этапе вы можете настроить кривую в соответствии с вашими потребностями:
- Перемещение левой нижней точки к верхней части графика сделает самые темные цвета более интенсивными.
- Перемещение левой нижней точки к правой стороне графика "обрежет" некоторые из самых темных цветов,
сделав их
прозрачными.
Примечание: это полезно для того, чтобы избавиться от видимой при рендеринге формы ограничительной рамки объемной сетки. - Перемещение правой верхней точки к нижней части графика сделает весь эффект менее интенсивным.
- Перемещение правой верхней точки к левой стороне графика сделает весь эффект более интенсивным (обратите внимание, что из-за этого эффект часто может выглядеть перегоревшим).
- Вы также можете добавлять точки в других местах кривой, чтобы контролировать промежуточные значения, и переключаться между кубическим ("безье") и линейным ("угловым") сплайнами.
- На данном этапе регулировка значения "Входной масштаб" сделает общий эффект более или менее интенсивным.
- Если нажать ОК и закрыть окно отображения цвета канала, то можно вернуться к разворачиванию "Затенение" объекта Corona Volume Grid и отрегулировать параметр "Масштаб излучения". Он будет работать аналогично "Input scaling" в окне цветового отображения канала, но будет регулировать интенсивность после завершения цветового отображения. Это означает, что если вы удалили видимую ограничительную рамку объемного эффекта с помощью элементов управления, предоставленных в окне цветового отображения канала, то нет никакого способа показать ограничительную рамку снова с помощью параметра масштаба излучения. Этот параметр можно использовать для настройки интенсивности эффекта после настройки общего цвета и видимости (например, сделать огонь ярче).
Как добиться максимально быстрого рендеринга и наилучшего качества?
Вот некоторые рекомендации по настройке объекта Corona Volume Grid для наилучшего соотношения времени рендеринга и качества:
- Если вы рендерите только объект Volume Grid на сплошном фоне (без какого-либо окружения, например, интерьера или экстерьера), перейдите в Render Setup > Performance и уменьшите значение параметра GI vs. AA с 16 по умолчанию до меньшего значения (например, 4, но не ниже 2). Это ускорит рендеринг объекта Volume Grid, но может внести шум в другие части изображения, например, глянцевые отражения или преломления.
- Поскольку некоторые части объемной сетки могут в основном полагаться на прямое освещение (это заметно при использовании поглощения и рассеяния), возможно, имеет смысл увеличить значение множителя Light Samples Multiplier в разделе Render Setup > Performance. Это улучшит качество света, проникающего в светорассеивающую часть объекта (например, дым, пар).
- В настройках объекта Grid Object перейдите к ролику Rendering и установите размер шага на максимально возможное значение. Слишком низкие значения будут рендериться очень медленно. Слишком высокие значения приведут к появлению артефактов марширования лучей ("срезы" или "кубы", видимые в объекте), а также сделают объект нереалистично прозрачным.
- Объекты с более низкой шкалой излучения всегда будут визуализироваться быстрее, поскольку генерируется меньше света, что, в свою очередь, создает меньше шума.
- Объекты с более низкой шкалой рассеяния (более темного цвета) всегда будут рендериться быстрее. Соответственно, яркое рассеивание (например, цвет установлен на чисто белый) будет визуализироваться медленнее.
- Всегда используйте опцию "Только одиночный отскок" в разделе "Scattering" внутри объекта "Volume Grid". Отключайте эту опцию только в случае крайней необходимости. Включение этой опции обычно дает лишь небольшое улучшение качества и делает рендеринг намного медленнее.
Разве элементы управления Corona Volume Grid не похожи на те, что находятся в Corona Volume Mtl?
Да, элементы управления, доступные в объекте Corona Volume Grid, очень похожи на те, что находятся в материале Corona Volume, и они дают очень похожие результаты. Если вы знакомы с материалом Corona Volume и эффектами SSS в Corona, то объемные сетки не должны стать для вас проблемой!
Более подробно ознакомиться со всеми курсами образовательного проекта CGBandit вы можете здесь.
Перевод статьи осуществлен образовательным проектом CGBandit c официального сайта coronarenderer.