Текущие версии программ: After Effects CC 2017 v14.0.1  Premiere Pro CC 2017 v11.0.1

не стесняйтесь создавать новые темы для новых вопросов

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

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

Автор темы
aeplug
Санта
Санта
Сообщения: 850
Зарегистрирован: 18 мар 2016 23:20
Откуда: С Ютуба
Благодарил (а): 2 раза
Поблагодарили: 82 раза

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

seedRandom(seed, timeless = false)

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

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

Так же в группе случайных функций вы может заметить еще несколько вариантов:
  • 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 КБ) 79 скачиваний
Гереатор случаных чисел CC 2015.rar
(6.65 КБ) 79 скачиваний


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


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Делаем интро с 3D цифрами в Cinema 4D и After Effects Вложения
    aeplug » 12 апр 2016 17:11 » в форуме Мои уроки
    1
    431
    aeplug
    13 апр 2016 00:25
  • Скрипты для выражений
    aeplug » 07 сен 2016 23:05 » в форуме Каталог скриптов
    0
    66
    aeplug
    07 сен 2016 23:05
  • Подборка уроков по анимации текста в Adobe After Effects Вложения
    aeplug » 19 апр 2016 15:39 » в форуме Мои уроки
    3
    2036
    aeplug
    23 июн 2016 23:19
  • Создание анимации появления 3D текста в After Effects с плагином Element 3D Вложения
    aeplug » 17 июн 2016 19:18 » в форуме Мои уроки
    0
    834
    aeplug
    17 июн 2016 19:18
  • Появление мятых бумажных букв или текста в After Effects (скрипт Origami) Вложения
    aeplug » 28 сен 2016 18:34 » в форуме Мои уроки
    0
    219
    aeplug
    28 сен 2016 18:34

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

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

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