Render.ru

expression & keys

mazzza

Знаток
Рейтинг
22
#1
Привет!
У меня простое выражение, ссылающееся на слой в другой композиции
(*comp("ххх").layer("zzz").transform.position*)
на position висят ключи ,но выражение их не видит.
(когда ссылается на слой своей композиции все ок).
Что-то когда-то мне попадалось на эту тему, но не могу ни вспомнить ни найти...
Вот...
Вопрос: можно ли это поправить и как, спасибо))
 

M.O.Z.G

Знаток
Рейтинг
50
#2
(*comp("ххх").layer("zzz").transform.position*)
на position висят ключи ,но выражение их не видит.
(когда ссылается на слой своей композиции все ок).
Подробнее, пожалуйста. На данный момент ошибки не вижу, и всё должно работать.
 

mazzza

Знаток
Рейтинг
22
#3
Да, точно...
Если все упростить - работает...
Где-то у меня там пипец...
Спасибо за надежду, буду разбираться...
(Вы ответили на основной вопрос, что должно работать, дальше проще...)))
 

mazzza

Знаток
Рейтинг
22
#4
Не добавила в выражение "valueAtTime(time-...)" и ключи отображались не там, где я их ожидала. Теперь все ОК))
 

mazzza

Знаток
Рейтинг
22
#5
Еще подскажите, пожалуйста, куда нужно прописать timeToFrames (или, может, что-то другое), чтобы в выражение valueAtTime(time-"х") в "х" подставлять фреймы, а не секунды.))
 

M.O.Z.G

Знаток
Рейтинг
50
#6
X = Требуемое количество кадров / Частота кадров в композиции = Время в секундах

например:
FrameOffset = 12;
FPS = 30;
(FrameOffset / FPS); // Возвращает 0.4 секунды.
 

mazzza

Знаток
Рейтинг
22
#8
И все же, из спортивного интереса...
нельзя где то прописать что-то типа timeToFrames, чтобы вставлять именно фреймы?
 

mazzza

Знаток
Рейтинг
22
#10
Да, спасибо!
С этой страницы я начала.
Но, не пойму, куда это нужно вставить.
Допустим, у меня два ключа на позишн.
Выражение valueAtTime(time-4) работает, сдвигая их на 100 кадров (Frame rate 25).
Добавление строки
timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false) и замена time на t ничего не меняет...
вот...))
 

M.O.Z.G

Знаток
Рейтинг
50
#11
timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false) и замена time на t ничего не меняет...
Нет, я всё-таки запутался) Вы же кадры во время преобразовываете, и Вам нужно указывать кадры. Зачем тогда timeToFrames?

То-есть, Вам нужно так:
frameOffset = 100; //Кадров
timeOffeset = framesToTime(frameOffset, fps = 1.0 / thisComp.frameDuration); //Конвертируем во время.
...valueAtTime(time - timeOffeset); // смещаем по времени.

Или я окончательно потерял нить.
 

mazzza

Знаток
Рейтинг
22
#12
Не запутались, это я не там ищу...))
Еще раз спасибо большое, это как раз то, что мне нужно!))
 
Сверху