Что такое временная интерполяция

Интерполяция данных: соединяем точки так, чтобы было красиво

Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Немного матчасти

Восстановление промежуточных значений функции, которая в данном случае задана таблично в виде точек P1&nbsp. &nbspPn, называется интерполяцией. Есть множество способов интерполяции, но все они могут быть сведены к тому, что надо найти n&nbsp–&nbsp1 функцию для расчёта промежуточных точек на соответствующих сегментах. При этом заданные точки обязательно должны быть вычислимы через соответствующие функции. На основе этого и может быть построен график:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Функции fi могут быть самыми разными, но чаще всего используют полиномы некоторой степени. В этом случае итоговая интерполирующая функция (кусочно заданная на промежутках, ограниченных точками Pi) называется сплайном.

В разных инструментах для построения графиков — редакторах и библиотеках — задача «красивой интерполяции» решена по-разному. В конце статьи будет небольшой обзор существующих вариантов. Почему в конце? Чтобы после ряда приведённых выкладок и размышлений можно было поугадывать, кто из «серьёзных ребят» какие методы использует.

Ставим опыты

Самый простой пример — линейная интерполяция, в которой используются полиномы первой степени, а в итоге получается ломаная, соединяющая заданные точки.
Давайте добавим немного конкретики. Вот набор точек (взяты почти с потолка):

Результат линейной интерполяции этих точек выглядит так:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Однако, как отмечалось выше, иногда хочется получить в итоге гладкую кривую.

Что есть гладкость? Бытовой ответ: отсутствие острых углов. Математический: непрерывность производных. При этом в математике гладкость имеет порядок, равный номеру последней непрерывной производной, и область, на которой эта непрерывность сохраняется. То есть, если функция имеет гладкость порядка 1 на отрезке [a;&nbspb], это означает, что на [a;&nbspb] она имеет непрерывную первую производную, а вот вторая производная уже терпит разрыв в каких-то точках.
У сплайна в контексте гладкости есть понятие дефекта. Дефект сплайна — это разность между его степенью и его гладкостью. Степень сплайна — это максимальная степень использованных в нём полиномов.
Важно отметить, что «опасными» точками у сплайна (в которых может нарушиться гладкость) являются как раз Pi, то есть точки сочленения сегментов, в которых происходит переход от одного полинома к другому. Все остальные точки «безопасны», ведь у полинома на области его определения нет проблем с непрерывностью производных.
Чтобы добиться гладкой интерполяции, нужно повысить степень полиномов и подобрать их коэффициенты так, чтобы в граничных точках сохранялась непрерывность производных.

Традиционно для решения такой задачи используют полиномы третьей степени и добиваются непрерывности первой и второй производной. То, что получается, называют кубическим сплайном дефекта 1. Вот как он выглядит для наших данных:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Кривая, действительно, гладкая. Но если предположить, что это график некоторого процесса или явления, который нужно показать заинтересованному лицу, то такой метод, скорее всего, не подходит. Проблема в ложных экстремумах. Появились они из-за слишком сильного искривления, которое было призвано обеспечить гладкость интерполяционной функции. Но зрителю такое поведение совсем не кстати, ведь он оказывается обманут относительно пиковых значений функции. А ради наглядной визуализации этих значений, собственно, всё и затевалось.
Так что надо искать другие решения.

Другое традиционное решение, кроме кубических сплайнов дефекта 1 — полиномы Лагранжа. Это полиномы степени n&nbsp–&nbsp1, принимающие заданные значения в заданных точках. То есть членения на сегменты здесь не происходит, вся последовательность описывается одним полиномом.
Но вот что получается:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Гладкость, конечно, присутствует, но наглядность пострадала так сильно, что… пожалуй, стоит поискать другие методы. На некоторых наборах данных результат выходит нормальный, но в общем случае ошибка относительно линейной интерполяции (и, соответственно, ложные экстремумы) может получаться слишком большой — из-за того, что тут всего один полином на все сегменты.

В компьютерной графике очень широко применяются кривые Безье, представленные полиномами k-й степени.
Они не являются интерполирующими, так как из k&nbsp+&nbsp1 точек, участвующих в построении, итоговая кривая проходит лишь через первую и последнюю. Остальные k&nbsp–&nbsp1 точек играют роль своего рода «гравитационных центров», притягивающих к себе кривую.
Вот пример кубической кривой Безье:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Как это можно использовать для интерполяции? На основе этих кривых тоже можно построить сплайн. То есть на каждом сегменте сплайна будет своя кривая Безье k-й степени (кстати, k&nbsp=&nbsp1 даёт линейную интерполяцию). И вопрос только в том, какое k взять и как найти k&nbsp–&nbsp1 промежуточную точку.
Здесь бесконечно много вариантов (поскольку k ничем не ограничено), однако мы рассмотрим классический: k&nbsp=&nbsp3.
Чтобы итоговая кривая была гладкой, нужно добиться дефекта 1 для составляемого сплайна, то есть сохранения непрерывности первой и второй производных в точках сочленения сегментов (Pi), как это делается в классическом варианте кубического сплайна.
Решение этой задачи подробно (с исходным кодом) рассмотрено здесь.
Вот что получится на нашем тестовом наборе:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Стало лучше: ложные экстремумы всё ещё есть, но хотя бы не так сильно отличаются от реальных.

Думаем и экспериментируем

Можно попробовать ослабить условие гладкости: потребовать дефект 2, а не 1, то есть сохранить непрерывность одной только первой производной.
Достаточное условие достижения дефекта 2 в том, что промежуточные контрольные точки кубической кривой Безье, смежные с заданной точкой интерполируемой последовательности, лежат с этой точкой на одной прямой и на одинаковом расстоянии:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Методом проб и ошибок эвристика для расчёта расстояния от точки интерполируемой последовательности до промежуточной контрольной получилась такой:

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Первая и последняя промежуточные контрольные точки равны первой и последней точке графика соответственно (точки C1 (1) и Cn&nbsp–&nbsp1 (2) совпадают с точками P1 и Pn соответственно).
В этом случае получается вот такая кривая:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Как видно, ложных экстремумов уже нет. Однако если сравнивать с линейной интерполяцией, местами ошибка очень большая. Можно сделать её ещё меньше, но тут в ход пойдут ещё более хитрые эвристики.

Эвристика для вычисления расстояний будет такой:

Результат получается такой:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

В результате на шестом сегменте ошибка уменьшилась, а на седьмом — увеличилась: кривизна у Безье на нём оказалась больше, чем хотелось бы. Исправить ситуацию можно, принудительно уменьшив кривизну и тем самым «прижав» Безье ближе к отрезку прямой, которая соединяет граничные точки сегмента. Для этого используется следующая эвристика:

Результат следующий:
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

На этом было принято решение признать цель достигнутой.
Может быть, кому-то пригодится код.

А как люди-то делают?

Обещанный обзор. Конечно, перед решением задачи мы посмотрели, кто чем может похвастаться, а уже потом начали разбираться, как сделать самим и по возможности лучше. Но вот как только сделали, не без удовольствия ещё раз прошлись по доступным инструментам и сравнили их результаты с плодами наших экспериментов. Итак, поехали.

MS Excel

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Это очень похоже на рассмотренный выше сплайн дефекта 1, основанный на кривых Безье. Правда, в отличие от него в чистом виде, тут всего два ложных экстремума — первый и второй сегменты (у нас было четыре). Видимо, к классическому поиску промежуточных контрольных точек тут добавляются ещё какие-то эвристики. Но ото всех ложных экстремумов они не спасли.

LibreOffice Calc

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

В настройках это названо кубическим сплайном. Очевидно, он тоже основан на Безье, и вот тут уже точная копия нашего результата: все четыре ложных экстремума на месте.

Есть там ещё один тип интерполяции, который мы тут не рассматривали: B-сплайн. Но для нашей задачи он явно не подходит, так как даёт вот такой результат 🙂
Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Highcharts, одна из самых популярных JS-библиотек для построения диаграмм

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Тут налицо «метод касательных» в варианте равенства расстояний от точки интерполируемой последовательности до промежуточных контрольных. Ложных экстремумов нет, зато есть сравнительно большая ошибка относительно линейной интерполяции (седьмой сегмент).

amCharts, ещё одна популярная JS-библиотека

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Картина очень похожа на экселевскую, те же два ложных экстремума в тех же местах.

Coreplot, самая популярная библиотека построения графиков для iOS и OS X

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Есть ложные экстремумы и видно, что используется сплайн дефекта 1 на основе Безье.
Библиотека открытая, так что можно посмотреть в код и убедиться в этом.

aChartEngine, вроде как самая популярная библиотека построения графиков для Android

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Больше всего похоже на кривую Безье степени n&nbsp–&nbsp1, хотя в самой библиотеке график называется «cubic line». Странно! Как бы то ни было, тут не только присутствуют ложные экстремумы, но и в принципе не выполняются условия интерполяции.

Источник

Управление изменением эффекта с помощью интерполяции ключевого кадра

Интерполяция — процесс заполнения неизвестных данных между двумя известными значениями. В цифровом видео это, как правило, означает генерацию новых значений между двумя ключевыми кадрами. Например, если нужно переместить графический элемент (например, заголовок) на 50 пикселей влево на экране, и это должно быть сделано в 15 кадров, задайте положение графического элемента в первом и пятнадцатом кадре, а затем пометьте эти кадры как ключевые. После этого программное обеспечение самостоятельно интерполирует промежуточные кадры, чтобы движение выглядело плавным. Поскольку при интерполяции генерируются кадры между двумя ключевыми кадрами, ее иногда называют построением промежуточных кадров. С помощью интерполяции между ключевыми кадрами можно анимировать движение, эффекты, громкость звука, коррекцию изображений, прозрачность, изменение цвета и многие другие визуальные и звуковые элементы.

Применяет выбранный метод интерполяции к изменениям движения. Временную интерполяцию можно использовать, например, для определения способа перемещения объекта: с постоянной скоростью или с постепенным ускорением вдоль траектории движения. Временную интерполяцию ключевых кадров можно применить к только нескольким эффектам в Premiere Pro.

Применяет выбранный метод интерполяции к изменениям формы. Пространственную интерполяцию можно использовать, например, для указания типа углов: скругленные или острые. Пространственную интерполяцию можно применить к ключевым кадрам многих эффектов в Premiere Pro.

Два самых распространенных типа интерполяции — линейная интерполяция и интерполяция по кривой Безье. Можно применить любой из этих типов интерполяции в зависимости от нужного типа изменения.

Создает равномерно изменяющийся переход от одного ключевого кадра к другому. При этом все промежуточные кадры получают равные доли измененного значения. Изменения, созданные с помощью линейной интерполяции, резко начинаются и завершаются и формируются с постоянной скоростью между каждой парой ключевых кадров.

Интерполяция по кривой Безье

Позволяет ускорить или замедлить изменение на основе кривой Безье. Например, плавно увеличить скорость в первом ключевом кадре, а затем медленно замедляться ко второму кадру.

Изменение метода интерполяции ключевого кадра

Изменяя и корректируя интерполяцию ключевого кадра, можно добиться точного управления скоростью изменения в анимации. Тип интерполяции можно выбрать в контекстном меню или вручную изменить тип от одного ключевого кадра к другому, изменяя кадры или маркеры.

Интерполяцию ключевого кадра можно также быстро настроить с помощью команд «Увеличение замедления» и «Уменьшение замедления».

A. Ключевой кадр с линейной пространственной интерполяцией B. Автоматическая интерполяция по кривой Безье C. Интерполяция по непрерывной кривой Безье

На панели «Элементы управления эффектами» щелкните правой кнопкой мыши маркер ключевого кадра.

На панели «Таймлайн» щелкните правой кнопкой мыши ключевой кадр.

Создает равномерное изменение между ключевыми кадрами.

Позволяет вручную изменить форму диаграммы и скорость изменения по обе стороны ключевого кадра. С помощью этого метода можно создать очень плавные изменения.

Автоматическая по Безье

Обеспечивает плавное изменение скорости через ключевой кадр. При изменении значения ключевого кадра изменяются маркеры направления автоматической интерполяции по кривой Безье, обеспечивая плавный переход между ключевыми кадрами.

Непрерывная кривая Безье

Обеспечивает плавное изменение скорости через ключевой кадр. Однако в отличие от метода автоматической интерполяции по кривой Безье, непрерывная кривая Безье позволяет вручную обрабатывать маркеры направления. При изменении формы диаграммы с одной стороны ключевого кадра ее форма изменяется и с другой стороны ключевого кадра для обеспечения плавного перехода.

Изменяет значение свойства без постепенного перехода (резкое изменение эффекта). Диаграмма за ключевым кадром с примененной интерполяцией «Остановка» отображается как горизонтальная прямая линия.

Замедляет изменение значения, приближающегося к ключевому кадру.

Постепенно ускоряет изменение значения, удаляющегося от ключевого кадра.

Хотя методы интерполяции могут с разной скоростью изменять свойства между ключевыми кадрами, они не могут изменить время между ключевыми кадрами. Длительность определяется временем (или расстоянием на линейке времени) между ключевыми кадрами.

A. Нормальный вход/выход B. Кривая Безье/Непрерывная кривая Безье/Увеличение замедления/Уменьшение замедления C. Автоматическая по Безье D. Остановка

Управление изменением с помощью интерполяции ключевого кадра по кривой Безье

Маркеры кривой Безье представляют собой двунаправленные элементы управления, которые изменяют кривизну отрезка линии между маркером и следующей точкой на любой из сторон. Чем дальше находится маркер о текущего ключевого кадра (центральной точки), тем сильнее изгибается линия. Кривая, созданная перемещением маркера кривой Безье, определяет плавность изменения эффекта по мере приближения свойства анимации к ключевому кадру и удалению от него. Эти маркеры позволяют более гибко управлять изменением анимации в отличие от простого выбора метода интерполяции ключевого кадра. С маркерами Безье можно работать на панелях «Таймлайн», «Элементы управления эффектами» или «Программный монитор».

Создание ключевых кадров кривой Безье

(Панель «Таймлайн») Выберите свойство, которое нужно изменить, в меню эффекта рядом с названием клипа или дорожки. Свойства временной интерполяции настраиваются на панели «Таймлайн». Выделите клип на панели «Программный монитор», если нужно изменить пространственную интерполяцию.

(Панель «Элементы управления эффектами») Выберите маркеры свойства эффекта для ключевых кадров, которые нужно изменить.

(Панель «Таймлайн») Щелкните правой кнопкой мыши ключевой кадр, который нужно изменить, и выберите в меню метод интерполяции ключевого кадра.

(Панель «Элементы управления эффектами») Щелкните правой кнопкой мыши маркер ключевого кадра, который нужно настроить, и выберите в меню метод интерполяции ключевого кадра.

Если в ключевом кадре используется линейная интерполяция, для ее изменения на интерполяцию «Автоматическая по Безье» щелкните ключевой кадр на панели «Таймлайн», удерживая нажатой клавишу CTRL (Windows) или COMMAND (Mac OS), или щелкните маркер ключевого кадра на панели «Элементы управления эффектами», удерживая нажатой клавишу CTRL (Windows) или COMMAND (Mac OS). Если перетащить маркеры, интерполяция ключевого кадра изменится на интерполяцию «Непрерывная кривая Безье».

Если для ключевого кадра используется интерполяция «Автоматическая по Безье», для ее изменения на интерполяцию «Кривая Безье» щелкните ключевой кадр, удерживая нажатой клавишу CTRL (Windows) или COMMAND (Mac OS), и перетащите маркер направления. Интерполяция по кривой Безье позволяет независимо управлять каждым маркером направления. Чтобы преобразовать ее в интерполяцию «Непрерывная кривая Безье», просто перетащите маркер.

Если для ключевого кадра используется интерполяция «Кривая Безье», «Непрерывная кривая Безье» или «Автоматическая по Безье», для ее изменения на линейную интерполяцию, щелкните ключевой кадр, удерживая нажатой клавишу CTRL (Windows) или COMMAND (Mac OS). Маркеры интерполяции «Кривая Безье» исчезнут.

Источник

aexpressions

Выражения и скрипты для After Effects

Temporal Interpolation. Что это такое и с чем ее едят

Temporal Interpolation

Приветствую всех! Это первая статья из цикла «Теория АЕ«, в котором мы будем разбирать основные понятия After Effects, что они собой представляют и как с ними работать с помощью скриптов или же выражений. А сегодня мы с вами разберемся, что такое Temporal Interpolation и зачем о ней вообще знать. И потом напишем с вами скрипт, который позволит вам выставлять рандомные значения интерполяции на любом количестве ключей. Как здесь:

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Что это такое

Всего есть два вида интерполяции в After Effects — Temporal и Spatial Interpolation. Temporal в переводе с английского — временной, зависящий от времени. Spatial — пространственный. Таким образом, мы имеем временнУю интерполяцию и пространственную интерполяцию. Пространственная интерполяция есть только у пространственных свойств, позиции ( Position ), якорной точки( Anchor Point ) и их вариаций вроде контроллера точки ( Point Control ) и т.д. У всех прочих есть только временная интерполяция. Про пространственную интерполяцию мы еще поговорим подробнее в другой статье, а сейчас не о ней.

Временная интерполяция в AE отвечает за изменение значения(value) свойства между ключами/кейфреймами (key/keyframe) по времени.Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

Всего есть 3 вида интерполяции:

Какая у ключа в данный момент интерполяция, можно нажав правой клавишей мыши по ключу и выбрав пункт меню «Keyframe Interpolation«. Предполагаю, что в русифицированной версии этот пункт будет называться «Интерполяция ключа«. В появившемся меню самый верхний пункт — Temporal Interpolation, и в выпадающем списке вы найдете все указанные виды и еще два, Continious Bezier и Auto Bezier, которые в общем-то, являются тем же Bezier, но со значениями, вычисляемыми программой, а не заданными вручную.

Для линейной интерполяции характерна постоянная скорость изменения значения свойства, в данном случае позиции.

Интерполяция удержания вообще не имеет скорости, она удерживает одно и то же значение вплоть до непосредственного его изменения на следующем ключе.

Но линейная интерполяция и интерполяция удержания нам не интересны, не так ли? Так что пропускаем их.

BEZIER Interpolation

А вот самая интересная, безье интерполяция задается с помощью 2-х свойств: скорости (speed) и влияния/воздействия (influence). Эти два свойства содержатся в специальном объекте, который называется KeyframeEase. Эти значения для каждого ключа можно посмотреть, нажав по ключу правой кнопкой мыши и выбрав пункт «Keyframe Velocity…«/»Скорость ключа…«. ( Предупреждаю, если до выбора этого пункта у вас была линейная интерполяция на ключе — она изменится на безье. ) Вы сразу увидите, что у каждого ключа есть входящая, скажем так, быстрота (Incoming Velocity) и исходящая (Outcoming Velocity). Мы назовем ее быстротой, чтобы различать со скоростью (speed), которая является одной из составляющих быстроты. В чем между ними разница? Скорость — это значение, быстрота — это вектор.

Но мало кто знает, что скорость не обязательно должна быть равна нулю.

Работаем со скоростью

Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция Что такое временная интерполяция. Смотреть фото Что такое временная интерполяция. Смотреть картинку Что такое временная интерполяция. Картинка про Что такое временная интерполяция. Фото Что такое временная интерполяция

То есть, после того как вы задали influence с помощью скрипта, для особого шика стоит залезть в графики и поколдовать со скоростью.

С теорией, думаю, все понятно. А теперь давайте напишем скрипт, который будет задавать рандомный influence и speed ключам.

Пишем скрипт

keyState и рандомное значение

В начале мы создаем переменную keyState, в которой записывается окружение клавиатуры. Т.е. какое состояние было у всех клавиш клавиатуры в момент начала исполнения скрипта. И затем, если были зажаты разные клавиши, мы будем определять, с какими скоростями работать. Важно помнить, что если вы одновременно зажмете все 3 клавиши, Alt, Shift и Ctrl/Cmd ( Command Key в After Effects обозначена как metaKey ), то за истину примется идущая самой первой в этой проверке, т.е. Alt.

Затем мы задаем функцию getRandomInt, которая позволит нам получить рандомное значение между Min и Max, аргументами этой функции.

Отмена в одно нажатие

Далее открываем beginUndoGroup, чтобы все множество произведенных скриптом действий можно было отменить одним-единственным нажатием Ctrl+Z.

Задаем активную композицию и в переменную selProps закидываем все выбранные свойства этой композиции. Задаем параметр speedRange. Сюда можете ввести любое значение. Я не думаю, что рандомное изменение скорости можно использовать всерьез, мы его добавляем только для эксперимента и расширения понимания работы со скриптами, но м.б. вам действительно это пригодится.

Проверка на конечность

Запускаем цикл по выбранным свойствам, и если текущее свойство является конечным свойством (т.е. у него больше нет никаких внутренних подсвойств) и у этого свойства есть ключи, идем дальше. Конечные свойства имеют тип PropertyType.PROPERTY, и есть еще 2 вида, PropertyType.INDEXED_GROUP(для свойств-групп, члены которых могут менять свой индекс и имя, вроде Masks, Effects ) и PropertyType.NAMED_GROUP(для свойств-групп, члены которых неизменны, вроде Transform ). Проверка, является ли это свойство конечным, нужна, потому что у свойств-групп (вроде Transform или Contents ) отсутствует параметр selectedKeys и если бы мы попробовали его запросить, программа бы выдала ошибку. Вы спросите, что разве мы такие тупые, чтобы выбирать неконечные свойства? И я отвечу, что некоторые конечные свойства выбираются только со своими родителями, как, например, параметры масок вроде Mask Path, Mask Feather выбираются только с маской, которая их содержит, или же параметры эффектов выбираются только с самими эффектами, и вот эти самые родительские свойства нам и необходимо пропустить.

Если проверка пройдена, то текущее свойство мы записываем в переменную prop, чтобы не надо было каждый раз добавлять квадратные скобки с индексом.

Цикл по ключам

После этого создаем два объекта KeyframeEase и передаем им в качестве параметров наши скорости и влияния. А дальше проверяем, какие у нас свойства. Если это не spatial свойства и значение представлено массивом из двух или трех чисел, мы передаем им массивы объектов keyframeEase. Вообще-то, это не сработает с цветом, так как значение цвета представлено массивом из 4-х значений, и если вы хотите это учесть, нужно будет написать еще одну проверку для value.lenght == 4 и передать туда массив из 4-х keyframeEase объектов.

Для того, чтобы задать ключу Interpolation, используется встроенная в AE функция setTemporalEaseAtKey с 3-мя параметрами, индексом ключа свойства, массивом входящих KyeframeEase объектов и массивом исходящих.

Если же значение представлено числом, является кастомным или пространственным — мы передаем массив с одним keyframeEase, именно массив, а не просто keyframeEase объект.

Закрываем undoGroup, и все)

Копируем скрипт в ftToolbar или в keyBar или просто сохраняем его в папку со скриптами.

На этом я с вами прощаюсь, надеюсь, материал был вам полезен.

Оставляйте отзывы в комментариях! Спасибо за прочтение.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *