Динамические плашки для текста

В версии 13.2 наконец-то добавили свойство sourceRectAtTime, позволяющее получать bounding box для текстов и шейпов, реализовав мечту многих о динамических плашках для текстовых слоёв.

After Effects

  1. Создаем текстовый слой, называем его «textLayer»
  2. Создаём прямоугольный шейп.
  3. Я лично рекомендую привязывать size ректангла, нежели scale всего слоя, это позволит использовать stroke и roundness без искажений. Применяем экспрешн на size ректангла:
  4. Применяем экспрешн на position всего шейпа:

     

Готово, наш текст теперь надежно заперт в прямоугольнике!

textBbox

Итак, как же это работает?

Метод sourceRectAtTime принимет два аргумента. Первый — это время, в которое мы хотим получить рамку слоя. Обычно это time, но если вы хотите делать разные фичи с задержкой или фиксированным временем — экспериментируйте. Если второй аргумент будет true, то bbox будет рассчитываться с учётом обводки. Причем, как ни печально, работает это только на шейпах, слои всегда считаются с обводкой.

Затем метод sourceRectAtTime возвращает объект, имеющий четыре свойства: left, top, width, height. Поля left и top определяют положение рамки относительно anchorPoint’а. После этого, нам остается только поставить плашку в то центр bbox’а.

К сожалению, текстовые аниматоры не будут влиять на плашку. Но можно анимировать проявление текста с помощью экспрешнов, как, например, здесь.


Бонус для ленивых: скрипт, автоматически создающий плашку для выделенных слоёв. Ещё раз: скрипт для версии 13.2 или выше! Качать тут. Добавь в свой ft-toolbar, чтобы не потерять!