Генерирование текста со случайными цифрами с помощью выражений в After Effects

Ссылки, описания, дополнительная информация для моих уроков на YouTube
Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Генерирование текста со случайными цифрами с помощью выражений в After Effects


Теги:

Сообщение #1 aeplug » 25 май 2016, 03:36

Создавая технологичное видео, пропитанное духом информационных технологий, частенько бывает нужно на фоне разместить разные тестовые слои с меняющимися или статичными цифрами в качестве так называемого "визуального мусора".
poster.jpg
poster.jpg (41.1 КБ) 14655 просмотров
poster.jpg
poster.jpg (41.1 КБ) 14655 просмотров

Сделать это достаточно просто, используя систему выражений в After Effects для свойства слоя Source Text.
Свойство текстового слоя Source Text.jpg
Свойство текстового слоя Source Text.jpg (39.2 КБ) 14803 просмотра
Свойство текстового слоя Source Text.jpg
Свойство текстового слоя Source Text.jpg (39.2 КБ) 14803 просмотра

Зажимаем кнопку ALT и щелкаем мышкой по кнопке секундомера для создания простого выражения по умолчанию.
создание выражения с ALT.jpg
создание выражения с ALT.jpg (12.94 КБ) 14803 просмотра
создание выражения с ALT.jpg
создание выражения с ALT.jpg (12.94 КБ) 14803 просмотра

Более подробно о выражениях смотрите тут - Запись стрима по выражениям (expressions) в After Effects
https://www.youtube.com/watch?v=3SoxCcRYirA
Теперь через меню быстрого доступа к функциям в группе Random Numbers можем назначить нужную функцию. Выберем пока самую простую random().
Фукнкции группы Random.jpg
Фукнкции группы Random.jpg (43.11 КБ) 14803 просмотра
Фукнкции группы Random.jpg
Фукнкции группы Random.jpg (43.11 КБ) 14803 просмотра

Теперь в каждом кадре у текста будет свое уникальное цифровое значение в диапазоне от 0 до 1.
простой random.jpg
простой random.jpg (34.96 КБ) 14803 просмотра
простой random.jpg
простой random.jpg (34.96 КБ) 14803 просмотра

Для этой функции можно использовать несколько параметров в скобках - минимальное и максимальное значения.
Разновидности фукции random.jpg
Разновидности фукции random.jpg (4.3 КБ) 14803 просмотра
Разновидности фукции random.jpg
Разновидности фукции random.jpg (4.3 КБ) 14803 просмотра

Например random(1000) будет генерировать случайное число от 0 до 1000. А random(500, 2000) - в диапазоне от 500 до 2000. Не всем может понравится длинный хвост из дробных значений случайного числа. От него можно легко избавиться с помощью одной из функций:
  • Math.round()
  • Math.floor()
  • Math.ceil()
Округление чисел.jpg
Округление чисел.jpg (32.38 КБ) 14803 просмотра
Округление чисел.jpg
Округление чисел.jpg (32.38 КБ) 14803 просмотра

Честно говоря, я особо не вникал какая между ними разница, но эту информацию можно без проблем найти в интернете на сайтах посвященных JavaScript. Возьмем самую простую функцию округления, знакомую всем по начальным классам в школе. Таким образом мы избавились от "хвоста" ненужных цифр.
Нет хвоста.jpg
Нет хвоста.jpg (22.78 КБ) 14803 просмотра
Нет хвоста.jpg
Нет хвоста.jpg (22.78 КБ) 14803 просмотра

Если же все таки "хвост" нужен, но не такой длинный, можно использовать

Код: Выделить всё

toFixed(количество цифр после десятичного знака)

Действие tofixed.jpg
Действие tofixed.jpg (16.78 КБ) 14803 просмотра
Действие tofixed.jpg
Действие tofixed.jpg (16.78 КБ) 14803 просмотра

Только вот результат будет уже не цифровым значением, а текстовым. Это может вызвать проблемы с последующими арифметическими операциями в формуле. Как в этом примере, когда "+2" просто добавляется к концу текстовой строки как текст, вместо целой части самого числа.
операция сложения.jpg
операция сложения.jpg (16.43 КБ) 14803 просмотра
операция сложения.jpg
операция сложения.jpg (16.43 КБ) 14803 просмотра

Текст с такими выражениями меняется в каждом кадре и это может оказаться слишком быстрым мельтешением. В таком случаем мы можем добавить

Код: Выделить всё

posterizeTime(частота изменений в секунду)

Действие posterizeTime.jpg
Действие posterizeTime.jpg (24.63 КБ) 14803 просмотра
Действие posterizeTime.jpg
Действие posterizeTime.jpg (24.63 КБ) 14803 просмотра

В этом примере генерация нового числа будет происходит только 2 раза в секунду, а не в каждом кадре. Если на разные текстовые слои скопировать это выражение, то для каждого слоя будет создаваться свое уникальное значение. Так что просто дублируя такой слой, мы получаем новый набор цифр, что бывает удобно для быстрого создания анимированных массивов случайных цифр.
Несколько текстовых слоев.jpg
Несколько текстовых слоев.jpg (53.37 КБ) 14803 просмотра
Несколько текстовых слоев.jpg
Несколько текстовых слоев.jpg (53.37 КБ) 14803 просмотра

Дело в том, что для генерации наборов случайных чисел обычно используется уникальный идентификатор слоя (который просто не может быть одинаковым у разных слоев), свойство внутри слоя, текущего времени и значения смещения равного 0. Аналогом этого значения является параметр Seed, который часто используется в других плагинах и программах, так или иначе связанных со случайными значениями. Изменять его значения в выражении After Effects можно функцией

Код: Выделить всё

seedRandom(seed, timeless = false)

Где seed как раз и будет число, отвечающее за уникальность каждого набора (значение смещения, отличное от 0). А timeless будет ли оно меняться в течении ролика (зависеть от переменой времени time) или нет. Например seedRandom(1, true) запретит числу меняться вообще.
Статичные случайные числа.jpg
Статичные случайные числа.jpg (48.02 КБ) 14803 просмотра
Статичные случайные числа.jpg
Статичные случайные числа.jpg (48.02 КБ) 14803 просмотра

Но каждый новый слой с такой формулой все равно будет иметь свое уникальное, но постоянное значение. Тоже бывает очень удобно для создания всяких шкал и графиков, где не нужно менять числа.

Так же в группе случайных функций вы может заметить еще несколько вариантов:
  • gaussRandom()
  • gaussRandom(maxValOrArray)
  • gaussRandom(minValOrArray, maxValOrArray)
От обычного random() они отличаются гауссовым распределением (Нормальное распределение — Википедия) при генерации. Примерно 90% результатов будет находится в диапазоне 0–1, а оставшиеся 10% вне этого диапазона (так написано в документации у Adobe).

Дополнительную информацию по этой теме вы можете найти в документации по After Effects - Язык выражений в After Effects
https://helpx.adobe.com/ru/after-effects/using/expression-language-reference.html
А ниже скачать сам проект, который я использовал для демонстрации, с несколькими примерами из этого урока.
Вложения
Гереатор случаных чисел CC 2015.rar
(6.65 КБ) 995 скачиваний
Гереатор случаных чисел CC 2015.rar
(6.65 КБ) 995 скачиваний


Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах

Теги:


Аватара пользователя

Автор темы
aeplug
Санта
Санта
Сообщения: 2802
Зарегистрирован: 18 мар 2016, 23:20
Откуда: С Ютуба
Благодарил (а): 18 раз
Поблагодарили: 274 раза
Контактная информация:

Полезные ссылки по теме

Сообщение #2 aeplug » 27 июл 2017, 02:53

Пресет для цифр с разделителем групп
Animated Number Counters - After Effects Tutorial (No Third Party Plugin)
https://www.youtube.com/watch?v=9p2sSXSFJwg
Видео уроки для After Effects http://www.youtube.com/AEPlug
Платные консультации по работе в программах


Вернуться в «Мои уроки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей