Навигация

    Форум Cinema 4D
    • Зарегистрироваться
    • Войти
    • Поиск
    • Категории
    • Последние
    • Метки
    • Пользователи
    • Группы

    Как в After Effects привязать 3Д слой к Null-объекту в родительской композиции?

    Композитинг и пост-обработка
    3d after effects камера скрипт
    1
    1
    30
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • Aleksei
      Aleksei admin отредактировано Aleksei

      Пока писал этот вопрос на форуме, то сам разобрался как это сделать :)
      Так вот, показываю как это делается.

      Для примера я сделал такую структуру проекта:
      В главной (родительской) композиции находятся моя камера и оранжевая звезда в виде 3Д слоя. Тут же есть дочерняя композиция с синей звездой:

      камера и оранжевая звезда в виде 3Д слоя

      В композиции с синей звездой звезда тоже находится на 3Д слое. И внутри той композиции тоже есть камера. Потому что 3Д слой без камеры обычно не виден или отображается неправильно.

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

      ViC8zATiLR.gif

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

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

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

      Второй способ решает все перечисленные проблемы. Для того чтобы синхронизировать камеру с камерой в родительской композиции нужно через скрипт привязать координаты камеры и её углы поворота к камере в родительской композиции.

      Чтобы привязать координаты через скрипт на слое камеры нажимаете иконку секундомера с зажатой клавишей Alt у параметра Position:

      нажимаете иконку секундомера с зажатой клавишей Alt у параметра Position

      В поле для скрипта справа пишем код по такому шаблону:

      comp('название композиции').layer('название слоя').transform.position
      

      В нашем примере вместо 'название композиции' мы пишем 'Comp 1', потому что так называется наша родительская композиция. А вместо 'название слоя' пишем 'моя-камера', потому что так называется слой с нашей основной камерой. Вот так:

      7f495655-c27a-4002-af49-b877030bf2fb-image.png

      Теперь, при движении основной камеры, камера внутри композиции с синей звездой будет повторять координаты основной камеры. Но ещё нужно привязать вращения. Для этого в параметре Orientation делаем всё то же самое, что делали для Position, только в конце строчки кода вместо, .position пишем .orientation:

      comp('название композиции').layer('название слоя').transform.orientation
      

      И ещё нужно, на всякий случай, привязать параметры X/Y/Z Rotation. Для этого по очереди кликаем иконку секундомера с зажатым Alt напротив X Rotation, Y Rotation и Z Rotation. И по аналогии с параметром Position справа вписываем такие строчки кода:

      Для X Rotation:

      comp('название композиции').layer('название слоя').transform.xRotation
      

      Для Y Rotation:

      comp('название композиции').layer('название слоя').transform.yRotation
      

      Для Z Rotation:

      comp('название композиции').layer('название слоя').transform.zRotation
      

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

      все скрипты камеры

      И готово!
      Теперь если вернётесь в родительскую композицию и покрутите камеру, то и синяя звезда внутри вложенной композиции будет вращаться:

      9rZk8jzpC0.gif

      У этого метода есть два бонуса:

      • можно иметь любую сложность иерархии в композициях: привязываемая камера не обязательно должна ссылаться именно на родительску композицию (на уровень выше). В скриптах вы задаёте имя композиции и слоя на которую будет ориентироваться камера и структура проекта, при этом, не имеет значения. Главное, чтобы имена композиций и слоёв соответствовали;
      • можно переименовывать композицию или слой с основной камерой и эти названия автоматически обновятся в скриптах!
      1 ответ Последний ответ Ответить Цитировать 2
      • First post
        Last post

      Пользователи онлайн

      V
      S
      D
      Правила форума
      При поддержке Nordskill   •   Политика конфиденциальности