Методы toWorld() и fromWorld() в выражениях After Effects
Метод toWorld(point, t = time) в выражениях Adobe After Effects используется для преобразования координат из локальной системы координат слоя в мировую систему координат композиции.
toWorld(point, t = time);
Метод fromWorld(point, t = time) в выражениях Adobe After Effects, используется для
преобразования координат точки из мировой системы координат (world space) в локальную
систему координат (local space) текущего слоя.
fromWorld(point, t = time)
point: Точка для преобразования. Это массив из 2 или 3 значений (в зависимости от размерности: [x, y] для 2D или [x, y, z] для 3D). Обычно это локальные координаты, такие как thisLayer.anchorPoint или произвольная точка [0, 0, 0].
t (опциональный параметр): Время для оценки позиции. По умолчанию — текущее время (time). Полезно для анимации или ретроспективных расчётов (например, t = 0 для начальной позиции).
thisComp.layer(«Name»).toWorld (point, t = timе);//Правильная запись
thisComp.layer(«Name»).transform.position.toWorld(point, t = time);//Выражение вернет ошибку
Каждый слой в After Effects имеет собственную систему координат, зависящую от его трансформаций (позиция, масштаб, поворот, родительские связи и т. д.).
Локальные координаты слоя (Layer space). Это координаты внутри самого слоя, без учёта его позиции, вращения и масштаба.
Координаты композиции (Comp space). Это плоскость кадра — то, что вы видите на экране. 2D-координаты в пикселях относительно левого верхнего угла композиции. Comp space — это то, как эта сцена проектируется через камеру на экран композиции.
Мировые координаты (World space). Это общая 3D-сцена композиции, куда помещены все 3D-слои. Эти координаты учитывают все родительские связи, трансформации и ориентацию слоя.
World space — это как сцена в 3D-программе: где реально находятся объекты.
Существует миф, что начало отсчета Мировых координат в центре композиции
Начало отсчёта координат ВСЕГДА находится в ЛЕВОМ ВЕРХНЕМ УГЛУ композиции,
даже для 3D-слоёв.
Почему тогда говорят, что «мир в центре»? Потому что камера по умолчанию смотрит в центр композиции.
Допустим, есть 3D слой:
position = [0, 0, -1000];
В мировых координатах — он на оси Z, на 1000 пикселей вглубь сцены.
В координатах композиции — при активной камере он может выглядеть как точка в центре экрана, но меньше (из-за перспективы).
Для преобразования из world в layer space используйте fromWorld(point, t)
————
1
Выражения применяются к свойству Положения другого слоя. Анкерные точки слоев совпадают
//Выражение для свойства Положение Слой-фигура 1
thisComp.layer(«Слой-фигура 2»).toWorld(thisComp.layer(«Слой-фигура 2»).anchorPoint);
//Выражение для свойства Положение Слой-фигура 2
thisComp.layer(«Слой-фигура 1»).toWorld(thisComp.layer(«Слой-фигура 1»).anchorPoint);
//Выражение для свойства Положение Слой-фигура 1
thisComp.layer(«Слой-фигура 2»).toWorld(thisComp.layer(«Слой-фигура 2»).anchorPoint, random(time));
transform.position + time * 100; //Анимация Положения Слой-фигура 2
————
2
Выражение привязки Текста к Анкерной точке слоя Собака
thisComp.layer(«Собака»).toWorld(thisComp.layer(«Собака»).anchorPoint);
thisComp.layer(«Собака»).toWorld(thisComp.layer(«Собака»).transform.anchorPoint);
————
3
//Выражение для свойства Положение слоя Пусто 5
thisComp.layer(«Пусто 5»).toWorld([0,0,0]);
Выражение берет точку с локальными координатами положения 0,0,0] и возвращает положение точки в мировых координатах
————
4
//Выражение для свойства исходный текст Текстового слоя. Локальные координаты положения точки [0,0,0], то есть левого верхнего угла слоя Сплошная заливка Белый 2 преобразуются в мировые координаты
L = thisComp.layer(«Сплошная заливка Белый 2»);
«Мировые координаты левого угла: » + L.toWorld([0,0,0]).toString();
//Выражение для свойства исходный текст Текстового слоя. Локальные координаты положения точки [300,300,0], то есть правого нижнего угла слоя Сплошная заливка Белый 2 преобразуются в мировые координаты
L = thisComp.layer(«Сплошная заливка Белый 2»);
«Мировые координаты левого угла: » + L.toWorld([300,300,0]).toString();
Если применить выражение
toWorld([0,0,0]);
к свойству Положение слоя Сплошная заливка Белый 2 с размерами 300 на 300 пикселей, то слой сдвинется в лево и в верх. Новые координаты будут 490 на 210 в системе координат композици, отсчет ведется от верхнего левого угла композиции к центру слоя. При этом анкерная точка слоя окажется там где раньше была точка верхнего левого угла слоя с координатами 0,0,0 в локальной системе координат
X = 640 — 150 = 490
Y = 360 — 150 = 210
Если выражение ниже добавить к свойству исходный текст Текстового слоя и вернутся числовые значения положения верхней левой точки слоя Сплошная заливка Белый 2 то есть его левого верхнего угла в мировых координатах.
thisComp.layer(«Сплошная заливка Белый 2»).toWorld([0,0,0]).toString();