Layer - Space Transforms(空间变换方法)组用于将坐标值从一个空间转换到另一个空间,如从图层空间转换到世界空间。这些方法包括 from 和 to 两类,分别用于从目标空间转换到图层空间,或者将图层空间的坐标转换到目标空间(如合成空间或世界空间)。
toComp(point, t=time)
将一个点从图层空间(Layer Space)转换到合成空间(Composition Space)。
即,将图层内部的一个位置映射到整个合成的坐标系中。
参数:
point :表示要转换的点坐标(Array)。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t:可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的点在合成空间中的坐标(Array)。
应用:
//示例 1:效果里的空间属性一般工作在图层空间。
x = thisComp.layer("纯色").effect("无线电波")("产生点");
//将图层内的某个局部点转换为合成空间的位置,用于特效定位
thisComp.layer("纯色").toComp(x);
//示例 2:将图层的锚点位置转换到合成空间
toComp([0, 0]); // 返回图层锚点在合成空间中的位置
fromComp(point, t=time)
将一个点从合成空间转换到图层空间。
即,将合成中的一个位置映射回图层内部的坐标系。
参数:
point :表示要转换的点坐标(Array)。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的点在图层空间中的坐标(Array)。
应用:
//示例 1:将合成中心转换为图层空间原点
var compCenter = [thisComp.width / 2, thisComp.height / 2];
// 将合成中心转换到图层空间
var layerPos = fromComp(compCenter);
// 返回图层空间位置
layerPos; // 假设合成尺寸为1920x1080,返回 [0, 0]
//示例 2:将合成右下角位置转换为图层空间坐标
fromComp([1920, 1080]); // 返回 [960, 540]
toWorld(point, t=time)
将一个点从图层空间转换到世界空间(World Space)。
世界空间是一个与摄像机视角无关的全局坐标系,适用于描述图层在整个场景中的绝对位置。
参数:
point :表示要转换的点坐标(Array)。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的点在世界空间中的坐标(Array)。
应用:
//示例 1:将图层的特效控制点转换为世界空间位置,用于在全局范围内定位该效果。
toWorld(effect("无线电波")("产生点"));
//示例 2:计算图层在世界空间中的绝对位置
var worldPos = toWorld([0, 0, 0]); // 获取图层原点在世界空间中的位置
fromWorld(point, t=time)
将一个点从世界空间转换到图层空间。
即,可以将全局场景中的一个位置映射回图层内部的坐标系。
参数:
point :表示要转换的点坐标(Array)。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的点在图层空间中的坐标(Array)。
应用:
//示例 1:将世界空间中的图层位置转换为图层空间坐标
fromWorld(thisComp.layer(2).position);
//示例 2:将世界空间中的特定点映射到图层空间,用于效果应用
fromWorld([1500, 800, 0]);
toCompVec(vec, t=time)
将一个向量(Vector)从图层空间转换到合成空间。
参数:
vec :表示要转换的数组(Array),代表图层空间中的向量。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的在合成空间中的向量(Array)。
应用:
适用于转换方向向量,如两个位置值之间的差异。
//示例 1:将图层空间中的单位向量 [1, 0] 转换为合成空间中的向量,用于表示图层在合成空间中的方向偏移
toCompVec([1,0])
//示例 2:将计算出的方向向量 dir 从图层空间转换为合成空间,便于在合成中进行方向相关的操作或效果应用。
var dir = [100, 200];
var compDir = toCompVec(dir);
fromCompVec(vec, t=time)
将一个向量从合成空间转换到图层空间。
参数:
vec :表示要转换的数组(Array),代表合成空间中的向量。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的在图层空间中的向量(Array)。
应用:
适用于转换方向向量,如两个位置值之间的差异。
//示例 1:将合成空间中的单位向量 [1, 0] 转换为图层空间中的向量,用于表示图层在图层空间中的方向偏移。
toCompVec([1, 0]);
//示例 2:计算当前图层与图层 2 之间的方向向量 dir,并将其从合成空间转换为图层空间,用于在图层内部进行方向相关的操作或效果应用
var dir = sub(position, thisComp.layer(2).position);
var layerDir = fromCompVec(dir);
toWorldVec(vec, t=time)
将一个向量从图层空间转换到世界空间。
参数:
vec :表示要转换的数组(Array),代表图层空间中的向量。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的在世界空间中的向量(Array)。
应用:
适用于转换方向向量,如两个位置值之间的差异。
//示例 1:计算两个特效控制点 p1 和 p2 之间的方向向量,并将其从图层空间转换为世界空间,用于在全局范围内应用特效。
p1 = thisComp.layer("纯色 1").effect("凸出")("凸出中心");
p2 = thisComp.layer("纯色 1").effect("凸出 2")("凸出中心");
toWorldVec(sub(p1,p2))
//示例 2:将图层内部的偏移向量 [50, 100, 0] 转换为世界空间中的向量,用于全局范围内的效果控制或动画应用
toWorldVec([50, 100, 0]);:
fromWorldVec(vec, t=time)
将一个向量从世界空间转换到图层空间。
参数:
vec :表示要转换的数组(Array),代表世界空间中的向量。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换后的在图层空间中的向量(Array)。
应用:
适用于转换方向向量,如两个位置值之间的差异。
//示例 1:将合成中图层 2 的位置从世界空间转换回当前图层的图层空间,用于在当前图层内部进行方向相关的计算或效果应用
fromWorldVec(thisComp.layer(2).position)
//示例 2:将世界空间中的全局偏移向量 globalVec 转换为图层空间中的向量,用于在图层内部定位或应用特效
var globalVec = [100, 200, 0];
var layerVec = fromWorldVec(globalVec);
fromCompToSurface(point, t=time)
将一个位于合成空间的点投影到图层表面的一个点(Z 值为零)。
即,在当前视角下该点在图层表面的位置。
参数:
vec :表示要转换的数组(Array),代表合成空间中的点。对于 2D 图层,通常为 [x, y];对于 3D 图层,为 [x, y, z]。
t :可选。指定转换时的时间点(Number),单位为秒。默认值为当前时间 time。
返回值:转换一个二维数组(Array),表示投影到图层表面上的二维坐标 [x, y]
应用:
此方法主要用于设置效果的控制点,特别是对于 3D 图层。
//示例 1:将合成空间中的点 [500, 500, 0] 投影到3D图层的表面,用于在特效中精确定位控制点。
fromCompToSurface([500, 500, 0]);
//示例 2:将用户在合成中点击的点 [300, 400] 映射到图层表面的位置,用于动态效果控制,如粒子发射源的位置。
var clickPos = [300, 400];
var surfacePos = fromCompToSurface(clickPos);
“点赞有美意,赞赏是鼓励”