Прозрачность и premultiply
Кайма по краю — почти всегда путаница между straight и premultiplied. Чем домножить, чем разделить и где альфа теряется по дороге.
Альфа — четвёртый канал, мера непрозрачности пикселя, и все её проблемы выглядят одинаково: тёмная или светлая кайма по краю объекта.
| Straight (unpremultiplied) | Premultiplied | |
|---|---|---|
| Цвет | Полный, независимо от альфы | Уже умножен на альфу |
| Полупрозрачный красный | RGB = 1, 0, 0; A = 0,5 | RGB = 0,5, 0, 0; A = 0,5 |
| Кто так делает | Многие форматы файлов | Рендер, композитинг |
Композитинг в TouchDesigner рассчитан на premultiplied. Отсюда у Movie
File In параметр Pre-Multiply RGB by Alpha с вариантами Off, On
и Automatic, а у Constant TOP — Multiply RGB by Alpha. Пришла
картинка в другом виде — по краю пошла кайма.
| Симптом | Что произошло | Что делать |
|---|---|---|
| Тёмная или цветная грязь по краю логотипа | Straight-картинку сложили как premultiplied | Домножить: Pre-Multiply RGB by Alpha в Movie File In или Math TOP → Multiply RGB by Alpha |
| Края слишком тёмные после обработки | Картинку домножили на альфу дважды | Math TOP → Divide RGB by Alpha (обратно в straight), потом один раз домножить |
| Прозрачность вообще не работает | Композит игнорирует альфу | Проверить операцию: Over, а не Add |
Большинство случаев исправляют две операции Math TOP — Multiply RGB by Alpha
и Divide RGB by Alpha; у Level TOP есть свой переключатель
Pre-Multiply RGB by Alpha.
Где альфа пропадает
H.264 и H.265 альфу не несут, прозрачности нужны HAP Alpha, HAP Q Alpha,
NotchLC или ProRes 4444 — Кодеки. Если формат альфы
не умеет, её записывают серым в нижнюю половину кадра, а в Movie File In
включают Bottom Half is Alpha (AAA).
Perform-окно отдаёт RGB, и альфа уходит наружу только в файл, по NDI или Spout. Многие фильтры считают RGB и оставляют альфу как есть, после чего каналы перестают сходиться. И в 8 битах альфа квантуется на 256 уровней — на плавных растворениях видны ступени.
Маска отдельно
Маску часто проще держать одноканальным TOP: памяти меньше, видно её как картинку, отлаживать легче. Matte TOP кладёт первый вход на второй по каналу третьего — то же, что альфа, только явно.
Viewer Active на TOP, RMB по картинке — в меню вьюера есть показ
отдельных каналов, в том числе Alpha. Reorder TOP раскладывает альфу
в RGB, чтобы смотреть её дальше по цепочке.
На LED-экране и в проекции прозрачности нет, там светится или не светится. Альфа нужна только внутри проекта до финального композита, а перед выводом всё сводят на непрозрачный фон, иначе процессор экрана покажет что-то своё.
Нашли в статье ошибку, устаревшее или непонятное место?