Вердж3Д для Блендера: Прозрачность — Софт Эйт Софт
Description: Узнайте, какие виды прозрачности можно включить для материалов Блендера и использовать в Вердж3Д.

# Прозрачность / Блендер

В этой статье мы покажем вам, как включать прозрачность для «Иви»/«Сайклз», а также glTF-совместимых материалов в «Блендере».

- Настройка в «Блендере»
- Альфа-блендинг и альфа-клиппинг
- Аддитивный композитинг (рендеринг без буфера глубины)
- Порядок рендеринга (Z-индекс)
- Порядконезависимая прозрачность (OIT)
- Прозрачность для glTF-совместимых материалов

#

## Настройка в «Блендере»

Прозрачность для материалов «Иви» может быть включена с помощью комбинации шейдерных нод Transparent BSDF и Mix Shader. Параметр фактора ноды Mix Shader определяет уровень прозрачности — вы можете назначить его напрямую, либо воспользоваться выходом какой-нибудь другой ноды, например Fresnel, позволяющей повысить реалистичность прозрачности.

В качестве альтернативы вы можете использовать вход Alpha ноды Principled BSDF.

Используйте выпадающий список Blend Mode, чтобы выбрать необходимый режим прозрачности:

Auto
  Проанализировать материал и выбрать один из двух методов: Opaque (непрозрачный) или Alpha Blend (альфа-блендинг).
Opaque
  Не использовать прозрачность.
Alpha Clip
  Прозрачность в виде маски (альфа-клиппинг) (см. ниже).
Alpha Hashed
  Хеш-прозрачность, или прозрачность частичного перекрытия. Этот метод является промежуточным между клиппингом и блендингом. По сути это расширение метода маски, использующее мульти-самплинг.
Alpha Blend
  Альфа-блендинг (см. ниже).

Для настройки прозрачности имеется ряд дополнительных свойств, расположенных на панели Verge3D Settings:

Clip Threshold
  Порог для альфа клиппинга. Если в процессе рендеринга значение альфа-канала материала окажется ниже этого порога, поверхность в этом месте не будет отображаться.
Transparency Hack
  Включить один из двух специализированных режимов для борьбы с артефактами прозрачности:
  Nearest Layer
    Рендерить только ближайший к камере слой с помощью вспомогательного буфера глубины (техника "depth prepass").
  Two-Pass
    Рендерить сначала обратную сторону объектов, а потом прямую. Техника работает только для двусторонних материалов (опция Render Side должна быть установлена в Double-sided).
  Обе техники уменьшают производительность, поэтому используйте их только когда это реально необходимо.

Данная функциональность используется в демо-приложении «Прозрачность» (исходные файлы доступны в магазине ассетов).

#

## Альфа-блендинг и альфа-клиппинг

«Вердж3Д», являясь 3Д-движком, работающим в реальном времени, предлагает два метода работы с прозрачными объектами: альфа-блендинг и альфа-клиппинг (обычно с изображением-маской). Альфа-блендинг позволяет комбинировать полупрозрачный цвет переднего плана с цветом фона, используя альфа-канал в качестве фактора смешивания. Альфа-клиппинг действует по принципу отбрасывания всех пикселей альфа-канала меньше заданного порога (по умолчанию 0, но может быть изменено в настройках материала).

Альфа-блендинг менее производителен, чем альфа-клиппинг, но обеспечивает мягкие переходы, которые выглядят красивее. Альфа-блендинг также может вызывать артефакты связанные с Z-файтингом, когда полигоны визуализируются в неправильном порядке. Альфа-клиппинг создает жёсткие края, которые не могут быть сглажены, поэтому лучше всего подходит для визуализации многочисленных небольших предметов (таких как трава или листья деревьев).

#

## Аддитивный композитинг (рендеринг без буфера глубины)

«Вердж3Д» также предлагает специальный режим для отключения буфера глубины во время рендеринга. Это приводит к отмене сравнения значений глубины пикселей перекрываемых полигонов. Такие полигоны будут визуализированы аддитивным способом, который иногда позволяет избавиться от артефактов альфа-смешения.

Чтобы включить данный режим, используйте следующий материал. Замените ноду Glossy BSDF на ноду которая требуется в вашем материале.

Также отключите опцию Depth Write расположенную в окне настроек Verge3D Settings.

#

## Порядок рендеринга (Z-индекс)

«Вердж3Д» не выполняет сортировку полигонов внутри объектов, но сортирует объекты по дальности. В большинстве случаев это приводит к правильному смешиванию, но иногда может потребоваться принудительно изменить порядок отображения объектов.

Чтобы изменить порядок рендеринга для определённого объекта, установите числовой параметр Render Order панели настроек «Вердж3Д». Чем меньше индекс объекта, тем раньше он будет отрисован.

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

#

## Порядконезависимая прозрачность (OIT)

«Вердж3Д» позволяет использовать метод приближенной порядконезависимой прозрачности, который не требует рендеринга геометрии в отсортированном порядке, поэтому он избавляет от большинства артефактов альфа-смешения, без использования вышеперечисленных приёмов.

Данную опцию можно активировать на панели настроек экспорта Verge3D Settings.

Ограничения:

- OIT опция совместима только с WebGL 2, в противном случае эффекта не будет.
- OIT игнорируется зондами освещения в виде отражающих кубических текстур и в виде планарных отражений.
- Может плохо работать с объектами с малой прозрачностью.
- Не следует использовать вместе с MSAA (мультисемпловое сглаживание) в сценах с 2 и более непрозрачными объектами. Вместо этого вы можете использовать FXAA (быстрое приближенное сглаживание), которое полностью совместимо с OIT.

#

## Прозрачность для glTF-совместимых материалов

Чтобы обеспечить прозрачность для таких материалов, добавьте альфа-маску в альфа-канал текстуры базового цвета. Также вы можете настроить альфа-канал, используя Alpha вход в ноде Principled BSDF.

Используйте выпадающий список Blend Mode, чтобы выбрать необходимый режим прозрачности из списка поддерживаемых: Auto, Opaque, Alpha Clip и Alpha Blend

## Остались вопросы?

Задайте их на нашем форуме!