Введение в поддержку прозрачности видео в Unity
Альфа-прозрачность позволяет частям видео или последовательности изображений выглядеть полупрозрачными или полностью прозрачными.
Прозрачные видео полезны, если вы хотите создать накладки и визуальные эффекты, потому что вы можете слой видео в ваших Unity сцен.
Эта страница содержит обзор альфа-прозрачности, объясняет различные типы прозрачности в видео и описывает, как Unity обрабатывает и транскодирует альфа-значения для использования с прозрачными видео.
Альфа-значения
Значение альфа определяет уровень прозрачности видео или пикселя внутри видео.
Значения альфы могут принимать любое значение в диапазоне от 0 до 1 или от 0 до 255. Этот диапазон позволяет производить плавные и постепенные изменения прозрачности.
| Значение | Уровень прозрачности |
|---|---|
| Самый низкий (0) | Изображение или пиксель полностью прозрачен. |
| Наибольшее (1 или 255) | Изображение или пиксель полностью непрозрачен. |
| Промежуточные значения | Изображение или пиксель частично прозрачен. Вы можете видеть как изображение, так и фон за ним одновременно. |
Управляет ли значение альфы всем изображением видео или пикселем, зависит от типа значения: глобальное или на пиксель.
Прозрачность глобального альфа-значения
Компонент Video Player поддерживает глобальное значение альфы при воспроизведении контента в близких или отдаленных плоскостях камеры. При изменении этого значения каждый пиксель в видео изменяет прозрачность. Если вы установите значение 0.0f, все видео становится полностью прозрачным.
Инструкции по изменению прозрачности глобального альфа-значения см. в Изменение прозрачности всего видео (глобальная альфа).
Альфа-значение прозрачности на пиксель
Видео могут иметь альфа-значения на пиксель, что означает, что прозрачность может варьироваться по видеоизображению. Например, фон видео прозрачен, а объект на переднем плане непрозрачен.
Инструкции по импорту видео с альфа-изображением на пиксель см. в Изменение прозрачности пикселей в видео (альфа-изображение на пиксель).
Для прозрачных форматов, поддерживаемых Unity, см. Поддерживаемые кодеки для альфа-прозрачности на пиксель.
Как Unity транскодирует видео с альфа-значениями
Когда вы используете прозрачные видео в Unity, в некоторых случаях вам может понадобиться транскодировать ваше видео, чтобы убедиться, что оно поддерживает использование альфа-значений. Вам нужно транскодировать ваше видео, если:
- Ваше видео имеет кодек VP8, но платформа, на которую вы хотите нацелиться, не поддерживает встроенную прозрачность VP8.
- Вы хотите использовать кодек H.264, который не имеет встроенной поддержки альфа-значений.
При транскодировании видео с альфа-значениями (например, видео WebM), Unity упаковывает альфа-значения в цветовой поток. Этот процесс позволяет использовать прозрачные видео с H.264 и VP8.
Во время этого процесса Unity удвояет ширину изображения видео. Например, если у вас есть видео 1280 x 720 с альфа-значениями, внутренне это становится видео 2560 x 720.
После того, как Unity удвоит ширину видео, полученный файл содержит два раздела:
- В левой половине хранится оригинальное (без альфы) изображение.
- Правая половина хранит альфа-частицу в виде монохромного изображения.
Обе половины затем перепакуются шейдерами в RGBA, который создает окончательную текстуру в Видеоплеере. После этого видеовыход может отображать прозрачность. Чтобы получить список этих шейдеров (которые автоматически включаются в ваши сборки), перейдите в Project Настройки > Графика > Настройки шейдера > Видео.
Примечание: Этот процесс снижает максимальное разрешение видео. H.264 имеет типичное максимальное разрешение 4096 x 2304. Если вы импортируете видео с прозрачностью, которое имеет это разрешение, оно становится 8192 x 2304, что не удается, потому что большинство кодеров не поддерживают этот размер.
VP8 имеет максимальное разрешение 16383 x 16383, так что он скорее всего будет принимать эти более высокие разрешения. Но VP8 часто реализуется с помощью программного пути, который медленнее и может привести к низкой производительности при этих более высоких разрешениях.