After Effects Expressions — управление композициями из основной композиции с помощью слоя выражений

ЦЕЛЬ, КОТОРОЙ Я ХОЧУ ДОСТИГНУТЬ:

Управляйте временными шкалами AE с помощью ОДНОГО ВЫРАЖАЮЩЕГО СЛОЯ (очень похоже на использование Actionscript) для запуска часто используемых композиций, таких как моргание, ходьба, полет и т. д. для мультяшной анимации.

Beau Bird — персонаж, которого я хочу моргнуть.

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

В идеале: я хотел бы создать «Слой выражений» в основной композиции, чтобы ЗАПУСКАТЬ другие композиции для воспроизведения . В определенные моменты я хотел бы добавить триггеры для вызова часто используемых композиций, которые содержат такие действия, как .. Мигание, Ходьба, Полет, Взгляд влево и вправо и т. д.

БЫЛО бы ЗАМЕЧАТЕЛЬНО, ЕСЛИ мы могли бы каким-то образом запускать, повторять, останавливать, возможно, реверсировать другие композиции, и делать все это из одной основной композиции, используя слой выражения .

ЗАЧЕМ СДЕЛАТЬ ЭТО ТАКИМ СПОСОБОМ? Почему бы просто не вставить композицию в то место, где вы хотите, чтобы она воспроизводилась каждый раз, когда вам нужно такое действие? Что ж, в After Effects, если вы хотите, чтобы «мигающая композиция» воспроизводилась 40 раз за две минуты, вам нужно будет создать 40 слоев или наложить ключевые кадры на эту композицию 40 раз. Разве не было бы здорово запускать или вызывать его из одного слоя, когда вы хотите его из одного слоя выражений?

Мы постоянно делаем что-то подобное во Flash, используя Actionscript. Было бы здорово, если бы существовал метод для достижения такого эффекта. Это был бы ВЫДАЮЩИЙСЯ урок, и я считаю, что он был бы очень популярен, если бы кто-то его сделал. Его можно использовать для МНОЖЕСТВА удивительных эффектов и сэкономить массу времени для всех. Черт возьми, помогите мне разобраться, и, возможно, я сделаю учебник.

Спасибо всем вам, «переполненные штабелеры», которые вносят свой вклад! :)


person Papa De Beau    schedule 10.12.2012    source источник
comment
Я думаю, что я на ПРАВИЛЬНОМ ПУТИ. Я нашел это. Спасибо ДЭН за то, что сделал это. Это именно то, что я ищу, но мне просто нужно понять это сейчас. Как только я это сделаю, я опубликую это как ответ. motionscript.com/design-guide/marker-sync.html   -  person Papa De Beau    schedule 11.12.2012


Ответы (2)


Я нашел ответ, и это...

ЭТО НЕВОЗМОЖНО.

Выражения After Effects не могут управлять другими шкалами времени. К сожалению, вам нужно поместить выражение на каждый слой, на который вы хотите повлиять.

Следующее лучшее решение и достижение чего-то близкого к тому, о чем я просил, можно найти по этой ссылке: motionscript.com/design-guide/marker-sync.html

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

НАДЕЕМСЯ СКОРО! Все, кто читает это, кто работает в Adobe, пожалуйста, заявите о себе. Спасибо

person Papa De Beau    schedule 12.12.2012

Часть 1. Ссылки на другие слои в предварительных композициях

Просто замените thisComp на comp(ComName)

Чтобы ссылаться на контроллеры эффектов между композициями, следуйте следующей формуле:

comp("ComName").layer("LayerWithExpression").effect("EffectControlerName")("EffectControllerType")
    

Подробный ответ: Документы Adobe - Перейти к части подобъектов слоя

Насколько я понимаю, в документации Adobe доступны только слои, а не кадры. Это означает, что вам нужно будет создать ссылку на выражение, используя файл pre-Comp. Видеоряд не может получить к этому доступ, так что это также означает отсутствие нулей, корректирующих слоев и т. д.

В качестве дополнительного бонуса, если вы используете базовую графическую панель, вы можете поместить все контроллеры в один предварительный комп, но при этом элементы управления будут доступны независимо от того, в каком компе вы находитесь. Просто выберите его в раскрывающемся списке Essential-Graphics.

Часть 2. Начало/конец на основе других слоев прекомпозиций:

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

inPoint | Тип возвращаемого значения: Число. Возвращает точку входа слоя в секундах. аутПойнт | Тип возвращаемого значения: Число. Возвращает точку выхода слоя в секундах.

Если вы используете переопределение времени начала, вы можете получить это из:

время начала | Тип возвращаемого значения: Число. Возвращает время начала слоя в секундах.

Альтернативный вариант: я бы рекомендовал избегать этого, так как ключевые кадры в основном упоминаются как индекс, поэтому все может испортиться, если вы добавите один перед ключевым кадром, который вы уже использовали - def включает некоторую обработку ошибок.

См. ключевые атрибуты и методы (справочник по выражениям) Здесь

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

затем используйте это, чтобы зациклить эти ключевые кадры;

try{ timeStart = thisProperty.key(1).time; duration = thisProperty.key(thisProperty.numKeys).time-timeStart; pingPong =
false; //change to true value if you want to loop animationn back &
forth  quant=Math.floor((time-timeStart)/duration);

if(quant<0) quant = 0
    

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


thisProperty.valueAtTime(t)
person Robert N    schedule 21.12.2020