3 заметки с тегом

текст

SourceText из имени композиции

Сегодня опять про титры. Бывает, когда в проекте их планируется целая куча. Набивать в них текст — долго и скучно. Нужно скопировать первую настроенную композицию с титром, открыть, перебить титры, скопировать, открыть, перебить. При этом работа настолько монотонна, что велик шанс что-то перепутать, сделать не в том порядке, и тогда какие-то титры будут дублироваться, а других — не будет вообще .

Что, если вместо этого, использовать названия композиций с панели Project? Сделать так, чтобы это

превратилось в это

Для этого нам понадобится использовать метод split(). Он разбивает текст на части и создаёт из этих частей массив, элементы которого мы и будем использовать.

Итак, в SourceText текстового слоя нужно прописать следующее:

thisComp.name.split(" - ")[0]

thisComp.name получает имя композиции, split() разбивает его на части. Если посмотреть на панель Project, то можно заметить, что в именах композиции имя и должность разделены дефисом. Достаточно указать этот дефис в скобках метода split(), чтобы получить массив, первым элементом которого ([0]) будет имя, а вторым ([1]) — должность.

thisComp.name.split(" - ")[0] // возвращает имя
thisComp.name.split(" - ")[1] // возвращает должность

Остаётся только прописать выражения в параметр SourceText текстовых слоёв и все необходимые данные будут отображаться автоматически. Теперь остаётся только копировать и переименовывать композицию, что гораздо проще, чем вводить все данные руками.

Оригинал статьи

2018   ae   выражения   оптимизация   текст

Новая версия скрипта для титровальной плашки

Некоторое время назад я опубликовал свой скрипт, создающий удобную для работы в After Effects титровальную плашку. А на днях — пост о том, как её можно ещё больше автоматизировать. И вот теперь, наконец, у меня дошли руки, чтобы доработать свой скрипт, чтобы он сразу из коробки умел понимать размеры текста внутри себя.

С момента последнего поста о скрипте, он уже прошёл несколько итераций, поэтому сейчас расскажу о всех новых функциях.

По аналогии с Wipe Out Horizontal и Wipe Out Vertical появились Wipe In Horizontal и Wipe In Vertical. Теперь можно заанимировать появление и исчезновение плашки через эти значения, а параметры Width и Height оставить без ключей — благодаря этому можно редактировать их значения и быть уверенным, что новых ненужных ключей не создастся и анимация не поедет.

Появился параметр Parent. Можно создать несколько копий одной плашки и указать у всех них в качестве родителя одну, теперь параметры высоты и ширины будут наследоваться от неё всеми остальными слоями. Например, можно разнести их по глубине или использовать один из слоёв как маску для какого-нибудь блика. Значения Wipe In / Wipe Out не наследуются, чтобы оставить больше простора для творчества.

Теперь, если прилинковать плашку к тексту и включить чекбоксы Use Parent Text Width и Use Parent Text Height, плашка начнёт автоматически изменять свои размеры в зависимости от размеров текстового слоя. Не обязательно при этом включать обе галочки. В этом режиме параметры Width и Height превращаются в контроллеры отступов слева/справа и сверху/снизу соответственно. Также пришлось добавить ещё один параметр Line Height, регулирующий высоту одной строки. Последнюю, придётся высчитывать вручную, для этого рекомендую собрать следующую композицию:

Выровняв слой по нижнему краю букв верхней строки, выставить Height (здесь — высота отступов сверху и снизу) на 0 и регулировать Line Height, пока нижний край плашки не поравняется с нижним краем букв второй строки. Всё, теперь надо умножить получившееся число на 2 и высота строки вычислена, можно собирать плашку в тот вид, в каком она должна быть. Плашка будет подстраиваться по высоте текста корректно.

Автоматические размеры под размер текста будут работать только при параметре Parent установленном на None.

Версия скрипта получила номер 1.4 и доступна для скачивания на странице загрузок.

Автоматические размеры плашки в зависимости от размеров текста внутри неё

Придумал тут, как улучшить свой скрипт, создающий параметрическую плашку для текста. Шейповый слой нужно привязать к текстовому слою, из которого скрипт будет брать значение ширины и, при желании, высоты текста. Затем в параметр Width нужно прописать следующий код:

text = thisLayer.parent.sourceRectAtTime(time,false); // Указываем родительский слой
w = text.width; // Достаём значение ширины
x = 150; // Указываем сумму отступов справа и слева в пикселях
w + x

Если нужно, регулировать плашку и по высоте, то есть два варианта

Вариант попроще

В параметр Height нужно прописать:

text = thisLayer.parent.sourceRectAtTime(time,false); // Указываем родительский слой
h = text.height; // Достаём значение высоты
x = 150; // Указываем сумму отступов сверху и снизу в пикселях
h + x

Минус этого способа — высота плашки будет меняться в зависимости от того, есть ли у букв в тексте выносные элементы. Буква «р» увеличит высоту плашки на несколько пикселей за счёт выносного элемента снизу. Заглавная «Ё» увеличит ещё на несколько пикселей за счёт двух точек над «Е».

Вариант посложнее

Чтобы высота плашки не зависела от наличия или отсутствия выносных элементов у букв в Height вместо предыдущего кода нужно прописать следующее:

text = thisLayer.parent.text.sourceText; // Указываем родительский слой
lines = text.split(/\r?\n|\r/); // Создаём массив из строк
count = lines.length; // Достаём количество строк из массива
x=60; // Указываем сумму отступов снизу и сверху
h = 130; // Прописываем высоту одной строки
count*h + x

Минус этого способа — понадобится несколько минут, чтобы вычислить высоту строки. Параметр Font Size, казалось бы, должен отвечать именно за это число, но нет. Поэтому рекомендую сперва установить x на 0 и поиграться со значениями. Если у кого-то есть идеи, как можно выяснить высоту строки не методом тыка, буду рад почитать в комментариях.

После всех этих манипуляций мы получаем пару связанных друг с другом слоёв, которую можно копировать сколько угодно раз, всё будет отлично работать.

2017   ae   выражения   скрипты   текст