Многие примеры в этом разделе основаны на выражениях, предоставленных Дэном Эббертсом (Dan Ebberts).

Ресурсы в Интернете, посвященные примерам выражений

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

Колин Брейли (Colin Braley) предоставляет на своем веб-сайте руководство и пример проекта с описанием использования выражений для формирования естественного отражения слоем других слоев.

На форуме AE Enhancers есть множество примеров и полезная информация о выражениях, а также сценарии и шаблоны настроек анимации. В этой теме на форуме AE Enhancers Пол Терслей (Paul Tuersley) предоставляет руководство и пример проекта с описанием использования выражения для анимации нескольких слоев в скоплении.

Рик Джерард (Rick Gerard) предоставляет на своем веб-сайте пример катящегося по полу прямоугольного объекта, стороны которого соприкасаются с поверхностью пола.

Карл Ларсен (Carl Larsen) представляет на веб-сайте Creative COW видеоруководство, которое показывает, как использовать выражения и родительские связи, чтобы связать поворот колес с горизонтальным движением транспортного средства.

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

На веб-сайте Дж. Дж. Гиффорда (JJ Gifford) предоставлено несколько примеров проектов с описанием использования выражений.

Джерзи Дрозда-младший (Jerzy Drozda, Jr.) под ником Maltaannon опубликовал на своем веб-сайте видеоурок, в котором показано, как с помощью выражений создать индикатор громкости, использующий результаты преобразования звука из команды «Преобразовать аудио в ключевые кадры».

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

Пример выражения: вращение слоя по кругу

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

  1. Выделите слой, нажмите клавишу Р, чтобы найти свойство слоя «Положение» на панели «Таймлайн», а затем, удерживая нажатой клавишу ALT (Windows) или клавишу OPTION (Mac OS), щелкните секундомер слева от имени свойства.
  2. Введите следующее выражение в поле выражения:
      [(thisComp.width/2), (thisComp.height/2)] + [Math.sin(time)*50, -Math.cos(time)*50]

Пример выражения: поворот стрелок часов

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

  1. Импортируйте или создайте два длинных узких сплошных слоя: часовую стрелку и минутную стрелку. (См. раздел Слои сплошного цвета и элементы видеоряда сплошного цвета.)
  2. Разместите опорные точки на концах слоев. (См. раздел Опорные точки слоя.)
  3. Переместите слои так, чтобы опорные точки находились в центре композиции. (См. раздел Перемещение слоев в пространстве.)
  4. Задание ключевых кадров «Поворот» для часовой стрелки. (См. раздел Установка или добавление ключевых кадров.)
  5. Выберите свойство «Поворот» для минутной стрелки, а затем пункт «Анимация» > «Добавить выражение».
  6. Перетащите инструмент «Лассо» к свойству «Поворот» для часовой стрелки. Появится следующее выражение:
      thisComp.layer("hour hand").rotation
  7. Чтобы минутная стрелка вращалась в 12 раз быстрее часовой стрелки добавьте значение *12 в конце выражения следующим образом:
      thisComp.layer("hour hand").rotation*12

Пример выражения: размещение одного слоя между двумя слоями

С помощью этого выражения можно разместить и сохранить расположение одного слоя на равном расстоянии между двумя другими слоями.

  1. Начните с трех слоев. (См. раздел Создание слоев.)

  2. Анимация положения первых двух слоев на панели «Таймлайн». (См. раздел Пути движения.)

  3. Выделите третий слой, нажмите клавишу Р, чтобы найти свойство слоя «Положение», а затем, удерживая нажатой клавишу ALT (Windows) или клавишу OPTION (Mac OS), щелкните кнопку секундомера слева от имени свойства.
  4. Введите следующее выражение в поле выражения:
      (thisComp.layer(1).position + thisComp.layer(2).position)/2

Пример выражения: создание пути изображений

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

  1. Начните с двух сплошных слоев с масштабом около 30 % от размера композиции. (См. раздел Слои сплошного цвета и элементы видеоряда сплошного цвета.)
  2. Анимация положения первого слоя. (См. раздел Пути движения.)
  3. Выделите второй слой, нажмите клавишу Р, чтобы найти свойство слоя «Положение», а затем, удерживая нажатой клавишу ALT (Windows) или клавишу OPTION (Mac OS), щелкните кнопку секундомера слева от имени свойства.
  4. Введите следующее выражение в поле выражения:
      thisComp.layer(thisLayer, -1).position.valueAtTime(time - .5)
  5. Продублируйте последний слой пять раз. Для этого выделите его и, удерживая клавишу CTRL (Windows) или COMMAND (Mac OS), пять раз нажмите клавишу D.

Все слои повторяют один и тот же путь, а каждый из них отстает от предыдущего на 0,5 секунды.

Дэн Эббертс (Dan Ebberts) предоставляет дополнительные примеры и способы создания путей изображений на своем веб-сайте MotionScript.

Пример выражения: создание купола между двумя слоями

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

С этим выражением можно также использовать другие эффекты, например, «Рябь».

  1. Начните с двух слоев. Сделайте один слой увеличительным стеклом или подобным объектом с отверстием в середине и назовите его «Увеличитель». (См. раздел Создание слоев.)
  2. Анимация положения слоя увеличительного стекла. (См. раздел Пути движения.)
  3. Применение эффекта «Купол» к другому слою. (См. раздел Применение эффекта или шаблона настроек анимации.)
  4. Выберите свойство «Центр купола» эффекта «Купол» на панели «Таймлайн», а затем пункт «Анимация» > «Выражение» или, удерживая нажатой клавишу ALT (Windows) или OPTION (Mac OS), нажмите кнопку секундомера для этого свойства.
  5. Выберите текст выражения по умолчанию и введите следующее выражение:
      fromWorld(thisComp.layer("Magnifier").position)

Пример выражения: уменьшение непрозрачности 3D-слоя на основании расстояния от камеры

  1. Примените следующее выражение к свойству 3D-слоя «Непрозрачность»:
      startFade = 500; // Start fade 500 pixels from camera. 
      endFade = 1500;  // End fade 1500 pixels from camera. 
      try
      { // Check whether there's a camera
          C = thisComp.activeCamera.toWorld([0,0,0]); 
      }
      catch(err)
      { // No camera, so assume 50mm
          w = thisComp.width * thisComp.pixelAspect; 
          z = (w/2)/Math.tan(degreesToRadians(19.799)); 
          C = [0,0,-z]; 
      } 
      P = toWorld(anchorPoint); 
      d = length(C,P); 
      linear(d,startFade,endFade,100,0)

    Затухание начинается на расстоянии 500 пикселей от камеры и завершается на расстоянии 1500 пикселей от камеры. Метод линейной интерполяции используется для отображения значений расстояния до значений непрозрачности.

Пример выражения: добавление к 3D-слою невидимости, если он направлен в противоположную от камеры сторону

  1. Примените следующее выражение к свойству 3D-слоя «Непрозрачность»:
      if (toCompVec([0, 0, 1])[2] > 0 ) value else 0

На своем веб-сайте MotionScript Дэн Эббертс (Dan Ebberts) приводит объяснение этого выражения.

Пример выражения: горизонтальное отражение слоя, если он направлен в противоположную от камеры сторону

  1. Примените следующее выражение к свойству 3D-слоя «Масштаб»:
      if (toCompVec([0, 0, 1])[2] > 0 ) value else [-value[0], value[1], value[2]]

Пример выражения: анимация масштаба в каждом маркере слоя

  1. Примените следующее выражение к свойству «Масштаб», чтобы добавить колебания слоя в каждом маркере:
      n = 0; 
      t = 0; 
      if (marker.numKeys > 0){ 
          n = marker.nearestKey(time).index; 
          if (marker.key(n).time > time) n--; 
      } 
      if (n > 0) t = time - marker.key(n).time; 
        
      amp = 15; 
      freq = 5; 
      decay = 3.0; 
        
      angle = freq * 2 * Math.PI * t; 
      scaleFact = (100 + amp * Math.sin(angle) / Math.exp(decay * t)) / 100; 
      [value[0] * scaleFact, value[1] / scaleFact];

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

Вместо используемого здесь выражения wiggle для запуска или остановки воздействия любого выражения в указанном времени можно использовать любое выражение.

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

timeToStart = 2;
if (time > timeToStart)
{
  wiggle(3,25);
}
else
{
  value;
}

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

timeToStop = 4;
if (time > timeToStop)
{
  value;
}
else
{
  wiggle(3,25);
}

Примените следующее выражение к свойству, чтобы оно начало покачиваться во времени, составляющем 2 секунды, и перестало покачиваться во времени, составляющем 4 секунды:

timeToStart = 2;
timeToStop = 4;
if ((time > timeToStart) && (time < timeToStop))
{
  wiggle(3,25);
}
else
{
  value;
}

Пример выражения: сопоставление фокальной плоскости камеры с другим слоем

  1. Примените следующее выражение к свойству слоя камеры «Фокусное расстояние», чтобы сопоставить ее фокусное расстояние с расстоянием до опорной точки слоя с именем «цель»:
      target = thisComp.layer("target"); 
      V1 = target.toWorld(target.anchorPoint) - toWorld([0,0,0]); 
      V2 = toWorldVec([0,0,1]); 
      dot(V1,V2);

Дэн Эббертс (Dan Ebberts) подробно объясняет принцип использования этого выражения на своем веб-сайте Motionscript.

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

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