Нулл-объекты в After Effects: как устроено родительство и что оно не передаёт
Анимация группы объектов почти всегда строится одинаково: создаётся невидимый слой-контроллер, к нему привязываются видимые слои, и дальше анимируется только он.
Это называется parenting, а контроллер — null object. Механика простая, но у неё есть ровно одно свойство, которое нас не наследуется, и о нём забывают чаще всего.
Что передаётся, а что нет
Документация формулирует точно: родительство влияет на все трансформации — Position, Scale, Rotation, Orientation (для 3D-слоёв) — но не на Opacity.
То есть если уменьшить прозрачность нулла, дочерние слои не станут прозрачными.
Это первое, о чём стоит помнить: opacity не наследуется. Для групповой прозрачности нужен adjustment layer с эффектом или отдельная настройка каждого слоя.
Один родитель, много детей
Правила из документации:
- у слоя может быть только один родитель;
- слой может быть родителем любого числа слоёв в той же композиции;
- дочерние слои можно анимировать независимо от родителя.
Последнее важно: родительство не «замораживает» ребёнка. Его собственные ключевые кадры продолжают работать, просто отсчитываются в системе координат родителя.
Что такое нулл
Нулл — невидимый слой, у которого есть все свойства обычного слоя. Он нужен, чтобы быть родителем, не появляясь в кадре.
Документация: нулл виден только в панели Composition и Layer, отображается прямоугольным контуром с маркерами. Эффекты на нуллах не видны.
Создание: Layer → New → Null Object.
В композиции может быть любое количество нуллов.
Как привязать
Два способа:
- Pick whip — спиральная иконка в колонке Parent таймлайна. Тянуть от дочернего слоя к родителю.
- Выпадающий список в той же колонке — выбрать родителя по имени.
Если колонки Parent не видно, её включают через меню таймлайна: Columns → Parent.
Несколько слоёв можно привязать сразу: выделить их и потянуть pick whip с любого — привяжутся все.
Прыжок или сохранение позиции
Тонкость, которая ломает анимацию при неаккуратном использовании.
При создании связи можно выбрать:
- ребёнок принимает трансформации родителя — тогда он «прыгает» в позицию родителя;
- ребёнок сохраняет свои значения — тогда остаётся на месте, но дальше следует за родителем.
Документация описывает и приём с клавишей Shift: если удерживать её при привязке, дочерний слой перемещается к позиции родителя.
Это удобно, когда нужно прикрепить объект к нуллу, созданному трекером камеры: слой встанет ровно туда, где находится контроллер.
Чего нельзя сделать
Анимировать назначение родителя. Документация прямо говорит: нельзя в один момент времени назначить слой родителем, а в другой — снять это. Связь статична на протяжении слоя.
Если нужно «переключить» управление, используют другие приёмы: отдельные нуллы с разными периодами активности, выражения или дублирование слоя.
Передать прозрачность. Уже упоминалось, но повторим: opacity не наследуется.
Сгруппировать для эффекта. Нулл не применяет эффекты к детям. Для этого нужен adjustment layer.
Практическая схема: контроллер для сцены
- Создать нулл.
- Переименовать:
CTRL_scene. - Разместить в логической точке — центре сцены или точке вращения.
- Выделить все объекты сцены.
- Привязать их pick whip к нуллу.
- Анимировать только нулл.
В таймлайне получится один набор ключевых кадров вместо десяти. Изменение тайминга становится одной правкой.
Практическая схема: 3D-текст на трекере
- Прогнать 3D Camera Tracker.
- Создать Null на нужной плоскости.
- Создать текст, включить у него 3D.
- Привязать текст к нуллу с зажатым
Shift, чтобы он встал в позицию контроллера. - Дальше двигать только нулл.
Без Shift текст останется в центре композиции, и его придётся совмещать вручную.
Иерархия глубже одного уровня
Нуллы можно выстраивать в цепочки: нулл-родитель, нулл-ребёнок, слои.
Это удобно, когда нужна составная анимация: общий контроллер двигает сцену, вложенный вращает отдельный элемент.
Цена — сложность отладки. Если слой ведёт себя странно, проверьте всю цепочку: ошибка может быть на два уровня выше.
Рендер и производительность
Нуллы не рендерятся и почти не влияют на скорость. Родительство — математическая операция, а не эффект.
Но глубокая иерархия усложняет кэширование: при движении верхнего нулла пересчитываются все дочерние слои. На тяжёлой сцене это заметно.
Нуллы и выражения
Нулл часто используют как «пульт» для выражений.
Схема: создать нулл, добавить к нему слайдер-эффекты (Effect → Expression Controls → Slider Control), а в выражениях слоёв ссылаться на эти слайдеры через pick whip. Тогда один ползунок управляет десятком параметров.
Плюс — все настройки собраны в одном месте. Минус — выражения пересчитываются каждый кадр, и на тяжёлой сцене это добавляет нагрузку.
Документация по layer properties напоминает: нулл виден только в панели композиции, эффекты на нём не рендерятся. Для слайдеров это идеально.
Когда нулл хуже, чем шейп-слой
Нулл — не единственный контейнер. Шейп-слой с фигурой тоже может быть родителем и при этом рендерится.
Разница в задачах. Нулл нужен, когда контроллер не должен быть виден. Если вам нужен видимый элемент, к которому крепится группа (например, стрелка-указатель на схеме), берите шейп-слой: он и родитель, и объект.
Ещё вариант — adjustment layer: он рендерится как эффект поверх детей, но не как геометрия.
Правило простое: контейнер выбирается по тому, должен ли он быть виден в кадре.
Частые ошибки
Ждать, что opacity передастся. Не передастся.
Забыть про Shift при привязке к трекеру. Объект остаётся в центре.
Пытаться анимировать смену родителя. Невозможно.
Привязывать к слою, который сам анимирован. Двойная трансформация.
Строить цепочку из пяти нуллов без нужды. Отладка превращается в квест.
FAQ
Что такое нулл-объект?
Невидимый слой, который используют как родителя для других слоёв.
Наследуется ли прозрачность?
Нет, parenting не влияет на Opacity.
Сколько родителей может быть у слоя?
Один.
Как привязать слой к нуллу?
Pick whip в колонке Parent или выбор из списка.
Можно ли менять родителя во времени?
Нет, связь фиксирована на протяжении слоя.