@Gulyavkov

Как автоматизировать анимацию?

Как автоматизировать захват текста шейпом?Сейчас делал вручную, через position для каждого слоя
5ca428bbb3b85401786953.gif
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
DarkWood
@DarkWood
Знаю, что прошло уже два месяца, но наткнулся случайно и решил ответить.

Собственно, создайте слои с шейпом и текстом. У шейпа ключевыми кадрами задаете начальное и конечное положение (метод Position; "горячая клавиша" P).

В метод Position слоя с текстом впишите следующее выражение:
x = transform.position[0];
y = transform.position[1];
shape_y = thisComp.layer("Shape Layer 1").transform.position[1];
if ( shape_y > y ) {
    [x,y];
} else {
    [x,shape_y];
}

Логика работы.

Выражение считывает текущие значения позиций по оси Y у обоих слоев. Так как слой с шейпом находится ниже текста, то у него начальное значение будет больше. И пока оно остается таковым, у текста позиция не изменится. Когда они сравняются, позиция текста по оси Y будет получаться от шейпа.

Дополнение. Если вы хотите автоматически подгонять размер шейпа под размер надписи, то впишите следующее выражение в свойство Rectangle> Rectangle Path> Size:
margin = 14;
text_width = thisComp.layer("Sample").sourceRectAtTime().width;
text_height = thisComp.layer("Sample").sourceRectAtTime().height;
box_width = text_width + margin*4;
box_height = text_height + margin*2;
[box_width, box_height]

Настройки отступов по вкусу. Название слоя с текстом в вашем случае будет иным - не забудьте его изменить или добавьте указать по индексу, чтобы каждый раз не менять название.

Последний код в измененном виде взят с просторов интернета.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы