Прозрачность / Майя
Здесь мы покажем, как включить прозрачность для Standard Surface, OpenPBR и glTF-совместимых PBR материалов в «Майе».
Данная функциональность используется в демо-приложении «Прозрачность» (исходные файлы доступны в магазине ассетов).
- Альфа-блендинг и альфа-клиппинг
- Аддитивный композитинг (рендеринг без буфера глубины)
- Порядконезависимая прозрачность (OIT)
- Прозрачность Standard Surface материалов
- Прозрачность glTF-совместимых PBR-материалов
Альфа-блендинг и альфа-клиппинг
«Вердж3Д», являясь 3Д-движком, работающим в реальном времени, предлагает два метода работы с прозрачными объектами: альфа-блендинг и альфа-клиппинг (обычно с изображением-маской). Альфа-блендинг позволяет комбинировать полупрозрачный цвет переднего плана с цветом фона, используя альфа-канал в качестве фактора смешивания. Альфа-клиппинг действует по принципу отбрасывания всех пикселей альфа-канала меньше заданного порога (в «Вердж3Д для Майи» он всегда равен 0,5).
Альфа-блендинг менее производителен, чем альфа-клиппинг, но обеспечивает мягкие переходы, которые выглядят красивее. Альфа-блендинг также может вызывать артефакты связанные с Z-файтингом, когда полигоны визуализируются в неправильном порядке. Альфа-клиппинг создает жёсткие края, которые не могут быть сглажены, поэтому лучше всего подходит для визуализации многочисленных небольших предметов (таких как трава или листья деревьев).
Используйте выпадающий список Alpha Mode в настройках материала, чтобы выбрать между смешиванием и клиппингом.
Также имеется вариация метода Mask, называемая Coverage. Она использует MSAA-рендеринг для улучшения качества рендеринга клиппинг-прозрачности.
Аддитивный композитинг (рендеринг без буфера глубины)
«Вердж3Д» также предлагает специальный режим, для отключения буфера глубины во время рендеринга. Это приводит к отмене сравнения значений глубины пикселей перекрываемых полигонов. Такие полигоны будут визуализированы аддитивным способом, который иногда позволяет избавиться от артефактов альфа-смешения.
Выберите Blend в выпадающем списке Alpha Mode и снимите флажок Depth Write в настройках материала, чтобы включить этот режим. Кроме того, вам нужно увеличить значение Render Order в параметрах объекта чтобы ваш прозрачный объект отрендерился первым.
Порядконезависимая прозрачность (OIT)
«Вердж3Д» позволяет использовать метод приближенной порядконезависимой прозрачности, который не требует рендеринга геометрии в отсортированном порядке, поэтому он избавляет от большинства артефактов альфа-смешения, без использования вышеперечисленных приёмов.
Данную опцию можно активировать в диалоге настроек экспорта Verge3D Export Settings.
Ограничения:
- OIT опция совместима только с WebGL 2, в противном случае эффекта не будет.
- OIT игнорируется зондами освещения в виде отражающих кубических текстур и в виде планарных отражений.
- Может плохо работать с объектами с высокой непрозрачностью.
- Не следует использовать вместе с MSAA (мультисемпловое сглаживание) в сценах с 2 и более непрозрачными объектами. Вместо этого вы можете использовать FXAA (быстрое приближенное сглаживание), которое полностью совместимо с OIT.
Прозрачность Standard Surface материалов
Прозрачность Standard Surface, aiStandardSurface, а также OpenPBR Surface материалов может быть настроена с помощью следующих параметров:
Параметры:
- Transmission Weight
- Коэффициент пропускания тонкостенных и преломляющих материалов.
- Transmission Color
- Цвет преломления (Thin Walled отключен) материала.
- Thin Walled
- Использовать общие тонкостенные или основанные на преломлении прозрачности.
- Opacity
- Коэффициент непрозрачности для тонкостенных материалов.
- Alpha Mode
-
Режим прозрачности материала.
- Auto
- Проанализировать материал и выбрать один из двух методов: Opaque (непрозрачный) или Blend (альфа-блендинг).
- Opaque
- Не использовать прозрачность.
- Blend
- Альфа-блендинг (см. выше).
- Mask
- Прозрачность в виде маски (альфа-клиппинг) (см. выше).
- Coverage
- Хеш-прозрачность, или прозрачность частичного перекрытия. Этот метод является промежуточным между клиппингом и блендингом. По сути это расширение метода маски, использующее мульти-самплинг.
- Add
- Прозрачность на основе аддитивиного композитинга (см. выше).
- Transparency Hack
-
Включить один из двух специализированных режимов для борьбы с артефактами прозрачности:
- Nearest Layer
- Рендерить только ближайший к камере слой с помощью вспомогательного буфера глубины (техника "depth prepass").
- Two-Pass
- Рендерить сначала обратную сторону объектов, а потом прямую. Техника работает только для двусторонних материалов (опция Two Sided должна быть включена).
- Depth Write
- Отключение для аддитивного составления прозрачности (смотрите выше).
По умолчанию в «Майе» параметр Thin Walled не отмечен, что отключает наиболее типичный рендеринг прозрачности, который вы ожидали увидеть в интерактивном приложении. Всегда следите за этим параметром, когда имеете дело с прозрачными материалами.
Прозрачность glTF-совместимых PBR-материалов
Чтобы включить прозрачность для таких материалов, необходимо запечь карту прозрачности как 4 (альфа) компонент текстуры базового цвета и подключить Alpha выход этой текстуры к Opacity входу материала Standard Surface.
Если текстура базового цвета недоступна, просто используйте неподключенный параметр Opacity.
Используйте выпадающий список Alpha Mode для выбора режима прозрачности из списка поддерживаемых: Auto, Opaque, Blend и Mask.
Остались вопросы?
Задайте их на нашем форуме!