<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Секретный блог: заметки с тегом after effects</title>
<link>https://balyberdin.com/hey/tags/after-effects/</link>
<description>Скрытые от навигации заметки</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Скрытые от навигации заметки</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Подборка экспрешнов для After Effects</title>
<guid isPermaLink="false">34</guid>
<link>https://balyberdin.com/hey/all/ae-expressions/</link>
<pubDate>Tue, 09 Feb 2021 22:22:30 +0300</pubDate>
<author></author>
<comments>https://balyberdin.com/hey/all/ae-expressions/</comments>
<description>
&lt;p&gt;Собрал список выражений для Аfter Effects, которые упрощают мою работу. Совсем простых в стиле &lt;f&gt;loopOut()&lt;/f&gt; или &lt;f&gt;wiggle (.4,6)&lt;/f&gt; здесь нет, но и ничего слишком сложного тоже.&lt;/p&gt;
&lt;p&gt;Своих экспрешнов здесь всего несколько. Большинство я взял из интернета и немного адаптировал под себя. Так что там где уместно, я указал ссылки на авторов.&lt;/p&gt;
&lt;h2&gt;Динамическая рамка для текста&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-text_01_@loop.mp4#t=0.001" width="1280" height="560" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Плашка, которая автоматически подстраивается под длину текста.&lt;/p&gt;
&lt;p&gt;Создайте прямоугольный &lt;f&gt;Shape Layer&lt;/f&gt; и сверху отдельным слоем добавьте текст.&lt;br /&gt;
Примените экспрешн к параметру &lt;f&gt;Size&lt;/f&gt; у шейпа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;margin_width = 60;
margin_height = 40;

text_width = thisComp.layer(index-1).sourceRectAtTime().width;
text_height = thisComp.layer(index-1).sourceRectAtTime().height;

box_width = text_width + margin_width*2;
box_height = text_height + margin_height*2;

[box_width, box_height]&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://creativecow.net/forums/thread/changing-shape-layers-size-width-due-to-text-width/"&gt;© Kalleheikki Kannisto&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Если текст в несколько строк, то добавьте ещё этот экспрешн к &lt;f&gt;Position&lt;/f&gt; у шейпа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;x = value[0];
y = content(&amp;quot;Rectangle 1&amp;quot;).content(&amp;quot;Rectangle Path 1&amp;quot;).size[1]/2;
[x,y]&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Анимируемый wiggle&lt;/h2&gt;
&lt;p&gt;Простой способ анимировать wiggle с помощью двух слайдеров: первый отвечает за частоту, второй за амплитуду. Лучше анимировать только амплитуду.&lt;/p&gt;
&lt;p&gt;Добавьте эффект &lt;f&gt;Slider Control&lt;/f&gt; на слой с экспрешном и продублируйте его.&lt;br /&gt;
Примените экспрешн к нужному параметру:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;w_freq = effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;);
w_amplitude = effect(&amp;quot;Slider Control 2&amp;quot;)(&amp;quot;Slider&amp;quot;);

wiggle(w_freq,w_amplitude)&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Цикличный wiggle&lt;/h2&gt;
&lt;p&gt;Благодаря этому экспрешну, wiggle начинается и заканчивается в одной и той же точке.&lt;/p&gt;
&lt;p&gt;Если вдруг цикл не работает, то это скорей всего из-за того, что луп не успевает прийти в изначальное состояние за отведённое время. Просто увеличьте &lt;f&gt;loopTime&lt;/f&gt; или &lt;f&gt;freq&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;freq = 1;
amp = 65;

startTime = 0; // На какой секунде начинается луп
loopTime = 3; // Сколько секунд идёт

t = (time+startTime) % loopTime;
wiggle1 = wiggle(freq, amp, 1, 0.5, t);
wiggle2 = wiggle(freq, amp, 1, 0.5, t - loopTime);

linear(t, 0, loopTime, wiggle1, wiggle2)&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="http://www.motionscript.com/design-guide/looping-wiggle.html"&gt;© Dan Ebberts&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Прикрепить шейп к одной стороне&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_size-2_01_@loop.mp4#t=0.001" width="1280" height="560" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Фиксирует одну сторону шейпа на месте, когда вы меняете &lt;f&gt;Size&lt;/f&gt;.&lt;/p&gt;
&lt;p&gt;Примените к &lt;f&gt;Position&lt;/f&gt; у шейпа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;stickTo = &amp;quot;left&amp;quot;; // top, bottom, right or left
chosenShape = content(&amp;quot;Rectangle 1&amp;quot;).content(&amp;quot;Rectangle Path 1&amp;quot;);

if (stickTo == &amp;quot;top&amp;quot;){
     x = chosenShape.position[0];
     y = chosenShape.position[1]+chosenShape.size[1]/2;
}

else if (stickTo == &amp;quot;bottom&amp;quot;){
     x = chosenShape.position[0];
     y = chosenShape.position[1]-chosenShape.size[1]/2;
}

else if (stickTo == &amp;quot;right&amp;quot;){
     x = chosenShape.position[0]-chosenShape.size[0]/2
     y = chosenShape.position[1]
}

else if (stickTo == &amp;quot;left&amp;quot;){
     x = chosenShape.position[0]+chosenShape.size[0]/2;
     y = chosenShape.position[1]
}

[x,y]&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Риг для катящегося круга и квадрата&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_rolling_rig_01_@loop.mp4#t=0.001" width="1280" height="560" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;h3&gt;Катящийся круг&lt;/h3&gt;
&lt;p&gt;Примените к &lt;f&gt;Rotation&lt;/f&gt; и анимируйте &lt;f&gt;Position&lt;/f&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;transform.position[0]-(content(&amp;quot;Ellipse 1&amp;quot;).content(&amp;quot;Ellipse Path 1&amp;quot;).size[0]/2)-transform.position[0]/2&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Катящийся квадрат&lt;/h3&gt;
&lt;p&gt;Работает как с шейпами, так и со слоями и композициями.&lt;/p&gt;
&lt;p&gt;Примените экспрешн к &lt;f&gt;Position&lt;/f&gt;. Добавьте &lt;f&gt;Slider Control&lt;/f&gt; на этот же слой. Анимируйте &lt;f&gt;Rotation&lt;/f&gt;. Если квадрат катится неправильно, измените значение у &lt;f&gt;Slider Control&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;targetLayer = thisLayer;
squareSize = targetLayer.sourceRectAtTime().width;
squareDiag = (Math.sqrt(2)*squareSize)/2/3.5;

try{
    squareOffset = effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;);
}

catch(err) {
    squareOffset = 0;
}


rot=transform.rotation;
scl=transform.scale[0]/100;
w=(squareSize/2)*scl;
r=(degreesToRadians(rot))*2;
t=transform.position;

[t[0]+w*rot/45,t[1]-(Math.abs((squareDiag+squareOffset)*Math.sin(r)))*scl];&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://youtu.be/sVg8jnajLSk"&gt;На основе экспрешна от Mikey Borup&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Ступенчатые повороты&lt;/h2&gt;
&lt;p&gt;Альтернатива &lt;f&gt;time*n&lt;/f&gt;. Только вместо плавного вращения создаются ступенчатые движения. Отлично подходит для анимации стрелок часов, шестерёнок и других похожих механизмов.&lt;/p&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_rotator_01_@loop.mp4#t=0.001" width="1280" height="670" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Примените к &lt;f&gt;Rotation&lt;/f&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;angle = 15; // Угол поворота в секунду
rotateDuration = 10; // Длительность поворота в кадрах

rotateDurationFr = rotateDuration/(1/thisComp.frameDuration);

wholeSecond = Math.floor(time);
startAngle = wholeSecond * angle;
ease(time, wholeSecond, wholeSecond + rotateDurationFr, startAngle, startAngle + angle)&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://creativecow.net/forums/thread/clock-second-hand-ticking/"&gt;© Xinlai Ni&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Продвинутые ступенчатые повороты&lt;/h2&gt;
&lt;p&gt;Практически то же самое, что и выше. Но с чуть большим количеством настроек.&lt;/p&gt;
&lt;p&gt;Примените к &lt;f&gt;Rotation&lt;/f&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;angle = 15; // Угол поворота
rotateDuration = 6; // Длительность поворота в кадрах
timeStop = 5; // Длительность остановки между поворотами
offset = 0; // Сдвиг начального положения в кадрах

fr = timeToFrames(time)+offset;

cycle = timeStop+rotateDuration;
n = Math.floor(fr/cycle);
cur_phase = fr-n*cycle;

if((cur_phase)&amp;gt;timeStop){
angle*n+(cur_phase-timeStop)*angle/rotateDuration;
}
else{
angle*n;
}&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://aexpressions.ru/expressions/circular/analogue-clock/"&gt;© aexpressions.ru&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Постоянный масштаб при скейле&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_maintain-scale_01_@loop.mp4#t=0.001" width="1280" height="670" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Когда вы привязываете один объект к другому и масштабируете родительский, оба слоя увеличиваются. Этот экспрешн не позволяет дочернему слою менять масштаб и только перемещает его по позиции.&lt;/p&gt;
&lt;p&gt;Примените к &lt;f&gt;Scale&lt;/f&gt; у слоя, который должен сохранять постоянный масштаб:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;s = [];
ps = parent.transform.scale.value;
for (i = 0; i &amp;lt; ps.length; i++){
s[i] = value[i]*100/ps[i];
}
s&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://docs.google.com/spreadsheets/d/1a3ArTUHAJwVi-ObZofvz6IfrKbSGSENlaTIRTs8pAJU/edit?pageId=116871612094468624414#gid=0"&gt;© JR Canest&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Переключатель по чекбоксу&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_switcher_01_@loop.mp4#t=0.001" width="1020" height="490" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Меняет одно значение параметра на другое по нажатию на чекбокс.&lt;/p&gt;
&lt;p&gt;Добавьте эффект &lt;f&gt;Checkbox Control&lt;/f&gt; на слой с экспрешном. Примените экспрешн к любому параметру:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;if (effect(&amp;quot;Checkbox Control&amp;quot;)(1) == 0) 0 else 100&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Луп для шейпов&lt;/h2&gt;
&lt;p&gt;Обычный &lt;f&gt;loopOut()&lt;/f&gt; не работает с шейпами, но зато работает этот экспрешн.&lt;/p&gt;
&lt;p&gt;Примените к &lt;f&gt;Path&lt;/f&gt; у шейпа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;try{
pingPong = false; // Поставьте true, если нужен pingPong

timeStart = thisProperty.key(1).time;
duration = thisProperty.key(thisProperty.numKeys).time-timeStart;
quant=Math.floor((time-timeStart)/duration);

if(quant&amp;lt;0) quant = 0

if(quant%2 == 1 &amp;amp;&amp;amp; pingPong == true){
t = 2*timeStart+ (quant+1)*duration - time;
}

else{
t = time-quant*duration;
}
}
catch(err){
t = time;
}
thisProperty.valueAtTime(t)&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://aexpressions.ru/expressions/loop/loopout-path-ping-pong/"&gt;© aexpressions.ru&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Range Mapper&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_range-mapper_01_@loop.mp4#t=0.001" width="1150" height="560" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Преобразует значения из одного диапазона в другой.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt; Slider Control&lt;/f&gt; на слой. Примените экспрешн к нужному параметру:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;input = effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;);

inputLow = 0;
inputHigh = 100;
outputLow = 466;
outputHigh = 618;

linear(input,inputLow,inputHigh,outputLow,outputHigh)&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://creativecow.net/forums/thread/range-mapping-expression/"&gt;© Dan Ebberts&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Обводка независимая от скейла&lt;/h2&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp_stroke-scale_01_@loop.mp4#t=0.001" width="1280" height="670" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Сохраняет постоянную обводку у шейпов при изменении масштаба.&lt;/p&gt;
&lt;p&gt;Примените к &lt;f&gt;Stroke Width&lt;/f&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;value / length(toComp([0,0]), toComp([0.7071,0.7071])) || 0.001;&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://battleaxe.tumblr.com/post/101945073972/maintain-stroke-weight-expression"&gt;© Adam Plouff&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Счётчики&lt;/h2&gt;
&lt;p&gt;Подборка из 6 экспрешнов для создания различных счётчиков. По сути, все эти счётчики представляют собой текст, привязанный к &lt;f&gt;Slider Control&lt;/f&gt;, который можно анимировать при помощи ключей.&lt;/p&gt;
&lt;h3&gt;1. Обычный счётчик&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_simple_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Счётчик с фиксированным количеством десятичных знаков.&lt;/p&gt;
&lt;p&gt;Добавьте эффект &lt;f&gt;Slider Control&lt;/f&gt; к текстовому слою. Примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;. Количество знаков после запятой обозначается параметром &lt;f&gt;toFixed(2)&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;parseFloat(effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;)).toFixed(2)&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;2. Счётчик с запятыми вместо точек&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_comma_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Заменяет точку для десятичных знаков на запятую. Если нужен похожий сетап с большим количеством настроек, то он &lt;a href="http://keyframed.tv/how-to-format-a-slider-control-value-as-money-in-after-effects/"&gt;вот здесь&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt;Slider Control&lt;/f&gt; на текстовый слой и примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;c = parseFloat(effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;)).toFixed(2);
c.toString().replace(&amp;quot;.&amp;quot;, &amp;quot;,&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;3. Счётчик с дополнительными знаками&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_symbols_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Добавляет любые дополнительные символы в начале или конце счётчика.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt;Slider Control&lt;/f&gt; на текстовый слой и примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;&amp;quot;+&amp;quot;+parseFloat(effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;)).toFixed(2)+&amp;quot;%&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;4. Счётчик с нулями в начале&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_zeros_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Превращает числа из &lt;f&gt;1 &lt;/f&gt; в &lt;f&gt;001&lt;/f&gt;.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt;Slider Control&lt;/f&gt; на текстовый слой и примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;zerosAmount = 3;

var slider = effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;);

function padStart(string, targetLength, character) {
string = (string instanceof String) ? string : string.toString();
targetLength = targetLength &amp;gt;&amp;gt; 0;
character = character || ' ';

while (string.length &amp;lt; targetLength) {
string = character + string;
}

return string;
};

if (slider &amp;gt;= 0) {
zeroAmount = zerosAmount + 1;
paddedString = padStart(parseFloat(slider.value).toFixed(0), zerosAmount, '0');
}

else {
paddedString = '-0'+padStart(parseFloat(slider.value).toFixed(0)*-1, zerosAmount, '0');
}

paddedString;&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://community.adobe.com/t5/after-effects/how-to-create-a-counting-number-but-starting-with-zeros/td-p/10632356"&gt;На основе экспрешна от Tomas Sinkunas&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;5. Счётчик с разрядами&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_grouping_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Группирует цифры по разрядам, превращая &lt;f&gt;30000&lt;/f&gt; в &lt;f&gt;30 000&lt;/f&gt;.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt;Slider Control&lt;/f&gt; на текстовый слой и примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;num = parseFloat(effect(&amp;quot;Slider Control&amp;quot;)(&amp;quot;Slider&amp;quot;)).toFixed(0);
str = isNaN(num) ? &amp;quot;&amp;quot; : (num * 1 + &amp;quot;&amp;quot;);
str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://creativecow.net/forums/thread/number-expression-with-decimals/"&gt;© Tomas Bumbulevičius&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;6. Счётчик для больших чисел&lt;/h3&gt;
&lt;div class="quarter-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-counter_large_01_@loop.mp4#t=0.001" width="700" height="140" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Счётчик, привязанный к &lt;f&gt;Slider Control&lt;/f&gt;, не идёт дальше 1 000 000. Поэтому если нужны большие числа, приходится использовать эффект &lt;f&gt;Angle Control&lt;/f&gt;.&lt;/p&gt;
&lt;p&gt;Добавьте &lt;f&gt;Angle Control&lt;/f&gt; на текстовый слой и примените экспрешн к &lt;f&gt;Source Text&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;number = Math.round(effect(&amp;quot;Angle Control&amp;quot;)(&amp;quot;Angle&amp;quot;)/360);

n=&amp;quot;&amp;quot; + number;
s=&amp;quot;&amp;quot;;
for(i=0, l=n.length; i&amp;amp;#60;l;  i++){
    if(s &amp;amp;&amp;amp; s!=&amp;quot;-&amp;quot; &amp;amp;&amp;amp; (l-i)%3 ==0)
                s+=&amp;quot; &amp;quot;; 
        s += n[i];
}
s;&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://chunkmotion.design/resources/after-effects-expressions/"&gt;© Chunk Motion&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Мини-экспрешны&lt;/h2&gt;
&lt;p&gt;И, под конец, 4 полезных мини-выражения, которые часто пригождаются.&lt;/p&gt;
&lt;h3&gt;1. Привязка к слою выше или ниже&lt;/h3&gt;
&lt;div class="half-video"&gt;&lt;div class="e2-text-video"&gt;
&lt;video src="https://balyberdin.com/hey/video/en_exp-index-1_01_@loop.mp4#t=0.001" width="900" height="560" autoplay muted loop playsinline alt="" /&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Это не полноценный экспрешн, а только его часть. Вместо того, чтобы привязывать один слой к другому напрямую, иногда удобнее динамически привязывать к слою, который стоит выше или ниже слоя с экспрешном.&lt;/p&gt;
&lt;p&gt;В примере, я привязываю позицию у слоя с шейпом к любому слою, который стоит выше на таймлайне. Если нужна привязка к слою ниже, то используйте &lt;f&gt;index+1&lt;/f&gt;.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;thisComp.layer(index-1)&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;2. Постоянно ускоряющиеся повороты&lt;/h3&gt;
&lt;p&gt;Добавьте это к &lt;f&gt;Rotation&lt;/f&gt;, чтобы создать вращение, которое становится быстрее с каждой секундой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;time*time*time*time&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;3. Ключи для time*n&lt;/h3&gt;
&lt;p&gt;Добавляет постоянное движение, но оставляет возможность ставить ключи.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;value+time*11&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://youtu.be/rsW4fwscwKI?t=193"&gt;© Ben Marriott&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;4. Привязка градиента к слою&lt;/h3&gt;
&lt;p&gt;Чтобы &lt;f&gt;Gradient Ramp&lt;/f&gt; не слетал при перемещении слоя, добавьте на &lt;f&gt;Start&lt;/f&gt; и &lt;f&gt;End&lt;/f&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;toComp(value)&lt;/code&gt;&lt;/pre&gt;&lt;p class="foot"&gt;&lt;a href="https://aexpressions.ru/expressions/misc/link-ramp-to-layer/"&gt;© aeexpressions.ru&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Это все выражения, которыми я пользуюсь на постоянной основе. Всего получилось 23.&lt;br /&gt;
&lt;a href="https://balyberdin.gumroad.com/l/ae-expressions"&gt;📁 Проект со всеми экспрешнами&lt;/a&gt;, который вы можете скачать бесплатно.&lt;/p&gt;
</description>
</item>


</channel>
</rss>