Переход (Transition) линий в After Effects с помощью выражений (Expression).
Создаем новый прямоугольный шейп Rectangle Shape Layer с помощью двойного клика по инструменту Rectangle Tool в меню шейповых инструментов.
Переименуем: Shape Layer > Content > “Rectangle 1” на “01”
Добавим выражение для Shape Layer > Content > 01 > Rectangle Path 1 > Size:
[0,thisComp.height]
Для шейпового слоя выключаем Fill, и Stroke Width изменяем на 80.
Добавим два модификатора Repeater в группу “01”. Для второго Repeater параметр Copies изменим на значение 2. Для второго Repeater, перейдем в transform и Position поставим на 0, а для Scale добавим выражение:
[-100, 0]
Второй Repeater переименуем в Mirror.
Добавим выражение для Shape Layer > Content > 01 > Repeater 1 > Transform > Position:
var i = content(“01”).content(“Repeater 1”).copies-1;
var w = (thisComp.width/2)/i;
[w,value[1]]
var h = easeIn(time, inPoint, inPoint + 1, -thisComp.height/i,0);
[w,h]
В переменной var h, если бы мы хотели анимацию длительностью 2 секунды, мы должны были написать inPoint + 2, или даже создать Control Expression для настройки длительности вручную с помощью ползунка.
Добавим Expression для Shape Layer > Content > 01 > Stroke 1 > Stroke Width:
Math.ceil(content(“01”).content(“Repeater 1”).transform.position[0])
Теперь, если поменять значение Copies для Repeater то шейпы будет автоматически подстраиваться так чтобы заполнить весь кадр копиями.
Добавим выражение (Expression) для Shape Layer > Content > 01 Rectangle Path 1 > Position, для создания линейной анимации:
var offset = (thisProperty.propertyGroup(3).name-1)*(4/25); linear(time, inPoint +offset, inPoint +1 +offset, [0,-thisComp.height], [0,0])
При этом у нас будет появляться временная задержка при дублировании группы. То есть, при дублировании группы “01”, и переименовании дубликата с шагом +1 (то есть дубликат группы переименуем в “02”, еще раз продублируем и переименуем в “03” и так далее), мы получим задержку времени в 4 кадра между группами.
Изменим выражение для Shape Layer > Content > 01 > Repeater 1 > Transform > Position:
var i = content("01").content("Repeater 1").copies-1; var w = (thisComp.width/2)/i; var offset = (thisProperty.propertyGroup(4).name-1)*(1/25); var h = linear(time, inPoint + offset, inPoint + 1.5 + offset, -thisComp.height*4/i,0); [w,h]
Изменим Expression (выражение) для Shape Layer > Content > 01 > Stroke 1 > Stroke Width:
var w = content(“01”).content(“Repeater 1”).transform.position[0];
Math.ceil(linear(time, inPoint, inPoint +1.5, w/2,w))
Можно поменять паарметр Shape Layer > Content > Rectangle 1 > Stroke 1 > с Line Join на Round Join.
Теперь дублируем группу “01”, переименуем дубликат “02”, еще раз продублируем и переименуем в “03” и так далее, столько раз, сколько нам нужно.
Источник: aexpr.wordpress.com