Автоматический Fade_In и его модификации.

Ещё один мой любимый (и частоиспользуемый) экспрешен Auto Fade_In.
Частенько приходиться миксовать слои, и постоянно залезать параметр прозрачности и регулировать ключи мне быстро надоело, так что написал сперва простенький экспрешен, а потом и в виде простенького скрипта его оформил и назначил на кнопку в ft_toolbar`e.


Итак сам экспрешен:

t1- обозначаем начало текущего слоя
t2-обозначаем на конец слоя, который лежит ниже текущего
и теперь просто изменяем прозрачность от того места, где начинается слой, до того места, где заканчивается нижележащий слой.
одно но во всем этом, слои должны быть как на картинке ниже

Скрипт для ft-toolbar (сниппет)

а теперь скрипт для тулбара, чтобы вообще не лазить в параметр прозрачности. просто назначте на кнопку тип java script и вставте:

Tеперь модификации.

Первая модификация — меняем интерполяцию.
И самая первая модификация — заменим линейное изменение значений на плавное.
Для этого нам всего лиш нужно заменить linear в 3 строке на одно из следующих:
ease — это фактически то же самое как если бы Вы на ключах нажали F9, плавный выход из ключа и плавный вход.
easeIn — плавный выход из ключа (то, что справа)
easeOut — плавный вход в ключ (то, что слева)

Вторая модификация — Auto Fade по маркеру
Сделаем тоже самое, только теперь вместо нижележащего слоя будем использовать маркер.
У маркеров есть одно большое преимущество, как я считаю, это то что его можно легко двигать, не залезая в параметры, он всегда на виду и на него можно повесить многое..


Итак сам экспрешен:

Конструкция

обозначает буквально следующее:

эта конструкция позволяет не выдавать ошибку, если на нашем слое нет, например, маркера.. но как только мы его добавим, экспрешен сразу заработает. И это здорово!

маркер обозначаем thisLayer.marker.key(1).time; , т.е. буквально следующее (читаем с конца): время первого маркера на этом слое… с таким же успехом можно назначить на 2, 3, или 5 маркер, достаточно прописать нужную цифру в key(…)

Третья модификация — Auto Fade_Out

Следующая модификация Auto Fade_Out, автоматическое исчезновение.
Будем использовать те же слои и то же расположение, только теперь слой у нас будет автоматически исчезать.

все тоже самое что и с Auto Fade In, только теперь изменяем значения текущего слоя от начала вышележащего слоя до конца текущего.

И тут тоже можно заменить линейную интерполяцию на ту, которая вам больше нравиться (ease, easeIn, easeOut)

Четвертая модификация — Auto Fade_In и Fade_Out на одном слое

Если слоев больше чем 2, т.е. нужно смиксовать например 3 и более слоев, то тут уже нужен другой экспрешен, который бы позволял слою автоматически появляться и исчезать:

Опять же все заключаем в конструкцию try {…} catch ()

ну а далее все просто
t1=thisLayer.inPoint; — начало этого слоя
t2=thisComp.layer(index+1).outPoint; — конец нижележащего слоя
t3=thisComp.layer(index-1).inPoint; — начало слоя выше
t4=thisLayer.outPoint; — конец этого слоя

далее делаем проверку на время, т.е проверяем где сейчас находиться ползунок до или после начала вышележащего слоя, и если вышележащий слой начался, то исполняем первое условие  linear(time,t3,t4,value,0), во всех остальных случаях выполняем второе условие linear(time, t1, t2, 0, value)

Вообще конструкция if (…) else позволяет нам включать любые условия в наши экспрешены. Например проверку на время, на Checkbox Control, на > или < определенного значения , и много еще на что… в данном случае мы проверяем на начался слой на таймлинии или нет

Пятая модификация. Лесенка в другом направлении.

Если вам по какой то причине не нравиться представленная мной лесинка (расположение слоёв на таймлинии, то достаточно поменять местами t1 и t2 в конструкции linear(), поменять знак + на — в index+/-1 во второй строке, т.е.

P.S. это для Fade_Out, по аналогии, я думаю, сами сможете сделать Fade_In

P.S.S. И на последок мой совет, заключайте эти экспрешены в try {…} catch (err) {value} — это позволит не выводить ошибок если расположение слоев иизмениться или в еще миллионе других случаев…

P.S.S.S. и как обычно, прикрепляю проект