1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

expression & keys

Тема в разделе "Adobe After Effects", создана пользователем mazzza, 18 июл 2016.

Модераторы: ksi2, Saplus
  1. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Привет!
    У меня простое выражение, ссылающееся на слой в другой композиции
    (*comp("ххх").layer("zzz").transform.position*)
    на position висят ключи ,но выражение их не видит.
    (когда ссылается на слой своей композиции все ок).
    Что-то когда-то мне попадалось на эту тему, но не могу ни вспомнить ни найти...
    Вот...
    Вопрос: можно ли это поправить и как, спасибо))
     
  2. M.O.Z.G

    M.O.Z.G Знаток

    С нами с:
    27.04.2009
    Сообщения:
    647
    Симпатии:
    124
    Баллы:
    42
    Подробнее, пожалуйста. На данный момент ошибки не вижу, и всё должно работать.
     
  3. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Да, точно...
    Если все упростить - работает...
    Где-то у меня там пипец...
    Спасибо за надежду, буду разбираться...
    (Вы ответили на основной вопрос, что должно работать, дальше проще...)))
     
  4. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Не добавила в выражение "valueAtTime(time-...)" и ключи отображались не там, где я их ожидала. Теперь все ОК))
     
  5. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Еще подскажите, пожалуйста, куда нужно прописать timeToFrames (или, может, что-то другое), чтобы в выражение valueAtTime(time-"х") в "х" подставлять фреймы, а не секунды.))
     
  6. M.O.Z.G

    M.O.Z.G Знаток

    С нами с:
    27.04.2009
    Сообщения:
    647
    Симпатии:
    124
    Баллы:
    42
    X = Требуемое количество кадров / Частота кадров в композиции = Время в секундах

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

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Да, супер, спасибо!))
    (так все просто...)))
     
  8. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    И все же, из спортивного интереса...
    нельзя где то прописать что-то типа timeToFrames, чтобы вставлять именно фреймы?
     
  9. M.O.Z.G

    M.O.Z.G Знаток

    С нами с:
    27.04.2009
    Сообщения:
    647
    Симпатии:
    124
    Баллы:
    42
  10. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Да, спасибо!
    С этой страницы я начала.
    Но, не пойму, куда это нужно вставить.
    Допустим, у меня два ключа на позишн.
    Выражение valueAtTime(time-4) работает, сдвигая их на 100 кадров (Frame rate 25).
    Добавление строки
    timeToFrames(t = time + thisComp.displayStartTime, fps = 1.0 / thisComp.frameDuration, isDuration = false) и замена time на t ничего не меняет...
    вот...))
     
  11. M.O.Z.G

    M.O.Z.G Знаток

    С нами с:
    27.04.2009
    Сообщения:
    647
    Симпатии:
    124
    Баллы:
    42
    Нет, я всё-таки запутался) Вы же кадры во время преобразовываете, и Вам нужно указывать кадры. Зачем тогда timeToFrames?

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

    Или я окончательно потерял нить.
     
    mazzza нравится это.
  12. mazzza

    mazzza Знаток

    С нами с:
    08.02.2006
    Сообщения:
    869
    Симпатии:
    9
    Баллы:
    22
    Не запутались, это я не там ищу...))
    Еще раз спасибо большое, это как раз то, что мне нужно!))
     
Модераторы: ksi2, Saplus

Поделиться этой страницей