Сделать это достаточно просто, используя систему выражений в After Effects для свойства слоя Source Text.
Зажимаем кнопку ALT и щелкаем мышкой по кнопке секундомера для создания простого выражения по умолчанию.
Более подробно о выражениях смотрите тут - Запись стрима по выражениям (expressions) в After Effects
https://www.youtube.com/watch?v=3SoxCcRYirA
Теперь через меню быстрого доступа к функциям в группе Random Numbers можем назначить нужную функцию. Выберем пока самую простую random().
Теперь в каждом кадре у текста будет свое уникальное цифровое значение в диапазоне от 0 до 1.
Для этой функции можно использовать несколько параметров в скобках - минимальное и максимальное значения.
Например random(1000) будет генерировать случайное число от 0 до 1000. А random(500, 2000) - в диапазоне от 500 до 2000. Не всем может понравится длинный хвост из дробных значений случайного числа. От него можно легко избавиться с помощью одной из функций:
- Math.round()
- Math.floor()
- Math.ceil()
Честно говоря, я особо не вникал какая между ними разница, но эту информацию можно без проблем найти в интернете на сайтах посвященных JavaScript. Возьмем самую простую функцию округления, знакомую всем по начальным классам в школе. Таким образом мы избавились от "хвоста" ненужных цифр.
Если же все таки "хвост" нужен, но не такой длинный, можно использовать
Код: Выделить всё
toFixed(количество цифр после десятичного знака)
Только вот результат будет уже не цифровым значением, а текстовым. Это может вызвать проблемы с последующими арифметическими операциями в формуле. Как в этом примере, когда "+2" просто добавляется к концу текстовой строки как текст, вместо целой части самого числа.
Текст с такими выражениями меняется в каждом кадре и это может оказаться слишком быстрым мельтешением. В таком случаем мы можем добавить
Код: Выделить всё
posterizeTime(частота изменений в секунду)
В этом примере генерация нового числа будет происходит только 2 раза в секунду, а не в каждом кадре. Если на разные текстовые слои скопировать это выражение, то для каждого слоя будет создаваться свое уникальное значение. Так что просто дублируя такой слой, мы получаем новый набор цифр, что бывает удобно для быстрого создания анимированных массивов случайных цифр.
Дело в том, что для генерации наборов случайных чисел обычно используется уникальный идентификатор слоя (который просто не может быть одинаковым у разных слоев), свойство внутри слоя, текущего времени и значения смещения равного 0. Аналогом этого значения является параметр Seed, который часто используется в других плагинах и программах, так или иначе связанных со случайными значениями. Изменять его значения в выражении After Effects можно функцией
Код: Выделить всё
seedRandom(seed, timeless = false)
Где seed как раз и будет число, отвечающее за уникальность каждого набора (значение смещения, отличное от 0). А timeless будет ли оно меняться в течении ролика (зависеть от переменой времени time) или нет. Например seedRandom(1, true) запретит числу меняться вообще.
Но каждый новый слой с такой формулой все равно будет иметь свое уникальное, но постоянное значение. Тоже бывает очень удобно для создания всяких шкал и графиков, где не нужно менять числа.
Так же в группе случайных функций вы может заметить еще несколько вариантов:
- gaussRandom()
- gaussRandom(maxValOrArray)
- gaussRandom(minValOrArray, maxValOrArray)
Дополнительную информацию по этой теме вы можете найти в документации по After Effects - Язык выражений в After Effects
https://helpx.adobe.com/ru/after-effects/using/expression-language-reference.html
А ниже скачать сам проект, который я использовал для демонстрации, с несколькими примерами из этого урока.