Пример
В этом примере мы будем использовать плоскую модель листа, текстурированную с помощью диффузной карты PNG, содержащей альфа-канал, и черно-белой карты непрозрачности.
Объекты, расположенные близко к камере, отображаются с небольшими контурами:
После перемещения объектов дальше от камеры материал становится ярче или размывается:
Объяснение
Хотя эта проблема может навести на мысль о проблемах с картой непрозрачности, на самом деле она связана с картой диффузности. Если вы используете растровое изображение, содержащее информацию альфа-канала (.png, .tif,...) в слоте diffuse, фильтрация слегка размывает его границы, чтобы был виден сплошной диффузный цвет материала Corona. По умолчанию цвет диффузии установлен на серый, и это причина того, что в большинстве случаев текстуры становятся размытыми или более яркими, чем ожидалось.
Примечание: эта проблема не связана с Corona, такая же проблема возникнет и в любом другом рендере.
Вот как выглядит карта диффузной текстуры в программе просмотра графики. Обратите внимание на прозрачный фон:
Эффект едва заметен в редакторе материалов, если цвет диффузии установлен по умолчанию 128 серых:
Однако после изменения цвета на красный он становится более очевидным:
А после отключения прозрачности для материала видно, что сплошной диффузный цвет используется в альфа-маппированных областях текстуры:
Решение
Чтобы исправить это поведение:
Либо:
- Если растровая карта диффузии содержит альфа-канал, установите цвет диффузии материала в соответствии с текстурой (например, зеленый, если это текстура листьев).
Либо:
- Если диффузный растр не содержит альфа-канала, отредактируйте его и закрасьте его "фон" (область, которая прозрачна на этом рисунке) цветом, соответствующим основной текстуре.
Неправильный диффузный растр:
Исправленный диффузный растр:
Исправлен материал, видимый на расстоянии (сравните с примером в верхней части страницы):
Существуют и другие решения, но их работа не гарантирована, и они могут привести к нежелательным результатам, таким как мерцание или aliasing, особенно в анимации:
- Установите параметр "размытие" на 0 в настройках диффузного растрового изображения.
- Установите параметр "texmap filtering" на "none" в разделе "Development / Experimental Stuff".
Примечание: это отключит фильтрацию для ВСЕХ текстур в сцене и, таким образом, может вызвать значительное количество артефактов при рендеринге (мерцание, aliasing, неровные края...).
Более подробно ознакомиться со всеми курсами образовательного проекта CGBandit вы можете здесь: https://www.cgbanditcourse.com
Перевод статьи осуществлен образовательным проектом CGBandit c официального сайта coronarenderer.