Expressions Level 2

 Экспрешены для крутых парней

  Чтобы перейти к следующему разделу, нужно знать очень важную вещь, что Math.sin() и Math.exp() вместе дружат. Если объединить вместе две эти функции, то можно получить затухающие колебание, которое можно использовать для множеств физических симуляций (маятник, качели, прыгающий мяч...).
Напишем следующие выражение в экспрешен бар для Slider Control:
Math.sin(10*time)/Math.exp(time)
Вот такую красоту получим, только с помощью деления одной функции на другую. Число 10 в параметре синуса для того чтобы увеличить частоту функции и для того, чтобы лучше продемонстрировать затухание функции.





   Чаще всего мы будем использовать уменьшающуюся дугу экспоненты нежели увеличивающуюся. Для того чтобы симулировать разные колебания (прыгающий мяч, качели...).
Для того чтобы создать уменьшающуюся экспоненту нужно сдлеать параметр отрицательным: Math.exp(-time)
Есть также второй вариант это результат экпоненты поделить на единицу: 1/Math.exp(time)




   
   Последняя тема, которую нам необходимо обсудить - это дуга экспоненты. В АЕ чтобы вызвать экспоненту используется выражение Math.exp(). Эта функция использует параметр, которые проходит через неё и поднимает её к "е"(е=2.718).Волна этой функции зависит только от величины параметра, который проходит через неё. Если мы напишем для любого объекта в экспрешен бар для Position: Math.exp(time),то будем наблюдать стремительно растущую дугу вверх.





   Что будет, если переумножить две синусные функции ? Получится амплитудная модуляция. А что это такое спросим у Википедии - это
вид модуляции, при которой изменяемым параметром несущего сигнала является его амплитуда.
veloc = 70;
amp = 80;
freq1 = 0.2;
freq2 = 4;
x = time*veloc;
wave1 = Math.sin(freq1*time*2*Math.PI);
wave2 = Math.sin(freq2*time*2*Math.PI);
y= amp*wave1*wave2 + thisComp.height/2;
[x, y]
Создаём две синусные фунцкии со своими частотами и потом их просто переумножаем с нашей амплитудой. Я не знаю как ещё здесь можно объяснить!




P.S. Для того чтобы посмотреть свойства и график функций я использую обычно: http://www.wolframalpha.com/




   Снова очередная синусная функция. Она нам очень часто пригодиться, по-этому лучше всего с ней подружиться. Только на этот раз амплитуда будет постоянной(в отличие от предыдущих примеров).
veloc = 70;
amp = 50;
freq = 0.5; 
x = time*veloc;
y =  amp*Math.sin(freq*time*time*2*Math.PI) +thisComp.height/2;
[x,y] 



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




   Разберём следующий пример с использованием синусной функции. Допустим мы хотим, чтобы объект двигался также по синусной траектории, только в этот раз он будет как будто отталкиваться от горизонтальной плоскости. Не понятно?! Возьмите и разреште пополам нижний график, вот что получится!

Для такого результата нужно лишь слегка модифицировать предыдущий экспрешен.
veloc = 70;
amp = 35;
freq = 2;
x = veloc*time;
y = amp*time*(Math.sin(freq*time*2*Math.PI)-1)/2 + thisComp.height/1.15;
[x,y] - обратитите внимание на то, что мы отнимаем от функции 1 следовательно получается масштаб -2 и 0. Именно по этому мы делим на 2, чтобы опять вернуться к пержнему масштабу, только теперь он будет -1 и 0.

  
Важно: в АЕ оси имеют обратное значение, то есть в верхней части ось -у, а в нижней +у


 

   Также важно помнить, что функция измеряется не в градусах, как мы все привыкли, а в радианах. Значит полный круг равен 2 умноженное на Пи радиан(где Пи = 3.14). Чтобы вызвать число Пи в АЕ для этого есть выражение - Math.PI. Так что, если мы хотим выразить частоту
колебания во время одной секунды, то надо умножить на 2Пи или на языке АЕ 2*Math.Pi
   
Если мы применим следующие выражение допустим к кругу размером 50х50, то круг будет двигаться по линейно увеличивающейся траектории волны синуса:
veloc = 100;
amp = 50;
freq = 2;
x = veloc*time; - траектория объекта по оси х
y = amp*time*Math.sin(freq*time*2*Math.PI) + thisComp.height/2; - первая часть выражения это траектория по оси y, а вторая часть выражения нужна для того, чтобы объект не выходил за рамки нашей композиции.
[x,y]  - и последний шаг, задаём АЕ последние координаты, чтобы он смог их прочитать


Вот такое чудо пишем в экспрешен бар для какого-либо объекта. Если вам поставят задачу проанимировать именно так объект, то в ручную не придёться делать, а просто скопировать и вставить в экспрешен бар для Position.
P.S. Этот же самый экспрешен попрробуйте вставить в Scale или Rotation и посмотрите что будет!
   



   В этом разделе я буду разбирать более сложные экспрешены. Здесь требуется не только основные знания экспрешенов в AE, но и знание математики и физики.

Очень часто используется в экспрешенах функция синус. Функция синус сама по себе периодична, что можно использовать во многих симуляциях. На языке JavaScript в АЕ синус прописывается так - Math.sin(). Если мы напишем фунцкию в Slider Control: Math.sin(time) и масштаб зададим от -1 до +1, то график функции будет от -1 до +1. Также важно, что синус начинается с нуля, то есть в момент времени 0 значение функции тоже 0

Косинус обозначается так: Math.cos(). И единственное отличие от синуса, то что косинус начинаеся с максимального значение, то есть, если мы зададим масштаб -1 и +1, то косинус начинаться будет с +1. В момент времени 0 значение функции будет +1. 



 

1 comment: