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

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

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

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


Теги:

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

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

Мне нужно было создать такой слой под текстом (подложку), который сам бы менял размер при изменении содержимого текстового слоя. Это стало возможным благодаря тому, что в одной из последних версий 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 КБ) 1651 просмотр
Expression Controls.jpg
Expression Controls.jpg (11.72 КБ) 1651 просмотр

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

Для размера:

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

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 КБ) 1651 просмотр
thisLayer.parent.jpg
thisLayer.parent.jpg (13.9 КБ) 1651 просмотр


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



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

Теги:


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей