10181
0
10/09/2021

Используйте Corona Normal Map в редакторе материалов для загрузки файлов карт нормалей RGB, которые вы хотите использовать в качестве карты неровностей для вашего материала. Растровые карты можно загружать как с помощью встроенного узла 3ds Max Bitmap, так и с помощью узла Corona Bitmap, который предлагает больше возможностей фильтрации и, как правило, рендерит быстрее:

При загрузке файла карты нормалей в 3ds Max рекомендуется использовать настройки гаммы по умолчанию в окне Browse Images for Input:

Какие проблемы?

К сожалению, существуют различные стандарты, когда речь идет о том, как информация о нормальной карте хранится и интерпретируется различными 3D-программами. Например, красный цвет может представлять направление "вверх по плоскости текстуры" или "вправо по плоскости текстуры". Светло-голубой цвет (RGB 128 128 255) обычно представляет "плоские" области (непосредственно обращенные к зрителю), однако к изображению может быть применена гамма-коррекция, которая может изменить значение этого цвета.

Это означает, что одно и то же изображение может давать разные результаты при загрузке в качестве карты нормалей в различных программах. Аналогично, две карты нормалей, созданные в разных программах, могут дать разные результаты при загрузке в качестве карт нормалей и рендеринге в одном 3D-приложении.

Чтобы решить эту проблему, узел CoronaNormal предлагает несколько вариантов:

  1. "Add gamma to input" - добавляет гамму sRGB к линейному входному изображению. Эта опция должна быть включена для получения правильных результатов, если загруженная карта нормалей не имеет гаммы sRGB.
    Примечание: Corona попытается определить, должна ли быть включена эта опция или нет, и в случае, если она должна быть включена, покажет предупреждающее сообщение после начала рендеринга:
  2. Flip red (X) - определяет направление карты нормалей слева направо (более высокие значения красного цвета означают либо правое, либо левое направление нормалей).
  3. Flip green (Y) - определяет направление карты нормалей снизу вверх (более высокие значения зеленого цвета означают направление нормалей снизу вверх или вверх).
  4. Поменять местами красный и зеленый - определяет, какой цвет следует интерпретировать как направление слева направо, а какой - как направление слева направо.

Как определить, какие настройки использовать?

Есть два способа выяснить, какие настройки являются правильными:

  1. Получить достоверную информацию об используемой карте нормалей (например, она может быть включена в файл readme, поставляемый вместе с растровой картой).
  2. Метод проб и ошибок.

Иногда легко представить, как должны выглядеть нормали (в случае сферического или пирамидального рисунка), но иногда это может быть сложнее (в случае хаотичного, органического рисунка).

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

В первом примере мы будем использовать карту нормалей, созданную на основе полусферы, видимой сверху. Она была сохранена непосредственно из Corona VFB как 32-битный EXR-файл:

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

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

Давайте посмотрим, что произойдет, если мы загрузим приведенную выше карту нормалей в узел CoronaNormal с настройками по умолчанию, подключим ее к каналу карты неровностей в CoronaMtl и включим отражение, чтобы увидеть, как распределяется свет:

Очевидно, что карта неровностей работает неправильно (например, неровности вогнуты, а должны быть выпуклыми). Так что давайте попробуем это исправить:

Во-первых, давайте отрендерим тестовый объект без каких-либо неровностей, чтобы увидеть, как выглядят правильные нормали:

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

Давайте включим карту нормалей обратно и посмотрим, как она реагирует на флажок "Add gamma to input":

Галочка "Add gamma to input" выключена

Галочка "Add gamma to input" включена

Мы можем ясно видеть, что включение флажка "Add gamma to input" не решило проблему с неправильным затенением. Более того, это ухудшило затенение в "плоских" областях, что означает, что мы определенно не должны включать эту опцию. Это означает, что исходная карта нормалей уже содержит правильную гамму.

Давайте теперь попробуем с настройкой "Flip green (Y)":

"Add gamma to input" выключено, "Flip green (Y)" включено.

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

"Strength multiplier" уменьшен до 0,5

Теперь материал выглядит так, как нам хотелось бы. Решением было оставить не отмеченным флажок " Add gamma to input ", включить опцию " Flip green " и снизить силу карты нормалей до желаемого значения.

Как было сказано выше, эти настройки могут быть разными для карт нормалей, загруженных из разных источников (или сгенерированных в них):

В приведенном выше случае (кирпичи) решением было включить оба параметра "dd gamma to input" и "Flip green", иначе результат был бы неверным.

В приведенном выше случае (гравий) решением было включить опции "Add gamma to input" и "Swap red and green", иначе результат будет неверным.

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


Более подробно ознакомиться со всеми курсами образовательного проекта CGBandit вы можете здесь.

Перевод статьи осуществлен образовательным проектом CGBandit c официального сайта Coronarenderer.

Комментарии (0)