After effects выражения index
Собрал список выражений для АЕ, которые упрощают мне работу. Совсем простых в стиле loopOut() или wiggle (.4,6) здесь не будет, но и ничего экстрасложного тоже.
Своих экспрешнов здесь всего парочка. Большинство я брал откуда-то и переписывал по чуть-чуть под себя, так что, у чужих экспрешнов поставлю ссылку на авторов.
Плашка за текстом
Создать шейповый квадратик, а сверху отдельным слоём добавить текст;
Применить к параметру size у шейпа:
Если текст в несколько строк, то к position у шейпа добавьте этот экспрешн. Без него тоже всё будет работать, но придётся вручную подгонять позицию плашки за текстом.
К остальным экспрешнам
Анимируемый wiggle
Простой способ заанимировать wiggle. Используем для этого два слайдера: первый отвечает за частоту, второй за амплитуду. Анимировать лучше только амплитуду.
Добавить эффект Slider Control на слой с экспрешном и продублировать его. Применить к любому параметру:
Цикличный wiggle
Благодаря этому экспрешну, wiggle начинается и заканчивается в одной и той же точке.
Если вдруг цикл не работает, то это скорей всего из-за того, что луп не успевает прийти в изначальное состояние за отведённое время. Просто сделайте loopTime побольше или freq почаще
Прикрепить шейп к одной стороне
Применить к position, изменять size у шейпа:
Риг для катящегося круга и квадрата
Катящийся круг
Применить к rotation, анимировать position:
Катящийся квадрат
Работает как с шейпами, так и со слоями и композициями. Если квадрат катится неправильно — изменить значение Slider Control.
Добавить на слой с экспрешном эффект Slider Control. Применить экспрешн к position, анимировать rotation:
На основе экспрешна от Mikey Borup
Ежесекундные ступенчатые повороты
Замена time*n. Только вместо плавного поворота — ступенчатый. Чаще всего пригождается, чтобы сделать анимацию секундной стрелки, шестерёнок или других похожих механизмов.
Применить к rotation:
Управляемые ступенчатые повороты
Практически то же самое, что и выше. Но с чуть большим количеством настроек.
Применить к rotation:
Постоянный масштаб при скейле
Если привязать один объект к другому и начать скейлить родительский, то оба слоя будут увеличиваться. Этот экспрешн не даёт дочернему слою изменять масштаб, он просто будет двигаться по позишну.
Применить к scale слоя, у которого должен быть постоянный масштаб:
Переключатель по чекбоксу
Меняет одно значение параметра на другое по нажатию на чекбокс.
Добавить эффект Checkbox Control на слой с экспрешном;
Применить к любому параметру:
Луп для шейпов
Обычный loopOut() не работает с шейпами, но зато работает этот экспрешн.
Применить к path у шейпа:
Range Mapper
Добавить эффект Slider Control на слой с экспрешном;
Применить к любому параметру:
Обводка независимая от скейла
Сохраняет постоянную обводку у шейпов при изменении масштаба.
Применить к «Stroke Width» у шейпа:
Счётчики
Почему-то часто использую счётчики в анимациях, поэтому здесь будет подборка сразу из шести. Сначала три самых простых.
1) Обычный счётчик
toFixed(1) — количество цифр после запятой;
Добавить эффект Slider Control на слой с экспрешном;
Применить к «Source Text» у текста:
2) Счётчик с запятыми вместо точек
Полезно в анимациях для неанглоязычных стран, где используется запятая в качестве десятичного разделителя вместо точки. Если нужен похожий сетап с большим количеством настроек, то он вот здесь.
3) Счётчик с дополнительными знаками
4) Счётчик с заменой 1 на 001
При zerosAmount = 3 счёт будет идти вот так: 000, 001 … 011 … 111.
5) Счётчик с разрядами
Заменяет 500000 на 500 000.
6) Счётчик для больших чисел
Счётчик, привязанный к Slider Control, не идёт дальше 1 000 000. Поэтому если нужны большие числа — приходится использовать эффект Angle Control.
Добавить эффект Angle Control на слой с экспрешном;
Применить к «Source Text» у текста:
Пара мелочей
И, под конец, 4 полезных мини-выражения, которые часто пригождаются.
1) Привязка к слою выше или ниже
Это не полноценный экспрешн, а только его часть. Вместо того, чтобы привязывать один слой к другому напрямую, иногда удобнее привязывать к слою, который стоит выше или ниже, слоя с экспрешном.
index+1 — если нужна привязка к слою ниже
2) Постоянно ускоряющиеся повороты
Попробуйте добавить к rotation:
3) Ключи для time*n
Добавляет постоянное движение, но оставляет возможность ставить ключи.
4) Привязка эффекта к слою
Чтобы Gradient Ramp не слетал при перемещении слоя, добавьте этот экспрешн на Start и End:
Похоже, это все выражения, которыми я пользуюсь на постоянной основе. Всего получилось 23.
На всякий случай, собрал их в проект и прикрепил к статье.
Сегодня подкинули несколько вопросов об округлении чисел в АЕ, поэтому я решил написал общую эту статью. Также рассмотрим несколько примеров и вариантов округления и в качестве бонуса: «дописи» к выражениям различных символов, а также методы их размещения.
Рассмотрим вариант, где мы имеем анимированный слайдер на текстовом слое:
По умолчанию выражение в Source text имеет вид:
При анимации такого слайдера, мы можем получить кучу чисел после запятой. Чтобы избавится от них мы можем округлять это значение, несколькими способами:
- Math.round() – округление к ближайшему целому числу. Как в школе учат.
- Math.floor() – округление до целого числа в меньшую сторону.
- Math.ceil() – округление до целого числа в большую сторону.
Таким образом применив к нашему Source text один из методов округления мы получим:
В этом случае мы будем получать целое число. Но что если мы хотим оставить несколько числе после запятой? В этом случае мы можем использовать несколько вариантов:
Первый вариант умножить и разделить само выражение на 10 или 100, в зависимости от того сколько чисел вы хотите получить после запятой. Например, наше выражение Math.floor(effect("Slider Control")("Slider")) мы умножаем на 100 и делим на 100, получаем вид:
В этом случае мы получим две цифры после запятой. Но будьте аккуратны, если значение примет вид целого числа, то цифры после запятой показываться не будут. Поясню, число 16,66666 таким образом будет округляться до 16,67, но если число примет вид 16,5, то вне зависимости от того на сколько вы делили или умножали выражение, вид остается прежним 16,5. Если вы хотите, чтобы было также отображение фиксированного количества знаком, то нужно использовать второй вариант, а именно выражение:
- toFixed() – округляет значение до точного количества знаков, причем отображает и нули.
Чтобы toFixed() корректно работал в выражении для Source Text необходимо сделать следующие изменения: так как source text возвращает нам строчное значение, а не числовое, нужно для начала преобразовать его в число с помощью функции parse:
В скобках для toFixed() мы указываем количество знаков после запятой.
Помимо toFixed, вы можете использовать toPrecision(), но в этом случае в скобках нужно указывать общее число знаков для округления. То есть если вы хотите получить 18,90, то функция имеет вид toPrecision(4)
Теперь более подробно о функции parse.
Как я уже писал выше, parse преобразует строковой аргумент в числовое и существует два вида вывода: Int – целое число, Float с плавающей запятой.
Для чего же нужен parse? Например, в вашем выражении Source Text нужно дописать какой-то знак, после числа, например: «%» или «?». Напомню, что для того, чтобы дописать символ к выражению нужно добавить:
+”символ”;
Если вы будете писать непосредственно в теле выражения без преобразования строки в число, то будете получать ошибку:
Чтобы избежать этого следует сделать преобразование:
Если в вашем проекте нужно использовать знаки после запятой, то следует использовать parseFloat. Выражение примет вид: parseFloat(effect("Slider Control")("Slider"))+" $"
Вы можете скорректировать количество знаков после запятой добавив toFixed или toPrecision:
Теперь немного об отображении Source text.
Если вы хотите, чтобы символы или какие значения в Source Text начинались с новой строки, то следует использовать выражение "\r". Например, вы хотите перенести знак $ на новую строку, для этого дописываем в выражение + "\r"
parseFloat(effect("Slider Control")("Slider")).toFixed(2)+ "\r"+" $"
Вы можете дописывать любые знаки стразу после +"\r…..". Таким образом вы получите новую строку с заданными символами или словами, например:
Learn the expression language and use it to form different expressions in After Effects.
The After Effects expression language is based on JavaScript, with an extended set of built-in objects. After Effects uses the core standard JavaScript language, not the web browser–specific extensions. After Effects contains its own set of extension objects—such as Layer, Comp, Footage, and Camera.
Though the expression language is based on a scripting language, a subtle but important difference exists between a script and an expression. While a script tells an application to do something, an expression tells a property to do something.
When creating expressions, keep in mind the following:
The value of an expression is the value of the last statement evaluated. This is usually the last line of the expression.
JavaScript is a case-sensitive language.
In JavaScript, a value stored in an object is called a property. However, After Effects uses the term property to refer to layer components as defined in the Timeline panel. For this reason, After Effects refers to JavaScript properties as either methods or attributes. In general practice, the difference between a method and an attribute is that a method usually does something to create its output (return) value, whereas an attribute simply refers to an existing value to determine its output (return) value. You can tell a method from an attribute most easily by looking for the parentheses following the method name, which surrounds any input arguments to the method.
An object is an item that can contain other objects, attributes, and methods. Compositions, layers, and footage items are examples of objects. Specifically, compositions, layers, and footage items are global objects, which means that they can be referred to in any context without reference to some higher-level object.
You use the expression language to access attributes and methods of layer properties. To access a value, use a chain of object references separated by the period ( . ) operator. To chain object references past the layer level (for example, to refer to Effect properties, masks, or text animators), you can also use parentheses. For example, to link the Opacity property in Layer A to the Blurriness property of the Gaussian Blur effect in Layer B, enter the following expression in the expression field for the Opacity property for Layer A:
Reading this expression from left to right, you progress from the higher-level, containing object down to the specific property:
The global object used refers to the current composition: thisComp .
A specific layer object within that composition is referred to by its name: layer("Layer B") .
A specific effect object within that layer is referred to by its name: effect("Gaussian Blur") .
A specific effect property within that effect is referred to by its name: ("Blurriness") .
For the nth component of a multidimensional property, like the y component of an effect control point, append [n] at the end, like this:
The default object for an expression is the property on which the expression is written, followed by the layer containing the expression; therefore, you do not need to specify the property. For example, a wiggle expression written on the Position property of a layer can be either of the following:
Include the layer and property when retrieving them from outside the layer and property on which the expression is written. For example, an expression written on the Opacity property of Layer B, linking it to the Rotation property of Layer A would look like this expression:
To see more examples of how expressions work, use the pick whip to link one layer property to another, and look at the expressions it creates.
An Array is a type of object that stores an ordered set of numbers. An Array is represented as a list of numbers separated by commas and surrounded by brackets, as in this example:
You can assign an Array object to a variable, making it easy to refer to array values in other areas of the expression. For example:
The dimension of an Array object is the number of elements in the array. The dimension of myArray is 2. Different properties in After Effects have different dimensions depending on the number of value arguments they have. In the expression language, the values of properties are either single values (Number objects) or arrays (Array objects).
The following table provides examples of some properties and their dimensions:
Рассмотрим метод из справочника "Атрибуты и методы Adobe After Effects.pdf":
loopOut(type="cycle", numKeyframes=0)
Тип возвращения: число или массив.
Повторяет сегмент времени, измеряемый от последнего ключевого кадра в слое до точки входа слоя. Цикл воспроизводится до точки выхода слоя. Заданное число ключевых кадров определяет циклически повторяющийся сегмент.
Значение numKeyframes используется для определения количества сегментов ключевых кадров для зацикливания. Указанный диапазон измеряется в обратном направлении от последнего ключевого кадра.
Например, значение loopOut ("cycle", 1) повторяет сегмент, ограниченный последним и предпоследним ключевыми кадрами. Значение по умолчанию 0 означает, что все ключевые кадры повторяются циклично. Дополнительную информацию см. в методе "loopIn()".
2. Метод. Math.sin()
Внимание — это не метод Adobe After Effects а встроенный метод JavaScript, тем не менее его можно использовать в выражениях в Adobe After Effects.
Функцию у=sin(x) мы помним из школьного курса математики. Напомню, что значение функции изменяется от -1 до +1.
- Создадим новый проект Adobe After Effects 1280*720 30 сек.
- Создадим слой Solid 300*300 Blue.
- На Timeline в слое Solid раскроем свойство Opacity и введем выражение:
Math.abs(Math.sin(time))*100
Обратите внимание методы JavaScript надо вводит с большой буквы в противном случае отобразится ошибка!
Math.abs – абсолютное значение аргумента, компенсируем отрицательные значения функции y=sin(x).
Math.sin(time) – вычисление sin с аргументом время.
*100 масштабируем результат от 0 до 100.
Для параметра Scale выражение будет выглядеть уже сложнее:
temp=Math.sin(time)*200;
[temp, temp]
Здесь необходимо использовать переменные для двух аргументов параметра Scale.
На рисунке выражение для параметра Opacity отключено!
3. Метод Wiggle()
Для создания хаотичности применяется метод Adobe After Effects Wiggle(). Метод Wiggle имеет пять аргументов, обычно используются два первых. Первый это частота колебаний, второй амплитуда колебаний.
Рассмотрим метод из справочника Атрибуты и методы Adobe After Effects.pdf
wiggle (freq, amp, octaves=1, amp_mult=.5, t=time)
Тип возвращения: число или массив.
Тип аргумента: freq, amp, octaves, amp_mult и t – это числа.
Произвольно применяет эффект покачивания к значению свойства.
Значение freq – это частота в покачиваниях в секунду.
Значение amp – это амплитуда в единицах измерения свойства, к которому оно применяется.
Значение octaves – это количество октав шума, которые требуется сложить. Это значение управляет объемом детализации в покачивании. Сделайте это значение больше значения по умолчанию (1), чтобы добавить более высокие частоты, или меньше, чтобы добавить амплитудную гармонику в покачивание.
Значение amp_mult – это число, на которое умножается значение amp для каждой октавы. Это значение управляет скоростью спада гармоник. Значение по умолчанию равно 0,5 приблизите его к 1, чтобы добавить гармонику при той же амплитуде, что и базовая частота, или приблизите его к 0, чтобы уменьшить детализацию.
Значение t – это базовое начальное время. Этому значению по умолчанию присваивается текущее время. Используйте этот параметр, чтобы выходные данные являлись покачиванием значения свойства, полученного в разное время.
Как анимировать с помощью метода wiggle().
- Создадим новый проект Adobe After Effects 1280*720 30 сек.
- Импортируем рисунок (у меня лист клена, который будет падать).
- Установим Ключевой кадр так, чтобы лист падал справа сверху влево вниз (ветер дует справа).
- Делаем Alt+клик на значке с секундомером слева от параметра Position и вбиваем
случайные колебания с частотой 1 Гц и амплитудой 200 пикселей.
случайные колебания с частотой 1 Гц и амплитудой 50 пикселей.
4. Анимация эффектов с помощью выражений.
У нас есть сплошной слой, мы применяем к нему эффект Gell Pattern и, чтобы данный эффект не был статичным нам нужно анимировать параметрs Evolution и Disperce.
- Делаем Alt+клик по значку с секундомером слева от параметра Evolution и вставляем метод time*100.
- Делаем Alt+клик по значку с секундомером слева от параметра Disperce и вставляем метод time.
Смотрим анимацию.
Можно «поиграть» с другими параметрами и попробовать применить другие методы.
5. Примеры выражений в Adobe After Effects.
5-1. Пример выражения вращение по кругу.
- Создайте Shape (Шейп) в виде звезды с помощью инструмента Star Tool:
- Введите следующее выражение в свойство Position:
[(thisComp.width/2),(thisComp.height/2)]+[Math.sin(time)*200,-Math.cos(time)*200]
thisComp.width/2 – вычислили середину окна по горизонтали.
thisComp.height/2 – вычислили середину окна по вертикали.
Math.sin(time)*200,-Math.cos(time)*200 – создали движение по кругу.
5-2. Пример выражения Движение стрелок часов.
- создайте два длинных узких сплошных слоя: часовую стрелку и минутную стрелку.
- Разместите опорные точки на концах стрелок.
- Переместите слои так, чтобы опорные точки находились в центре композиции.
- В свойство Rotation для часовой стрелки добавьте выражение (R - радиус часовой стрелки):
R=300; T=time;
[R*(Math.sin(T/24)-Math.cos(T/24))]
- В свойство Rotation для минутной стрелки перетащите инструментом «Лассо» к свойству Rotation для часовой стрелки. Появится следующее выражение:
thisComp.layer("Hour").transform.rotation
Чтобы минутная стрелка вращалась в 12 раз быстрее часовой стрелки добавьте значение *12 в конце выражения следующим образом:
thisComp.layer("Hour").transform.rotation*12
5-3. Пример использования конструкции If … then … else.
Реализация исполнения операций по условию.
Выражения вводим в свойство Position:
-
Дрожание изображения при условии если время > t сек
t=4;
if (time > t) wiggle(3,25) else value;
t=4;
if (time > t) value; else wiggle(3,25);
t1=2; t2=4;
if ((time > t1) && (time < t2)) < wiggle(3,25); >else
5-4. Затухающие колебания.
Выражения вводим в свойство Position:
Height=600; freq=3; decay=1,1; amp=500;
y=Height-Math.abs((Math.sin(time*freq))/Math.exp(time*decay)*amp); [Height, y]
5-5. Пульсация.
Выражения вводим в свойство Scale:
maxDev = 23; spd = 30; decay = 1.0;
t = time - inPoint;
x = scale[0] + maxDev*Math.sin(spd*t)/Math.exp(decay*t);
y = scale[0]*scale[1]/x;
[x,y]
6. Конвертирование выражений в ключевые кадры
В некоторых ситуациях может быть полезно конвертирование выражений в ключевые кадры. Для преобразования выражений в ключевые кадры необходимо в главном меню Animation/Keyframe Assistant/Convert Expression to Keyframes.
Для того, что бы Вы не имели сложностей в изучении программы Adobe After Effects нам необходимо изучить Рабочую среду программы. В связи со сложностью и широтой возможностей Adobe After Effects это может занять не один урок.
Но напрягите сердце мужеством. Мы рассмотрим подробно все основные опции и параметры, которыми нам предстоит пользоваться. Начнем с изучения на этом уроке панели Timeline, как основной рабочей панели.
2. Обзор панели TimeLine.
Панель Таймлайн разделим на 5 областей:
- Заголовок панели;
- Заголовок слоев;
- Рабочая область;
- Графическая панель.
В областях выделим группы опций и параметров.
3. Группы опций и параметров панели TimeLine.
1. Заголовок панели, слева направо:
- Тайм-код текущего кадра;
- Окошко поиска;
- Опции клипа.
2. Заголовок слоев, слева направо:
- Выключатели слоя;
- Идентификаторы слоя;
- Переключатели слоя;
- Режимы наложения;
- Управление временем слоя;
- Управление рабочей областью слоя;
- Установка маркеров и ниже Comp Button.
ВНИМАНИЕ! Это строка заголовка слоев! Собственно опции и параметры изменяются в слоях, в рабочей области.
3. Рабочая область.
4. Графическая панель.
- Элементы управления масштабом и прокруткой графической панели;
- Временная шкала;
- Полоса управления рабочей областью:
- Полоса рендеринга;
- Управление расположением и длительностью слоя;
Без цифровых обозначений на рисунке:
- В белых кружках управление маркерами;
- Ключевые кадры;
- Курсор воспроизведения;
Теперь рассмотрим подробно опции каждой области.
4. Опции области "Заголовок панели", слева направо:
-
Тайм-код (Time Code) текущего кадра - указывает и устанавливает текущая позицию Курсора воспроизведения. При наведении мыши - появляется надпись "ctrl+click for alternate display stile" - переключить отображение Время/Фреймы на Временной шкале (Time ruler). В самом окошке отображается и то и другое - крупно вверху и мелко снизу, при переключении меняются местами. В скобках - частота кадров текущего клипа.
- Быстро но неточно - наводим мышь, курсор изменится, нажимаем левую кнопку мыши и двигаем влево или вправо.
- Точно и быстро - кликнуть по иконке и ввести время/фрейм.
Шесть опций клипа (все работают в режиме Вкл/Выкл)::
- Отображение вложенных композиций (Composition Mini-Flowchart) (клавиша Tab) – отображает композицию со всеми вложенными композициями. Нажимая на их иконки, мы быстро переключаемся между композициями.
- Черновой режим 3D (Draft 3D) – Вкл/Выкл черновой 3D режим. При просмотре у 3D слоев будут отключены тени, световые эффекты, Motion Blur, глубина резкости камеры и др. для ускорения рендеринга.
- Скрыть помеченные на скрытие слои (Hides all layers for which the “Shy” switch is set) – при включении скрывает все слои, для которых установлен переключатель Shy.
- Смешение слоев (Enables Frame Blending for all layers with the Frame Blend switch set) – включает смешения кадров (Frame Blending) для слоев.
- Размытие в движении (Enables Motion Blur for all layers with the Motion Blur switch set) – при выключении выключает эффект, учитывая настройки Motion Blur в слоях.
- Визуальный графический редактор (Graph Editor) – если нажать, вместо поля временного графика слоев открывается визуальный графический контроль для редактирования Ключевых кадров.
5. Опции области "Заголовок слоев", слева направо:
На картинках ниже я показываю не только Заголовок слоев, но и первый слой для примера установки опций и параметров.
Параметры выбора качества изображения слоя доступны также из главного меню: Layer/Quality, где становится доступным еще один параметр качества: Wireframe – так называемый каркас, отображает слой в виде рамки без содержимого. Рендеринг происходит намного быстрее, однако мы не видим картинки, а лишь их схематичное расположение.
- Off (выкл. по умолчанию);
- Frame Mix (смешение кадров);
- Pixel Motion (движение пикселей);
Что бы опция включилась нужно нажать аналогичную кнопку в опциях клипа (см. выше). Если не выбран переключатель композиции Enable Frame Blending, расположенный в верхней части панели Timeline, то настройки смешения кадров не будут учитываться. Данный переключатель становится доступен для использования, когда мы изменяем скорость видео.
Сочетанием клавиш Shift+F4 можно скрывать/отображать этот столбец.
- In – время входа слоя, т.е. задается время/кадр, в который надо поместить начало проигрывания слоя. Задать время/кадр можно нажав левую кнопку мыши в поле In, пока появятся стрелочки, и двигать мышкой влево-вправо, либо щелкнуть мышкой в поле In слоя и в появившемся окне Layer In Time задать время/кадр вручную.
- Out – время выхода слоя, т.е. задается время/кадр, в котором проигрывание слоя заканчивается.
- Duration – в данном столбце задается длительность слоя. Если мы уменьшаем/увеличиваем длительность слоя, время выхода слоя Out уменьшается/увеличивается на количество подрезанных/добавленных кадров. Изменить длительность слоя мы можем также, наведя на край его графического отображения до появления стрелочек, и потянув в нужную сторону.
- Stretch – здесь имеем возможность изменять длительность слоев за счет увеличения/уменьшения скорости воспроизведения. При этом, если задать параметр Stretch меньше 100% – это увеличит скорость воспроизведения, более 100% – замедлит скорость воспроизведение слоя.
- Comment - комментарии слоя;
- Keys - Ключевые кадры.
- Для отображения/скрытия столбцов по отдельности вызываем Всплывающее меню на названии столбца, открываем меню Collumns и устанавливаем/удаляем флажок напротив столбца (или группы столбцов) который хотим отобразить/скрыть.
6. Рабочая область.
Какие компоненты есть в Рабочей области:
- Верхняя строка (Зеленая обводка) - "Заголовок слоев", я включил его в рисунок только, чтобы было понятнее о каком столбце идет речь;
- Желтая обводка - слой 1;
- Голубая обводка - слой 2, в нем развернута группа эффектов "Tranform", аналог группы эффектов "Движение" в Adobe Premiere. Обратите внимание - эта группа эффектов не отображается в панели "Effect Controls";
- С столбце "Comments" видны комментарии к слоям;
- В столбце "Keys", в опции Position установлены Ключевые кадры.
- в левом правом углу - три кнопки отображения групп столбцов. (Нажмите и посмотрите.)
В процессе изучения Adobe After Effects vs,eltv подробно рассматривать опции и параметры слоев в рабочей области - самой обширной области для изучения.
7. Графическая панель.
- Управление полосой прокрутки (Time navigation) - на рис.под цифрой "1":
- Сверху - управление масштабом и положением Полосой прокрутки,
- Справа и снизу - собственно полоса прокрутки,
- Слева внизу - управление масштабом Полосы прокрутки.
Теперь, сравнив возможности панели Таймлайн в Adobe Premiere и Timeline в Adobe After Effects Вы можете сравнить возможностях и сложность этих программ. (Это я все к тому, что Adobe After Effects младший брат Adobe Photoshop).
Читайте также: