Фон для текста в After Effects с автоматическим изменением размера (sourceRectAtTime) +проект

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
Ссылки, описания, дополнительная информация для моих уроков на YouTube
Canonical Link
Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2237
Зарегистрирован: 18 мар 2016 23:20
Откуда: С Ютуба
Благодарил (а): 13 раз
Поблагодарили: 234 раза

Фон для текста в After Effects с автоматическим изменением размера (sourceRectAtTime) +проект


Теги:

Сообщение aeplug » 26 ноя 2019 14:24

фон для текста After Effects.gif
фон для текста After Effects.gif (113.24 КБ) 326 просмотров
фон для текста After Effects.gif
фон для текста After Effects.gif (113.24 КБ) 326 просмотров

Мне нужно было создать такой слой под текстом (подложку), который сам бы менял размер при изменении содержимого текстового слоя. Это стало возможным благодаря тому, что в одной из последних версий After Effects появилась новая функция для выражений sourceRectAtTime(). Она позволяет получить размеры таких динамических слоев, как Shape Layers и текст, и уже с помощью обычных выражений привязывать к ним любые другие доступные параметры.
https://www.youtube.com/watch?v=UoLtU6IsNXA
Но есть некоторые неприятные особенности, связанные с текстом, разбитым на несколько строк. Дело в том, что After Effects в таком случае ставит якорную точку на первой строчке, и позиционировать обычную фигуру по центру так не получится. Ну и большинство методов в интернете рассчитаны на одну строку и не работают так как мне надо. Но удалось найти рабочий метод.
Проект для After Effects СС 2019:

В качестве подложки под текст я использовал шейповый прямоугольник, его надо во первых привязать к тексту, чтобы он всегда следовал за ним. Для удобного изменения параметров я еще докинул на него несколько управляющих элементов из группы Expression Controls. Один позволяет выбирать главный слой, с которого снимаются параметры, и два слайдера для отдельного изменения размера подложки по каждой оси. Этого делать не обязательно, но тогда придется все параметры менять каждый раз самому прямо в коде.
Expression Controls.jpg
Expression Controls.jpg (11.72 КБ) 325 просмотров
Expression Controls.jpg
Expression Controls.jpg (11.72 КБ) 325 просмотров

Сама же магия заключается в двух выражениях на положение слоя и его размер с тем самым sourceRectAtTime().
Выражения подложки для текста.jpg
Выражения подложки для текста.jpg (29.73 КБ) 325 просмотров
Выражения подложки для текста.jpg
Выражения подложки для текста.jpg (29.73 КБ) 325 просмотров

Для размера:

Код: Выделить всё

l=effect("Layer Control")("Layer");
rect=l.sourceRectAtTime();
[rect.width+effect("X")("Slider"),rect.height+effect("Y")("Slider")]

Для положения:

Код: Выделить всё

l=effect("Layer Control")("Layer");
rect=l.sourceRectAtTime();
[rect.left+rect.width/2,rect.top+rect.height/2]

А еще можно вместо ручного указания слоя через Layer Control привязываться непосредственно к его родителю через thisLayer.parent, и значит можно выкинуть еще один параметр из настроек, так как для этого метода это будет один и тот же слой.
thisLayer.parent.jpg
thisLayer.parent.jpg (13.9 КБ) 325 просмотров
thisLayer.parent.jpg
thisLayer.parent.jpg (13.9 КБ) 325 просмотров


  :info:  
Полезные ссылки:



Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах

Теги:


Вернуться в «Мои уроки»

Кто сейчас на конференции

Сейчас этот форум просматривают: CommonCrawl [Bot]