Сведения о выражениях

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

С помощью выражений можно создавать связи между свойствами слоя и использовать ключевые кадры конкретного свойства для создания динамической анимации других слоев. Например, можно использовать инструмент «Лассо» для связи свойств пути таким образом, чтобы маска брала свое начало в штрихе кисти или объекте слоя-фигуры.

Язык выражений основан на стандартном языке JavaScript, но для использования выражений знание JavaScript не требуется. Выражения можно создавать с помощью инструмента «Лассо» или путем копирования простых примеров и изменения их согласно требованиям.

Примечание.

Существует два источника примеров выражений — это шаблонный проект Expression Sampler (Выборщик выражений) (Файл > Просмотр шаблонов проектов) и шаблоны настроек анимации в категории «Поведения» (Анимация > Просмотр шаблонов настроек).

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

После добавления выражения к свойству можно продолжить добавлять или изменять ключевые кадры свойства. Выражение может принимать значение свойства, как это определено соответствующим ключевым кадром, и использовать эти входные данные для создания новых, измененных значений. Например, следующее выражение свойства «Поворот» конкретного слоя добавляет 90 градусов к значению свойства «Поворот» в дополнение к движению по ключевым кадрам:

  value + 90

Некоторые методы, такие как покачивание, работают непосредственно со значениями кадрированного свойства. (См. раздел Атрибуты и методы свойства (справочник по выражениям).)

Следующее выражение свойства слоя «Положение» сохраняет движение по ключевым кадрам слоя, что приводит к его незначительному покачиванию:

  wiggle(10, 10)

Примечание.

Использовать выражение покачивания часто бывает гораздо удобнее и быстрее, чем использовать инструмент «Колебание».

При анимировании текста можно использовать инструмент выбора выражений для указания степени воздействия свойства аниматора на каждый текстовый символ. К группе аниматоров можно добавить один или несколько инструментов выбора «Выражение», а сама группа может содержать одно или несколько свойств.

Работа с выражениями

Целые выражения можно вводить самостоятельно вручную или с помощью меню языка выражения. Также можно создать выражение с помощью инструмента «Лассо» или вставить его из образца или другого свойства.

Все действия с выражениями можно выполнить на панели «Таймлайн», однако иногда удобнее перетащить инструмент «Лассо» к свойству на панели «Элементы управления эффектами». Ввод и изменение выражений выполняются в поле выражений, текстовом поле изменяемого размера на диаграмме времени. Поле выражений находится рядом со свойством в режиме панели «Слой», также оно отображается в нижней части редактора диаграмм в режиме «Редактор диаграмм». Выражение можно ввести в редакторе текста, а затем скопировать его в поле выражений. При добавлении выражения к свойству слоя выражение по умолчанию отображается в поле выражений. Выражение по умолчанию по сути не выполняет никакой функции, но задает значение свойства самому себе, что упрощает самостоятельную корректировку выражения.

Интерфейс выражения на панели «Таймлайн» в режиме панели «Слой»
Интерфейс выражения на панели «Таймлайн» в режиме панели «Слой»

A. Переключатель «Активировать выражение» B. Кнопка «Показать диаграмму после выражения» C. Инструмент «Лассо» D. Меню языка выражения E. Поле выражения 

При редактировании выражения все типы предпросмотра временно недоступны; в нижней части активных панелей, из режима редактирования текста которых требуется выйти, отображается красная полоса.

Значения свойства, которое содержит выражение, отображаются красным или розовым цветом.

Лучше всего начать работу с выражениями с создания простого выражения с помощью инструмента «Лассо», а затем настроить поведение выражения, используя простые математические операции, приведенные в таблице ниже.

Символ

Функция

+

Сложение

-

Вычитание

/

Деление

*

Умножение

*-1

Действие, противоположное исходному, например движение против часовой стрелки вместо движения по часовой стрелке

К примеру, можно удвоить результат, добавив *2 в конец выражения; или можно разделить результат пополам, добавив /2 в конец выражения.

В процессе развития навыков работы с выражениями можно комбинировать эти простые действия и выполнять даже более сложные операции. Например, можно добавить /360*100 в конец выражения, чтобы изменить его диапазон с 0-360 на 0-100. Это изменение будет полезно, если требуется преобразовать значения 360-градусной круговой шкалы в ползунковую шкалу измерения в процентах.

Меню языка выражения на панели «Таймлайн» содержит языковые элементы, относящиеся к After Effects, которые можно использовать в выражении. Это меню полезно для определения подходящих элементов и их правильного синтаксиса. Используйте его в качестве справки по доступным элементам. При выборе любого объекта, атрибута или метода в меню After Effects автоматически добавляет его в поле выражений в точке вставки. Если в поле выражения выделен текст, он будет заменен новым текстом выражения. Если точка вставки находится не в поле выражения, то новый текст выражения заменит весь текст в поле.

В меню языка выражения содержатся аргументы и значения по умолчанию. Это правило позволяет запомнить, какими элементами можно управлять при написании выражения. Например, в меню языка метод покачивания в категории «Свойство» имеет форму wiggle(freq, amp, octaves=1, amp_mult=.5, t=time). Пять аргументов перечислены в скобках за выражением wiggle. Знак = в последних трех аргументах указывает на то, что использование этих аргументов является необязательным. Если им не задать значения, значениями по умолчанию для них будут являться 1, 5 и текущее время соответственно.

Примечание.

Замените имена аргументов, написанные в меню языка выражения, фактическими значениями.

Джефф Алмасол (Jeff Almasol) предоставляет сценарий, который автоматически обрабатывает выражения, внося определенные изменения. Например, сценарий можно использовать для автоматического удаления или активации отключенных выражений. Дополнительные сведения можно найти на веб-сайте Джеффа Алмасола (Jeff Almasol) Redifinery.

Добавление, отключение, связывание или удаление выражения

  • Чтобы добавить выражение к свойству, выберите свойство на панели «Таймлайн» и выполните команду «Анимация» > «Добавить выражение» или нажмите клавиши ALT+SHIFT+= (Windows) или OPTION+SHIFT+= (Mac OS), или нажмите кнопку с секундомером, удерживая нажатой клавишу ALT (Windows) или OPTION (Mac OS) рядом с именем свойства на панели «Таймлайн» или «Элементы управления эффектами».
  • Чтобы связать набор свойств слоев и композиций, используйте ссылки свойств.
    Выделите одно свойство или набор свойств, затем выберите «Редактирование» > «Копировать со ссылками свойства» или «Редактирование» > «Копировать со ссылками относительных свойств», затем вставьте в любой слой композиции. Вставленные свойства остаются подключенным к слою, из которого они скопированы, так что изменения исходного свойства отражаются в экземплярах вставленных ссылок свойств.
    Чтобы создать дубликаты, которые будут отражать изменения, внесенные в оригинал, можно даже скопировать и вставить весь слой со ссылками на свойства.

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

    Результат копирования свойства «Положение» слоя командой «Копировать со ссылками относительного свойства» имеет следующий вид:

    thisComp.layer("control_layer").transform.position

    Результат копирования свойства «Положение» слоя командой «Копировать со ссылками относительного свойства» имеет следующий вид, в выражении для которого содержится конкретная ссылка на исходную композицию слоя:

    comp("source_comp").layer("control_layer").transform.position

  • Чтобы временно отключить выражение, нажмите кнопку «Активировать выражение» . Когда выражение будет отключено, на переключателе появится косая черта .
  • Чтобы удалить выражение из свойства, выберите свойство на панели «Таймлайн» и выполните команду «Анимация» > «Удалить выражение» или нажмите клавиши ALT+SHIFT+= (Windows) или OPTION+SHIFT+= (Mac OS), или нажмите кнопку с секундомером, удерживая нажатой клавишу ALT (Windows) или OPTION (Mac OS) рядом с именем свойства на панели «Таймлайн» или «Элементы управления эффектами».

Редактирование выражения с помощью инструмента «Лассо»

При отсутствии навыков работы с языком выражений JavaScript или After Effects преимуществами выражений все же можно воспользоваться, применив инструмент «Лассо». Просто перетащите инструмент «Лассо» от одного свойства к другому для связи свойств с выражением и введите текст выражения в поле выражения в точке вставки. Если в поле выражения выделен текст, он будет заменен новым текстом выражения. Если точка вставки находится не в поле выражения, то новый текст выражения заменит весь текст в поле.

Перетаскивание инструмента «Лассо» на свойство
Перетащите инструмент «Лассо» к свойству, чтобы создать связь со значением свойства.

Можно перетащить инструмент «Лассо» к имени или значению свойства. При перетаскивании инструмента к имени свойства в результирующем выражении отобразятся все значения в виде одного значения. Например, при перетаскивании инструмента «Лассо» к имени свойства «Положение» отобразится следующее выражение:

  thisComp.layer("Layer 1").transform.position

При перетаскивании инструмента «Лассо» к одному из значений компонента свойства «Положение» (такому как значение Y) отобразится следующее выражение, в котором обе координаты X и Y свойства будут связаны со значением свойства «Положение»:

  temp = thisComp.layer("Layer 1").transform.position[1]; 
  [temp, temp]

Если слой, маска или эффект, к которому перетащен инструмент «Лассо», не обладают уникальным именем в их локальном контексте, After Effects переименует его. Например, если имеется две или более масок с именем «Маска» в одном и том же слое и вы перетащили инструмент «Лассо» к одной из них, After Effects изменит ее имя на «Маска 2».

Формат выражений, созданных с помощью инструмента «Лассо», определяется установкой «Лассо выбора выражения выполняет запись компактного англоязычного текста» — «Правка» > «Установки» > «Общие» (Windows) или «After Effects» > «Установки» > «Общие» (Mac OS). По умолчанию инструмент «Лассо» создает англоязычные выражения, использующие имена свойств во время их отображения на панели «Таймлайн» для свойств, находящихся в выражении. Так как эти имена закодированы в приложении и никогда не изменяются, эти выражения могут выполняться, когда After Effects работает на другом языке. Любые имена свойства, которые можно изменить, заключены в двойные кавычки и не зависят от языка программы. Если вы не планируете обмениваться своими проектами на разных языках, можно отключить эту установку. Эта установка не влияет на имена или свойства эффектов.

Ниже приведен пример компактного англоязычного текста:

  thisComp.layer("Layer 1").transform.position

А вот то же самое выражение в форме развернутого англоязычного текста:

  thisComp.layer("Layer 1")("Transform")("Position")

Примечание.

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

  1. Перетащите инструмент «Лассо» к другому свойству на панели «Таймлайн» или «Элементы управления эффектами».
  2. При необходимости измените выражение по умолчанию в поле выражения.

Примечание.

При использовании инструмента «Лассо» для создания выражения, ссылающегося на слой, который имеет то же имя, что и другой слой в той же композиции, имя целевого слоя будет изменено. Имя нового слоя – это имя старого слоя с числом в конце. Это изменение необходимо для того, чтобы выражение однозначно ссылалось на одиночный слой в композиции.

Редактирование выражения вручную

  1. Войдите в режим редактирования текста, щелкнув поле выражения.

    Примечание.

    При переходе в режим редактирования текста выбирается все выражение. Для дополнения выражения щелкните область в выражении, чтобы разместить точку вставки, в противном случае заменяется все выражение полностью.

  2. Вводить текст и редактировать его в поле выражения можно также с помощью меню языка выражения.

    Примечание.

    Для просмотра всех строк выражения перетащите нижнюю или верхнюю часть поля выражения, чтобы изменит его размер.

  3. Для выхода из режима редактирования текста и активации выражения выполните одно из предложенных ниже действий.
    • Нажмите клавишу ВВОД на цифровой клавиатуре.

    • Щелкните за пределами поля выражения.

Пример. Использование справочника языка выражения для написания выражения

Следуйте указаниям в этом примере, чтобы научиться пользоваться справочником языка выражения After Effects для написания выражений. Выражение, созданное в этом примере, связывает свойство «Положение» сплошного слоя 2 со свойством «Положение» сплошного слоя 1 при сдвиге смещения сплошного слоя 2 на 2 секунды от сдвига сплошного слоя 1.

  1. Создайте два слоя со сплошной заливкой: «Сплошной 1» и «Сплошной 2».

  2. Анимируйте значения свойства «Положение» для слоя «Сплошной 1» с помощью ключевых кадров. (См. раздел Сведения об анимации, ключевых кадрах и выражениях).

  3. Выберите свойство «Положение» для слоя «Сплошной 2» и выполните команду «Анимация» > «Добавить выражение» или, удерживая клавишу ALT (Windows) или OPTION (Mac OS), нажмите кнопку секундомера для этого свойства. По умолчанию отобразится следующее выражение:

      transform.position
  4. Введите следующий текст непосредственно над текстом transform.position:

      thisComp
  5. Элемент thisComp — это глобальный атрибут, значением которого является объект композиции, представляющий собой текущую композицию. Чтобы определить, что может следовать за текстом thisComp в выражении, найдите в значении возврата текст thisComp в разделе Глобальные объекты, атрибуты и методы (справочник выражений).

    Обратите внимание, что thisComp возвращает объект композиции. В разделе Атрибуты и методы композиции (справочник выражений) найдите, какие атрибуты и методы можно использовать с объектом композиции. Одним из вариантов является layer(index). Индекс (число) внутри скобок определяет слой, который требуется использовать. В этом примере подразумевается, что слой «Сплошной 1» является первым слоем в композиции. Для извлечения значений из первого слоя в активной композиции введите .layer(1) в конце выражения, чтобы получился следующий текст:

      thisComp.layer(1)
  6. Взгляните на ссылку элементов выражения, чтобы убедиться, что layer(index) возвращает объект слоя. В разделе Общие атрибуты и методы слоя (справочник выражений) найдите элемент, который необходимо использовать. Например, если требуется получить значения свойства «Положение» для слоя, введите текст .position в конце выражения для получения следующего текста:

      thisComp.layer(1).position
  7. В разделе Общие атрибуты слоя и методы (справочник выражений) можно увидеть, что атрибут position возвращает свойство. В разделе Атрибуты и методы свойства (справочник выражений) найдите, какой временной коэффициент можно добавить к выражению. Чтобы добавить конкретное время, например текущее время плюс 2 секунды, введите текст .valueAtTime(time+2) в конце выражения, чтобы получить следующий текст:

      thisComp.layer(1).position.valueAtTime(time+2)
  8. В разделе Атрибуты и методы свойства (справочник выражений) указано, что метод valueAtTime возвращает число или массив. Когда выражение возвращает число, массив или логическое значение (истина или ложь), добавлять другие атрибуты или методы к выражению нельзя (однако можно добавлять знаки арифметических операций, такие как +, -, * и /).

Отображение выражений и диаграммы выражений

В режиме «Редактор диаграмм» одно поле выражения отображается в виде окна с изменяемым размером в нижней части «Редактора диаграмм», в котором отображается выражение для выбранного свойства. Чтобы отобразить несколько полей выражения одновременно, панель «Таймлайн» должна находиться в режиме панели «Слой».

Примечание.

Для переключения между режимом панели «Слой» и режимом «Редактор диаграмм» используйте клавиши SHIFT+F3.

  • Для отображения только свойств с выражениями выберите один или несколько слоев и нажмите ЕЕ.
  • Для отображения поля выражения в «Редакторе диаграмм» выберите команду «Показать редактор выражений» в меню «Выбрать тип и параметры диаграммы» в нижней части редактора диаграмм. При добавлении выражения к свойству отображается редактор выражений независимо от типа примененных настроек.

Примечание.

Чтобы изменить размер поля выражения, перетащите нижний край поля вверх или вниз.

  • Чтобы увидеть, каким образом выражение изменяет значение или диаграмму скорости, нажмите кнопку «Показать диаграмму после выражения» во время отображения значения или диаграммы скорости в «Редакторе диаграмм».

    На затемненной диаграмме отобразится значение или скорость до применения выражения, а на яркой диаграмме — значение или скорость после применения выражения. При включении наложения диаграммы для свойства «Положение» также изменяется отображение пути движения на панели «Композиция», что позволяет видеть путь, на который воздействует выражение.

Примечание.

Для поиска выражений и других компонентов свойства можно использовать поле поиска на панели «Таймлайн». Если строка поиска отображается в выражении, свойство и соответствующие группы со свойством и слоем отображаются в отфильтрованном наборе результатов поиска.

Написание выражений для исходного текста

Свойство «Исходный текст» текстового слоя преобразуется выражениями в виде строки JavaScript. Можно использовать инструмент «Лассо» для извлечения исходного текста из другого текстового слоя, однако используется при этом только стиль первого символа целевого слоя.

Дополнительные сведения об объекте строки JavaScript см. в справке по JavaScript.

Для указания начала новой строки текста в строковом выражении можно использовать следующую комбинацию символов «\r». Например, чтобы скопировать исходный текст из одного слоя в тот же самый слой и повторить эту операцию для всех прописных символов в новой строке, используйте следующее выражение:

  text.sourceText + "\r" + text.sourceText.toUpperCase()

Добавление текстового слоя к композиции и добавление выражения к свойству «Исходный текст» помогает изучить значения свойств других слоев. Например, следующее выражение в свойстве «Исходный текст» сообщает имя и значение свойства «Непрозрачность» следующему слою в порядке размещения слоев:

  thisComp.layer(index + 1).name + "\rOpacity = " + thisComp.layer(index + 1).opacity.value

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

  source_footage_name = ""; 
  for (i = 1; i <= thisComp.numLayers; i++){ 
      if (i == index) continue; 
      my_layer = thisComp.layer(i); 
      if (! (my_layer.hasVideo && my_layer.active)) continue; 
      if (time >= my_layer.inPoint && time < my_layer.outPoint){ 
          try{ 
              source_footage_name = my_layer.source.name; 
          }catch(err1){ 
              source_footage_name = my_layer.name 
          } 
          break; 
      } 
  } 
  source_footage_name

На веб-сайте Red Giant TV Аарон Рабинович (Aharon Rabinowitz) предоставляет видеоруководство и примеры выражений, описывающие принципы анимации игровых очков в видеоигре с помощью свойства «Исходный текст» и эффекта «Ползунок» (эффект «Элементы управления выражением»).

 

Добавление комментариев к выражению

Если вы написали сложное выражение и хотите использовать его в будущем (или поделиться им с кем-то), необходимо добавить комментарии с описанием функциональности выражения и особенностей работы его частей.

Сохранение и повторное использование выражений

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

Можно определять собственные функции в выражениях с помощью обычного синтаксиса функции JavaScript. В этом примере определенная функция вычисляет среднюю величину двух значений, а в последней строке используется следующая функция:

  function average(a, b) 
  { 
    return (a + b) / 2; 
  } 
  average(position, thisComp.layer(1).position);

Примечание.

Каждую функцию необходимо определять полностью внутри каждого выражения, в котором она используется. Глобальной библиотеки функций, которые можно добавлять к выражению, не существует.

Если требуется сохранить выражение для использования в другом проекте, необходимо добавить комментарии к выражению. (См. раздел Добавление комментариев к выражению.) Для изменения значения в одном месте, а не в нескольких местах необходимо использовать переменные.

Например, это выражение содержит несколько комментариев в начале, в которых приводится описание функциональности выражения; краткий комментарий, расположенный за переменной, объясняет функции этой переменной:

  /*  This expression on a Source Text property reports the name 
      of a layer and the value of its Opacity property. */  
    
  var myLayerIndex = 1; // layer to inspect, initialized to 1, for top layer  
    
  thisComp.layer(myLayerIndex).name + ": \rOpacity = " +   thisComp.layer(myLayerIndex).opacity.value

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

Можно скопировать выражение из свойства слоя с ключевыми кадрами свойства или без них.

  • Чтобы скопировать выражение и ключевые кадры из одного свойства в другие свойства, выберите свойство исходного слоя на панели «Таймлайн», скопируйте свойство слоя, выберите свойства целевого слоя и вставьте данные.
  • Чтобы скопировать выражение из одного свойства в другие свойства без копирования ключевых кадров, выберите исходное свойство, выполните команду «Правка» > «Копировать только выражение», выберите целевые свойства и вставьте данные.

Примечание.

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

Примечание.

При вставке ключевых кадров и других элементов можно вставить элемент в целевой слой и подождать пока After Effects определит, какое свойство должно быть целевым для вставки. Это происходит, например, при копировании свойств «Положение» из одного слоя в другой, при этом целевое свойство необходимо выбирать самостоятельно при вставке выражения из свойства «Положение» в свойство «Масштаб».

Пол Терслей (Paul Tuersley) предоставляет сценарий pt_ExpressEdit для редактирования выражений и управления ими.

Эффекты элементов управления выражениями

Используйте эффект «Элементы управления выражением» для добавления элемента управления, который можно использовать для управления значениями одного или нескольких свойств путем связывания свойства с элементом управления, использующим выражения. Отдельный элемент управления может влиять на несколько свойств сразу.

В именах эффектов «Элементы управления выражением» указано, какой тип элемента управления свойством они предоставляют: «Элемент управления угла», «Элемент управления "Флажок"», «Элемент управления цветом», «Элемент управления слоя», «Элемент управления точкой», «Элемент правления "Ползунок"». В After Effects CS5.5 и более поздних версиях есть также эффект «Элемент управления 3D-точки».

Примечание.

При применении шаблона настроек анимации из категории «Шаблоны настроек анимации» > «Формы» > «Фоны» на панели «Элементы управления эффектами» отображается настраиваемый эффект «Элемент управления анимированной фигуры». Этот пользовательский эффект представляет собой специальный эффект элемента управления выражением, созданный специально для шаблонов настроек анимации. Этот эффект можно скопировать и вставить в другие слои или сохранить его в качестве шаблона настроек анимации, чтобы применить его потом.

Работа с эффектами «Элементы управления выражением» осуществляется так же, как и работа с другими эффектами, например перетаскиванием эффекта в слой с панели «Эффекты и шаблоны».

Можно применять эффекты «Элементы управления выражением» к любому слою, однако бывает полезно применить их к пустому слою, который можно использовать просто в качестве управляющего слоя. Затем можно добавить выражения к свойствам других слоев, чтобы взять входные данные из этого управляющего слоя. Например, можно добавить эффект «Элемент управления "Ползунок"» к пустому слою (Пустой 1), а затем применить это выражение к свойствам «Положение» нескольких слоев:

  position+[0,10*(index-1)*thisComp.layer("Null 1").effect("Slider Control")("Slider")]

В этом примере при перетаскивании ползунка каждый слой с этим выражением сдвигается. Слои с большими порядковыми номерами (слои в нижней части панели «Таймлайн») сдвигаются на большее расстояние, чем слои с более низкими порядковыми номерами при интервалах в 10 пикселей. Можно задать ключевые кадры для ползунка в пустом слое, а все остальные слои соответствующим образом анимировать.

Зачастую лучше переименовать каждый экземпляр эффекта «Элемент управления выражением», чтобы определить его назначение. Например, при присвоении экземпляру эффекта «Элемент управления цветом» имени «цвет неба» проще определить, чем именно управляет эффект. Изменение имени каждого экземпляра эффекта «Элемент управления выражением» выполняется также, как и для любого другого эффекта: выберите экземпляр на панели «Таймлайн» или «Элементы управления эффектами» и нажмите клавишу ВВОД на основной клавиатуре (Windows) или RETURN (Mac OS).

Примечание.

Для модификации диапазона управления, щелкните подчеркнутое значение свойства управления правой кнопкой мыши (Windows) или левой кнопкой мыши, удерживая нажатой клавишу CONTROL (Mac OS), и выберите пункт «Изменить значение» в контекстном меню.

Дополнительные ресурсы об эффектах «Элементы управления выражением»

Ежи Дрозда мл. (Jerzy Drozda, Jr.) (Maltaannon) предоставляет на веб-сайте Motionworks простое общее описание эффекта «Элемент управления угла» и эффектов «Элементы управления выражением».

Тодд Коприва (Todd Kopriva) предоставляет инструкции по использованию метода sampleImage и эффекта «Элемент управления точкой» для управления цветами отдельной точки при корректировке цвета в своем блоге After Effects Region of Interest.

Преобразование выражения в ключевые кадры

В некоторых случаях может понадобиться преобразовать выражение в ключевые кадры. Например, если требуется зафиксировать значения в выражении, можно преобразовать выражение в ключевые кадры, а затем соответствующим образом скорректировать ключевые кадры. Если вычисление выражения занимает много времени, можно преобразовать его в ключевые кадры, чтобы оно обрабатывалось быстрее. При преобразовании выражения в ключевые кадры After Effects вычисляет выражение, создавая ключевой кадр в каждом кадре, а затем отключает выражение.

  1. На панели «Таймлайн» выберите свойство, в котором записано выражение, а затем выполните цепочку команд «Анимация» > «Помощник в работе с ключевыми кадрами» > «Преобразовать выражение в ключевые кадры».

Язык выражений

Язык выражений After Effects основан на JavaScript 1.2 с расширенным набором встроенных объектов. After Effects использует только стандартный язык JavaScript 1.2, а не браузерные расширения. After Effects содержит собственный набор объектов расширения, таких как «Слой», «Композиция», «Видеоряд» и «Камера», которые можно использовать для извлечения максимальной выгоды из работы со значениями в проекте After Effects.

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

Дополнительные сведения о JavaScript, см. в справке по JavaScript.

При создании выражений следует помнить следующее.

  • Значение выражения является значением последнего вычисленного оператора.

  • JavaScript – это регистрозависимый язык.

  • Для разделения операторов или строк необходимо использовать точку с запятой.

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

В JavaScript значение, хранимое в объекте, называется свойством. Однако в After Effects термин свойство используется в отношении компонентов слоя, как это определено на панели «Таймлайн». По этой причине в After Effects свойства JavaScript рассматриваются в качестве методов или атрибутов. Как правило, отличие между методом и атрибутом заключается в том, что метод обычно выполняет какую-либо операцию для создания своего выходного (возвратного) значения, тогда как атрибут просто ссылается на существующее значение для определения своего выходного (возвратного) значения. Отличить метод от атрибута проще всего по наличию скобок после имени метода, в которые заключены любые входные аргументы метода.

Объект — это элемент, который может содержать другие объекты, атрибуты и методы. Композиции, слои и видеоряд — это примеры объектов. В частности, композиции, слои и видеоряд являются глобальными объектами, т. е. к ним можно устанавливать ссылку в любом контексте не ссылаясь на какой-либо объект более высокого уровня.

Получение доступа к атрибутам и методам

Для получения доступа к атрибутам и методам свойств слоя используется язык выражений. Для получения доступа к значению используйте цепочку ссылок объекта, разделенных точкой (.). Для построения цепочки из ссылок объекта с пропуском уровня слоя (например, для отсылки к свойствам эффекта, маскам или аниматорам текста) можно использовать скобки. Например, чтобы связать свойство «Непрозрачность» в слое А со свойством «Размытость» эффекта «Размытие по Гауссу» в слое В, введите следующее выражение в поле выражения для свойства «Непрозрачность» для слоя А:

  thisComp.layer("Layer B").effect("Gaussian Blur")("Blurriness")

При чтении этого выражения слева направо выполняется переход с более высокого уровня, содержащего объект, к конкретному свойству:

  • Используемый глобальный объект ссылается на текущую композицию thisComp.

  • Ссылка к определенному объекту слоя в этой композиции устанавливается по имени слоя layer("Layer B").

  • Ссылка к определенному объекту эффекта в этом слое устанавливается по имени эффекта: effect("Gaussian Blur").

  • Ссылка к определенному свойству эффекта в этом эффекте устанавливается по имени эффекта: ("Blurriness").

Для компонента n многомерного свойства, такого как компонент «Y» точки управления эффектом добавьте [n] в конце, как показано ниже:

  thisComp.layer("Layer B").effect("Advanced Lightning")("Origin")[1]

Объект выражения по умолчанию является свойством, по которому выполняется написание выражения, со следующим за ним слоем, содержащим выражение, поэтому свойство указывать не требуется. Например, выражение покачивания, написанное по свойству слоя «Положение», может выглядеть следующим образом:

  wiggle(5, 10) 
  position.wiggle(5, 10)

Добавьте слой и свойство при их извлечении из слоя и свойства, по которым написано выражение. Например, выражение, написанное по свойству «Непрозрачность» слоя В, связывающее его со свойством «Поворот» слоя А, будет выглядеть следующим образом:

  thisComp.layer("Layer A").rotation

Примечание.

Чтобы ознакомиться с другими примерами работы выражений, используйте инструмент «Лассо» для связывания одного свойства слоя с другим и изучите созданные выражения.

На своем веб-сайте Redefinery Джефф Алмасол (Jeff Almasol) предоставляет сценарий, с помощью которого можно узнать, как следует работать с любым свойством в выражениях.

Массивы и многомерные свойства

Массив – это тип объекта, хранящий упорядоченный набор чисел. Массив отображается в виде списка чисел, разделенных запятыми и заключенных в скобки, как в следующем примере:

  [10, 23]

Объект массива можно присвоить переменной, чтобы было проще ссылаться к значениям массива в других областях выражения. Например:

  myArray = [10, 23]

Размер объекта массива – это число элементов в массиве. Размер массива myArray составляет 2. Разные свойства в After Effects имеют разные размеры в зависимости от числа аргументов значения, которым они обладают. В языке выражений значения свойств являются единичными значениями (объекты числа) либо массивами (объекты массива).

В следующей таблице приведены примеры некоторых свойств и их размеры.

Размеры

Свойство

1

Поворот °

Непрозрачность %

2

Масштаб [X = ширина, Y = высота]

Положение [X, Y]

Опорная точка [X, Y]

Уровни аудио [влево, вправо]

3

Масштаб [ширина, высота, глубина]

Трехмерное положение [X, Y, Z]

Трехмерная опорная точка [X, Y, Z]

Ориентация [X, Y, Z]

4

Цвет [красный, зеленый, синий, альфа]

Получить доступ к отдельным элементам объекта массива можно с помощью скобок и порядкового номера для указания требуемого элемента. Элементы в объекте массива нумеруются, начиная с нуля. Согласно предыдущему примеру, размер массива myArray[0] равен 10, а размер массива myArray[1] равен 23.

Следующие два выражения идентичны:

  [myArray[0], 5] 
  [10, 5]

Массивы свойства «Положение» нумеруются следующим образом:

  • position[0] – это координата X положения.

  • position[1] – это координата Y положения.

  • position[2] – это координата Z положения.

Цвета представлены в виде 4-размерных массивов [красный, зеленый, синий,альфа]. В проектах с разрядностью цвета 8 бит на канал или 16 бит на канал каждое значение в массиве цветов находится в диапазоне от 0 (черный) до 1 (белый). Например, красный может находиться в диапазоне от 0 (нет цвета) до 1 (красный). Таким образом, [0,0,0,0] соответствует черному цвету и прозрачности, а [1,1,1,1] — белому цвету и непрозрачности. В проектах с разрядностью цвета 32 бит на канал допускаются значения ниже 0 и более 1.

При использовании индекса, большего, чем индекс компонента самого высокого размера в объекте массива, After Effects сообщит об ошибке. Например, myArray[2] приводит к ошибке, ноposition[2] возвращает координату Z положения.

Многие свойства и методы в языке выражений After Effects обрабатывают объекты массива в качестве аргументов или возвращают их в виде значений. Например, thisLayer.position является объектом массива, который является 2-размерным или 3-размерным в зависимости от того, каким является слой: двух- или трехмерным.

Если требуется написать выражение, в котором будет сохраняться значение Y анимации свойства «Положение», а значение X будет зафиксировано на 9, следует создать следующее выражение:

  y = position[1]; 
  [9,y]

Выражение можно сократить еще:

  [9, position[1]]

Это важный аспект, поэтому давайте рассмотрим еще один пример. Если требуется совместить значение положения X из слоя А со значением положения Y из слоя В, необходимо составить следующее выражение:

  x = thisComp.layer("Layer A").position[0];  
  y = thisComp.layer("Layer B").position[1];  
  [x,y]

Можно создать выражение, которое будет ссылаться только на одно значение в массиве 2D- или 3D-свойства. По умолчанию используется первое значение, пока не будет указано другое. Например, при перетаскивании инструмента «Лассо» от свойства «Поворот» слоя А к свойству «Масштаб» слоя В отобразится следующее выражение:

  thisComp.layer("Layer B").scale[0]

По умолчанию это выражение использует первое значение свойства «Масштаб», которое является шириной. Если вместо этого требуется использовать значение высоты, перетащите инструмент «Лассо» непосредственно ко второму значению, а не к имени свойства или измените выражение следующим образом:

  thisComp.layer("Layer B").scale[1]

И наоборот, при перетаскивании инструмента «Лассо» от свойства «Масштаб» слоя В к свойству «Поворот» слоя А After Effects автоматически создает переменную, присваивает ей одномерное свойство «Поворот», а затем использует эту переменную для обоих размеров свойства «Масштаб»:

  temp = thisComp.layer(1).transform.rotation; 
  [temp, temp]

Векторы

В After Effects многие свойства и методы используют или возвращают векторы. After Effects ссылается на массив как на вектор, если он представляет собой точку или направление в пространстве. Например, After Effects описывает положение как возврат вектора.

Однако, несмотря на то, что функция типа audioLevels возвращает двухмерное значение (уровни левого и правого каналов), она не носит название вектор, так как она не представляет собой точку или направление. Некоторые функции в After Effects принимают аргументы вектора, но они обычно бывают полезны, только если передаваемые значения представляют собой направление. Например, cross(vec1, vec2) вычисляет третий вектор, находящийся под правильными углами относительно входных векторов. Векторное произведение полезно, когда vec1 и vec2 являются векторами, представляющими собой направления в пространстве, но не только когда они представляют две произвольные коллекции чисел.

Индексы и метки

Индексация свойств «Слой», «Эффект» и «Маска» в After Effects начинается с 1. Например, первый слой на панели «Таймлайн» – это layer(1).

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

  effect("Colorama").param("Get Phase From")  
  effect(1).param(2)

Время выражения

Время в выражении всегда находится в пределах времени композиции (не времени слоя) и измеряется в секундах. Время по умолчанию для любого выражения представляет собой текущее время композиции, во время которого выполняется вычисление выражения. В следующих выражениях используется время композиции по умолчанию; также выражения возвращают одинаковые значения:

  thisComp.layer(1).position 
  thisComp.layer(1).position.valueAtTime(time)

Для использования относительного времени добавьте инкрементное значение времени к аргументу time. Например, чтобы значение «Положение» было на 5 секунд меньше текущего времени, используйте следующее выражение:

  thisComp.layer(1).position.valueAtTime(time-5)

В ссылках времени по умолчанию к свойствам во вложенных композициях используется исходное время по умолчанию композиции, а не перераспределенное время. Однако при использовании функции источника для получения свойства используется перераспределенное время.

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

  comp("nested composition").layer(1).position

Однако при осуществлении доступа к слою 1 с помощью функции источника значения положения будут использовать перераспределенное время:

  thisComp.layer("nested composition").source.layer(1).position

Примечание.

При использовании определенного времени в выражении After Effects будет игнорировать перераспределенное время.

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

Ошибки выражения

Когда не удается вычислить выражение, ошибки выражения отображаются в баннере предупреждения внизу на панелях «Композиция» и «Слой». After Effects не отключает выражение, а продолжает его вычисление. Баннер с предупреждением отображается, пока сохраняется ошибка выражения, то есть пока выражение не будет исправлено или отключено вручную.

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

Пример ошибки выражения
Пример ошибки выражения

A. Кнопки со стрелками вправо или влево B. Показать выражение C. Развернуть/свернуть предупреждение 
  • При нажатии стрелки влево или вправо можно просмотреть предыдущую или следующую ошибку проверки выражения, если их несколько.
  • Кнопка «Показать выражение» (увеличительное стекло) выводит свойство с ошибочным выражением на панели «Таймлайн». Если выражение находится в другой композиции, откроется эта композиция.
  • Кнопка «Развернуть/свернуть предупреждение» (стрелки вверх и вниз) показывает или скрывает текст ошибки.

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

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

Щелкните  рядом с выражением. Полный текст ошибки открывается в диалоговом окне.

Чтобы скрыть предупредительный баннер, выполните следующие действия.

Выберите After Effects CC (Mac OS) или «Редактирование» (Windows) > «Установки» > «Общие» и отключите параметр «Показать баннер с предупреждением, когда проект содержит ошибки выражений».

Когда этот параметр отключен, баннер с предупреждением остается скрытым даже в случае появления новой ошибки выражения.

Повторно включите этот параметр, чтобы просматривать ошибки выражений.

Ресурсы в Интернете

Многие примеры в этом разделе основаны на примерах выражений, предоставленных Дэном Эббертсом (Dan Ebberts). Дэн Эббертс (Dan Ebberts) также предлагает исключительную коллекцию типовых выражений и руководств для изучения работы с выражениями на своем веб-сайте MotionScript.

На форуме AE Enhancers можно найти множество примеров и сведения о выражениях, а также о сценариях и шаблонах настроек анимации.

Эта работа лицензируется в соответствии с лицензией Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported  На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

Правовые уведомления   |   Политика конфиденциальности в сети Интернет