Текст в боксах из внешнего файла с помощью выражений (expression) в After Effects. Узнайте, как импортировать строки из текстового файла и как использовать имена слоев, чтобы дублировать выражения.

Начало работы

Создаем новый текстовый файл с таким содержимым:

var text1 = “this is a string from outside of the box”;
var text2 = “split my text \r in two”;
var text3 = [“array strings”,”in a text file”];
var text4 = [1,134/255,33/255,1,”hello world”];

Здесь, в переменных мы можем хранить:  строки, значения, логическое значение (boolean), формулы или массивы.

Кстати, ‘\ г’ можно использовать, чтобы добавить разрыв строки.

Сохраните файл, и получите абсолютный путь к файлу.

Чтение текстового файла

Вы можете использовать плашки для текста из этой статьи: Плашки для текста с помощью выражений (expression) в After Effects

И потом, переименуйте оба слоя (текстовый и шейповый) в “text1” и “box1”.

При дублировании этих слоев, они будут автоматически увеличиваться до «text2» «box2», «Text3» «Box3», …

Добавим выражение для текстового слоя Text Layer (text1) > text > Source Text:

$.evalFile(“your path”);
eval(thisLayer.name)

Укажем в evalFile абсолютный путь к текстовому файлу.

$.evalFile(“absolute_path”) загружает данные из внешнего файла.
eval(variable name) указывает, какую переменную использовать для чтения.

Если изменить имя слоя на Text3 или text4, содержание текстового слоя изменится к соответствующей переменной из текстового файла. Если вы продублируете оба слоя, текст автоматически обновляется, но box все еще соответствует формату 1-го слоя текста, даже если вы связали слои с помощью parent.

Обновление выражений (expression) для шейпового слоя box

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

var target = “text” + thisLayer.name.substr(3,2) ;

 

var target = thisLayer.name.replace(“box”,”text”) ;

 

var target = “text” + thisLayer.name.slice(3,4) ;

Эти 3 метода дают одинаковый результат, «box1» становится «text1».

Для шейпового слоя вывести свойства с выражения, путем нажатия EE, при выделенном шейповом слое, и заменить выражения:

Для свойства size:

var target = "text" + thisLayer.name.substr(3,3) ;
var mytext = thisComp.layer(target);
[ mytext.sourceRectAtTime().width, mytext.sourceRectAtTime().height]

Для свойства position:

var target = "text" + thisLayer.name.substr(3,3) ;
var mytextY= thisComp.layer(target).sourceRectAtTime().top;
var mytextX= thisComp.layer(target).sourceRectAtTime().left;
var boxsize=content("Rectangle 1").content("Rectangle Path 1").size;
[mytextX+boxsize[0]/2, mytextY+boxsize[1]/2]

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

Процесс массивов

Можно хранить другие свойства в текстовом файле, используя числовые значения. В переменной «text4» есть массив RGBA, за которой следует строка: [1,134/255,33/255,1,”hello world”]

Добавим аниматор Color для текстового слоя

Добавим выражение (expression) для Fill Color:

$.evalFile(“your_path”);
var target = thisLayer.name;
[eval(target)[0],eval(target)[1],eval(target)[2],eval(target)[3]]

Первая строка обращается к текстовому файлу (не забудьте заменить your_path на абсолютный путь к текстовому файлу). Последняя строка использует значения, хранящиеся в позиции 0,1,2,3 как результат массива RGBA.

Если вы измените значения, сохраненные в текстовом файле, изменится цвет текста! Вам необходимо очистить память, чтобы заставить выражение обновится: Edit > Purge.

Источник: aexpr.wordpress.com

Полноценный видеокурс по After Effects и Моушн Дизайну

Узнать подробнее...