After Effects
Вивчав та тестував всі туторіали:
After Effects tutorials

Вивчав After Effects CC за курсом Супер Моушн (2015)
посилання1
посилання2
Список уроків курсу Супер Моушн
Глава 1. Основи шейповой анімації в After effects
ознайомився з принципами гарної анімації, створив шейпові анімації за автором
шейповий 5-й секундний ролик я створював самостійно від початку до кінця по уроку, відточуючи роботу з програмою After Effects
Глава 2. Корисні вираження в After effects

01_EXP_05_LoopOut Advanced_2.mp4
loopOut(); == loopOut("circle");
loopOut("pingpong");
loopOut("continue");
loopOut("offset");
loopOut("circle",2);
loopOut("pingpong",1);
loopIn("pingpong");
loopOutDuration("cycle", framesToTime(10));
02_Control_Bounce.mp4
02_Control_Colors.mp4
гармонійні загасання
// amp = .06;
// freq = 2;
// decay = 5;
amp = thisComp.layer("Control_Bounce").effect("Amp")("Slider");
freq = thisComp.layer("Control_Bounce").effect("Freq")("Slider");
decay = thisComp.layer("Control_Bounce").effect("Dec")("Slider");
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
використання Expression Control
Color Contol

Змінні і значення
content("Rectangle 1").transform.position;
comp("03_Variables_Values").layer("Shape Layer 1").transform.position;
content("Rectangle 1").content("Fill 1").color;
comp("03_Variables_Values").layer("Shape Layer 1").content("Rectangle 1").content("Fill 1").color;
r = transform.rotation;
r/10;
[100,100];
a = 100;
[100,100+a*2,100*a];
value; == transform.rotation;
[value[0],value[1]]; власні значення по x і по y
прив'язка обертання однієї фігури до параметру іншої фігури
S4_R = thisComp.layer("Shape Layer 4").transform.rotation; // rotation shape layer4
[S4_R,value[1]]
posGreen = thisComp.layer("Shape Layer 2").transform.position; // [x,y]
posOrange = thisComp.layer("Shape Layer 3").transform.position; // [x,y]
визначення відстані між фігурами
delta = posOrange[0] - posGreen[0]; // number
if (delta< 0){delta*(-1)};
Math.round(delta);
функції index
index - номер слою
(index-1)*30;
(index-1)*(-90);
linear(t, tMin, tMax, value1, value2);
ease(t, tMin, tMax, value1, value2);
Kof = effect("Kof")("Slider");
posCircle = thisComp.layer("Circle").transform.position[0]; //x
ease(posCircle, 280, 960, value, value*Kof);
// Kof = effect("Kof")("Slider");
// posCircle = thisComp.layer("Circle").transform.position[0]; //x
// ease(0, 280, 960, [0],[360]);

valueAtTime(time);
04_ValueAtTime.mp4
анімація за двома ключам: зсув по позиції,
зміщення слоїв і трьох композицій
posMain = thisComp.layer("Main_Bar").transform.position; // [x,y]
delay = thisComp.layer("Delay").effect("Delay")("Slider");
OneFrame = thisComp.frameDuration; // тривалість одного кадру
newY = posMain.valueAtTime(time-delay*OneFrame*(index-2));
[value[0],newY[1]];
Анімація масштабу іконок при наведенні об'єкта-курсора без допомоги ключів.
iconP = transform.position; // [x,y]
iconS = transform.scale; // [x,y]
ArrowP = thisComp.layer("Arrow").transform.position; // [x,y]
scaleF = thisComp.layer("Control Dock Effect").effect("Scale Factor")("Slider"); //num
Dis = thisComp.layer("Control Dock Effect").effect("Distance")("Slider"); //num
delta = Math.round(length(ArrowP,iconP));
//ArrowP = thisComp.layer("Arrow").transform.position;
//'Arrow Position ' + Math.round(ArrowP[0]) + ' ' + Math.round(ArrowP[1]);
linear(delta, 0, Dis, iconS*scaleF, iconS);
////////
iconP = transform.position; // [x,y]
iconS = transform.scale; // [x,y]
ArrowP = comp("DOCK_Effect_L").layer("Arrow").transform.position; // [x,y]
scaleF = comp("DOCK_Effect_L").layer("Control Dock Effect").effect("Scale Factor")("Slider"); //num
Dis = comp("DOCK_Effect_L").layer("Control Dock Effect").effect("Distance")("Slider"); //num
delta = Math.round(length(ArrowP,iconP));
linear(delta, 0, Dis, iconS*scaleF, iconS);
https://helpx.adobe.com/ru/after-effects/using/expression-basics.html
http://motionscript.com/
https://vk.com/ae_exp
Дополнительные скрипты
pt_ShiftLayers.jsx
https://aescripts.com/pt_shiftlayers/ (можно по цене 0)
Paste Multiple Keyframes
https://godownloads.net/paste-multiple-keyframes-2-0-6-for-after-effects-free-download/
Duik - робота з настройками графіків анімацій
https://rainboxlab.org/tools/duik/
ft-Toolbar2.jsxbin
https://www.youtube.com/watch?v=gGtmXYp7_Os
AdvancedCompGrids
https://aescripts.com/advanced-composition-grids/ (можна за ціною 0)
ізометричні сітки
zl_ExplodeShapeLayers
http://zofile.com/kstgky8155f0/zl_explodeshapelayers_v3.3.1_monter.rar
при роботі з ілюстрацією дозволяє підривати слої
RepositionAnchorPoint.jsx
motion 2 платный
прив'язки anсor point
Інші скрипти
https://www.premiumbeat.com/blog/free-after-effects-scripts/
Глава 3. Ефектні шейпові переходи в After effects
вивчаючи цю главу, були різні варіанти комбінацій ефектів, створював всі їх по урокам,
зібрав з них фінальну композицію частково за готовими ключами в часі як у вихіднику автора
Глава 4. Анімація тексту
створював текстові анімації з різними ефектами, використовував скрипти
DecomposeText.jsx і
pt_ShiftLayers.jsx для прискорення роботи
в анімації текстів по position, scale, rotation використовувався скрипт коливань
amp = .06;
freq = 2;
decay = 4;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){
n--;
}
}
if (n == 0){
t = 0;
}else{
t = time - key(n).time;
}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{
value;
}
значення amp, freq, decay виносилися в окремий слой зі слайдерами для управління цими значеннями відразу для всіх букв
вивчення текстового слою, текстових аніматорів, створення animation preset
створив анімацію тексту без ключових кадрів з допомогоюAmortype script
анімація окремих букв, ця робота автора курсу для вивчення як створюються такі покадрові анімації, вивчив її

На букві М використовувалися маски для розбивки на частині літери, ефект Linear Wipe ефект переходу.
На букві Про використовувався CC Jaws ефект зубчастої форми, прив'язка верхньої частини літери о к нижньої.
Буква У порізана масками на дві частини. Використовувалися ефекти СС Bend It на букві У.
Також ефект CC Jaws з Waves з імітацією спадаючої фарби.
В кінці у літери У додана анімація частинок за допомогою плагіна CC MR. Mercury.
Буква Ш розбита на окремі Шейп, проаніміровани по Скейл Y стовпчики з різними інтервалами.
Додані експрешени падіння Ease and Wizz щоб об'єкти падали про вигаданий підлогу.
// Ease and Wizz 2.0.4 : outBounce : All keyframes
// Ian Haigh (http://ianhaigh.com/easeandwizz/)
// Last built: 2013-07-05T11:46:51+10:00
// some defaults
var p = 0.81; // period for elastic
var a = 50; // amplitude for elastic
var s = 1.70158; // overshoot amount for "back"
function easeandwizz_outBounce(t, b, c, d) {
if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b }
else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b }
else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b }
else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b }
}
function easeAndWizz() {
var n = 0;
if (numKeys > 0) {
n = nearestKey(time).index;
if (key(n).time > time) { n-- }
}
try {
var key1 = key(n);
var key2 = key(n+1);
} catch(e) {
return null;
}
// determine how many dimensions the keyframes need
var dim = 1; // It's gotta have at least ONE dimension
try {
key(1)[1];
dim = 2;
key(1)[2];
dim = 3;
} catch(e) {}
t = time - key1.time;
d = key2.time - key1.time;
sX = key1[0];
eX = key2[0] - key1[0];
if (dim >= 2) {
sY = key1[1];
eY = key2[1] - key1[1];
if (dim >= 3) {
sZ = key1[2];
eZ = key2[2] - key1[2];
}
}
if ((time < key1.time) || (time > key2.time)) {
return value;
} else {
val1 = easeandwizz_outBounce(t, sX, eX, d, a, p, s);
switch (dim) {
case 1:
return val1;
break;
case 2:
val2 = easeandwizz_outBounce(t, sY, eY, d, a, p, s);
return [val1, val2];
break;
case 3:
val2 = easeandwizz_outBounce(t, sY, eY, d, a, p, s);
val3 = easeandwizz_outBounce(t, sZ, eZ, d, a, p, s);
return [val1, val2, val3];
break;
default:
return null;
}
}
}
(easeAndWizz() || value);
Буква H. Спочатку анімується Trim Path ліній. Потім анімується коло з нестандартним переходом в закгрулённие контури.
Використовується анімація СС Bend It ефектів і СС Jaws хвилеподібний ефект.
Анімація літери А з хвилеподібним ефектом СС Jaws і ефект Simple Choker, який приховує частину контура
Глава 5. Анімовані Hud / UI-інтерфейси
Створення анімаційних ефектів з ефектами.
Послідовно виконував всю анімацію інтерфейсу по урокам автора, вивчив тонкощі створення інтерфейсних анімацій і створення експрешенов. Інтерфейс був створений в Illustraror GUI_Elements_Lesson.

Я імпортував його в After Effects, слої розбивав по композиціям.
Створив анімації окремих елементів, текстові аніматори по opacity, character offset.
Збереження окремих ключів анімацій для повторного використання.
Створення експрешена для генерації рандомних тексту.
seedRandom (100, true); // запускає генератор рандомних чисел, лічильник стоїть на місці по Таймлайн і не змінюється
random (10,100); // постійно генерує значення в діапозоні від 10 до 100
Math.round (value); // округлення в більшу сторону
Math.floor (value); // округлення в меншу сторону
// рандомний генератор чисел від 10 до 100 за Таймлайн з інтервалом постійно кожні 0.4 секунди
number = 0.4;
r = Math.floor(time/number);
seedRandom(r,true);
a = random(10,100);
Math.round(a);
// рандомний генератор чисел від 10 до 100 за Таймлайн з рандомних інтервалом
g = Math.floor(time/0.2); // лічильник, який оновлюється через інтервал
seedRandom(g,true);
c = random(0.2,0.8);
number = c;
r = Math.floor(time/number);
seedRandom(r,true);
a = random(10,100);
Math.round(a);
зациклена анімація окремих ключів
loopOut("offset");
loopOut("cycle",4);
створення ключа Time Remap - зупинка зацикленої анімації
loopOut(); // повторюється анімація з самого початку
loopOut("cycle",1); // повторюється анімація на два ключа
використання скрипта
Slim Panel - Script for After Effects
https://gumroad.com/l/TYAs
використання скрипта
Explode Shape Layers
loopOut("continue"); // продовжує анімацію з тією ж швидкістю як на останньому ключі
value+time*(-50); // експрешен для rotation
лінійна функція, яка змінює параметр
анімація Wiggle Transform по position
і Trim Path по end
доданий Repeater
анімація за position і scale
ee - відкрити експрешен в таймлайне
створення ліній покажчиків з текстом за допомогою точок null, beam ефекту і експрешен
створення ефект Beam для ліній з текстом,
Starting Thickness до Ending Thikness,
Inside color до Outside color
прив'язка ліній до null об'єктів
створення експрешен для ліній покажчиків
щоб лінія завжди була в горизонтальному положенні створюється
прив'язка координати по y першої точки лінії Null_Angle до кординат по y першої точки у Null_length
A_null = thisComp.layer("Null_Angle").transform.position;
[value[0],A_null[1]];
// створення прив'язки кутового Null_Angle до головного
M_null = thisComp.layer ( "Master_Null"). Transform.position;
[Value [0] + M_null [0], value [1] + M_null [1]];
// прив'язується координата першої точки горизонтальної лінії з урахуванням довжини довжини
A_null = thisComp.layer ( "Null_Angle"). Transform.position;
[Value [0] + A_null [0], A_null [1]];
В уроці автор використовував Optical Flares, Particular ефект.
Встановлював триальную версію, вивчав можливості.
https://www.redgiant.com/products/trapcode-particular/
https://www.redgiant.com/products/trapcode-particular/free-trial-download
скачується архів 780 mb
Trapcode Suite 15.1.8 Installer.exe
Список всіх плагінів при установці:
3D Stroke
Echospace
Form
Horizon
Lux
Mir
Particular
Shine
Sound Keys
Starglow
Tao
Вивчав можливості Trapcode Particular ефектів частинок.
За допомогою плагіна Optical Flares створив свій фон для ролика.
Глава 6. Персонажна анімація
Анімація ходи персонажа. Виконував всю анімацію самостійно, повторюючи за автором курсу по урокам.

Імпорт в After Effects AI файл, створений по слоям для окремих частин тіла персонажа.
Автор порадив почитати книгу "Аніматор: Набір для виживання" за 2002,
скачав за 2019 рік
https://obuchalka.org/20190228107271/animator-nabor-dlya-vijivaniya-sekreti-i-metodi-sozdaniya-animacii-zd-grafiki-i-komputernih-igr-uilyams-r-2019.html
Аніматор: Набір для виживання
Використання скрипта duik_14.23 (такий був в уроці)
http://duduf.com/downloads/duik/old/
ставив також
Duik bassel.2
Створення рігу
За допомогою duik створював кістки, отримував нулі, якими легше управляти в анімації, створював зв'язку опорних точок і всі частини тіла збирав разом. Потім створив контролер і інверсівние кинематику,
вона дає можливість накладати обмеження, наприклад, руки ізгабаются в правильному напрямку не більше опреленного кута.
Створення 16 кадрів (кнопка n) з 4 окремих фаз по 4 кадри, розташування по позиції і обертанню опорних точок у кісток за цими фазами,
використання скрипта Paste Multiple Keyframes для копіювання винятком в різних слоях для прискорення роботи.
Додавання проміжних фаз c зображеннями з уроку і опрацювання правильних позицій частин тіла в різні моменти руху.
Додавання легкої анімації чубчика на голові і невеликого обертання вусів.
В анімації з 16 кадрів з 4 фаз вийшла швидка хода,
розтягування 16 кадрів на 24 кадру.
Виділяються всі кадри в усіх слоях і з затиснутим alt тягнеться будь правий кадр з 16 до 24, розтягуючи пропорційно всі кадри.
Перевірка всіх фаз і полуфаз на правильні позиції і поворони ніг, рук, тіла
створення уповільнення швидкості в фазах, коли персонаж впирається ногами роблячи повний крок.
Всі ключі були лінійними, в фазах повного кроку додані ключі f9 easy ease, це створює уповільнення з лінійних ключів.
Створення згладжених рухів рук з уповільненнями, переміщаючи по кривим бізье позицію точки руки.
При натисканні alt + ctrl на точках створюються handle, які дозволяють робити криві Безьє.
На всіх кадрах крім фаз на ключах натискаються клік з ctrl двічі до круглих ключів для створення більш згладженої анімації. І також на ногах все лінійні ключі виділяються ctrl круглі Безьє.
Додавання кисті, палітри і падіння краплі.
Доданий рассінхрон анімації рук і ніг, додано зациклення всієї анімації
loopOut ();
Автор радив також почитати книги британського аніматора, дизайнера Фрейзера Девідсона, курс персонажной анімації від Роми Вишіванова і Антона Пінкевич.
Глава 7. Приголомшлива корпоративна графіка
Анімація флетовой інфографіки.
Мета цієї глави - вивчення на готовому проекті як правильно створюються такі ролики.
Це остання глава курсу, вона складається з 9 годин відео уроків, в яких автор створював цей ролик, багато показував, пояснював.
Мені було все зрозуміло, тому я не робив цю анімацію за автором, я проаналізував всі композиції.
Цей ролик - робота автора курсу, я можу робити такі анімації.

При відкриванні ісходника ролика була помилка.
After Effects error: There was an error processing this PDF document (1074397201)
After Effects error: can not reopen an open file.
After Effects закривався, це відбувалося з крашу одного файлу AI,
вивчив це баг .
Ролик складається з великої кількості слоїв, композиції, вкладених композиції.
Щоб виправити збій я видаляв окремі слої, запускав анімацію і перевіряв в якому місці при додаванні слоїв відбувається збій.
Потім знайшов слой, в якому виникає ця помилка.
Помилка виявилася у вкладених композиціях десь глибоко всередині, в файлі AI, який не використовувався і був в прихованому слої, видаливши цей слой помилки не стало.
Автор курсу розповідає як правильно організовувати структуру ролика, папок, вкладених підпапок, композицій щоб не нагромаджувати всі анімації в одній композиції, розбивати на подкомпозіціі і легко розуміти де що знаходиться.
Іноді в файлах з Ai слої мають зайві області, які заповнюють весь простір і з ними незручно працювати,
для позбавлення від зайвих слоїв використовується скрипт SlimPanel клік по зірочці з затиснутим alt, пропадає зайва рамка.
Для розбивки одного Шейп на окремі слої використовується Скіпт ExplodeShapeLayers, також SlimPanel може розбивати на слої, натискаючи ctrl і іконку зірочки.
Переміщення по ключовим кадрам j - тому, k - вперед
Розрізати слой ctrl + shift + d
Використання ефекту Grid Wipe, дублювання ефектів, анімацію параметра completion.
Створення зациклених експрешенов: loopOut ( "cycle, 6"); кількість ключів, які повторювати від останнього.