温馨提示:本站为童趣票务官方授权演出订票中心,请放心购买。
你现在的位置:首页 > 演出资讯  > 儿童亲子

Ae 表达式语言引用:Path Property

更新时间:2025-01-29 20:01  浏览量:17

Path Property (路径属性方法)组提供了强大的路径操作功能,可以帮助我们在表达式中读取和修改路径点、切线、法线等信息,用于动画、形状跟踪、路径创建等任务。

获取路径的名称。

返回值:返回路径的名称(String)。

应用:

// 示例:获取路径的名称var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1");myShape.name

points(t=time)

获取路径上所有顶点的 x、y 坐标。

参数:

t :可选,表示合成时间(Number),以秒为单位。默认值为当前时间 time。

返回值:由包含 x 和 y 坐标的数字数组组成的数偶数组(Array),即[[x0,y0],[x1,y1],[x2,y2],[x3,y3]...],每个坐标值保留到小数点后四位。

应用:

图层蒙版路径,顶点的坐标相对于其左上角的图层的原点。

贝塞尔曲线形状路径,顶点的坐标相对于路径的形状组的锚点。

笔刷笔触路径,顶点的坐标与笔触的开始相关,第一个点为 [0,0]。

// 示例 1:返回蒙版路径第一个顶点的坐标x = mask("蒙版 1").maskPath.points;x[0]// 示例 2:获取路径上的所有顶点,并打印它们的坐标var pointsList = "";var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var sampleTime = 0;for (var i = 0; i

inTangents(t=time)

获取路径上所有顶点的入射切线(入点手柄)的 x、y 坐标。

参数:

t :可选,Number,表示合成时间,以秒为单位。默认值为当前时间 time。

返回值:包含路径上所有顶点的入射切线(入点手柄)坐标的数偶数组,即[[x0,y0],[x1,y1],[x2,y2],[x3,y3]...],每个坐值保留到小数点后四位。

应用:

切线是与路径某点相切的直线,表示路径在该点的方向。控制着曲线的弯曲程度和曲线的走向。

切线坐标值是相对于父点坐标的位移。即,值 [0,0] 表示在顶点处不产生弯度。

// 示例:获取路径的入射切线坐标并打印:var tangentsList = "";var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var sampleTime = 0;for (var i = 0; i

outTangents(t=time)

获取路径上所有顶点的出射切线(出点手柄)的 x、y 坐标。

参数:

t :可选,Number,表示合成时间,以秒为单位。默认值为当前时间 time。

返回值:包含路径上所有顶点的出射切线(出点手柄)坐标的数偶数组,即[[x0,y0],[x1,y1],[x2,y2],[x3,y3]...],每个坐值保留到小数点后四位。

应用:

// 获取路径的出射切线坐标并打印var outTangentsList = "";var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var sampleTime = 0;for (var i = 0; i

isClosed

判断路径是开放的还是闭合的。

参数:无

返回值:Boolean,如果路径是闭合的,则返回 true;如果路径是开放的,则返回 false。

应用:

// 示例:检查路径是否闭合var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var isClosed = myShape.isClosed;isClosed ? "Path is closed" : "Path is open";

pointOnPath(percentage=0.5, t=time)

获取路径上任意顶点的 x、y 坐标,坐标通过路径的弧长百分比来表示。

参数:

percentage :介于 0 和 1 之间的数字,表示路径弧长的百分比。默认值为 0.5,即 50%。

第一个顶点为 0%,最后一个顶点为 100%。如果路径是闭合的,那么 0% 和 100% 将返回相同的坐标。

弧长的百分比用于确保沿路径的速度一致。除了 0% 和 100% 之外,百分比并非必须与路径上的贝塞尔曲线点对应,比如,对于三个顶点的路径,第二顶点并非必须在 50%。

这也意味着对于具有相同顶点数的开放路径和闭合路径,由于闭合路径含有附加长度,因此沿开放路径的百分比将不会返回与闭合路径相同的坐标。

t :可选,Number,表示合成时间以秒为单位。默认值为当前时间 time。

返回值:一个数字数组(Array),包含路径上指定百分比位置的 x 和 y 坐标。

应用:

// 示例 1:获取蒙版路径上 50% 位置的坐标thisComp.layer("BG").mask("蒙版 1").maskPath.pointOnPath(0.5)// 示例 2:获取路径上 50% 位置的坐标var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var point = myShape.pointOnPath(0.5); // 获取路径的50%位置point;

normalOnPath(percentage=0.5, t=time)

计算路径上某个点的法线坐标,坐标通过路径的弧长百分比来表示。

参数:

percentage :介于 0 和 1 之间的数字,表示路径弧长的百分比。默认值为 0.5,即 50%。

t :可选,Number,表示合成时间,以秒为单位。默认值为当前时间 time。

返回值:一个数字数组(Array),包含路径上指定百分比位置的法线的 x 和 y 坐标。

normalOnPath 返回的坐标从其父点开始计算。父点的坐标与 normalOnPath 坐标之间的直线距离将始终为 1。

应用:

法线是垂直于路径切线的直线,它指向路径曲线的外侧。法线的方向与切线垂直,因此与路径的变化方向是垂直的。

法线的切点坐标值是相对于父点的坐标的位移,值 [0,0] 表示与父点相同。

//示例 1:可以将返回的坐标相乘以产生更长的法线myPath = thisComp.layer("BG").mask("蒙版 1").maskPath;myPath.normalOnPath(0.5)*100//示例 2:获取路径上 50% 位置的法线var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var normal = myShape.normalOnPath(0.5); // 获取路径的50%位置的法线normal;

tangentOnPath(percentage=0.5, t=time)

计算路径上某个点的出射切线(出点手柄)坐标,坐标通过路径的弧长百分比来表示。

入点手柄是此值的负值(将 x、y 坐标乘以 -1)。

参数:

percentage :介于 0 和 1 之间的数字,表示路径弧长的百分比。默认值为 0.5,即 50%。

t :可选,Number,表示合成时间,以秒为单位。默认值为当前时间 time。

返回值:一个数字数组,包含路径上指定百分比位置的出射切线(出点手柄)的 x 和 y 坐标。

如果用户定义的点也在该弧长百分比的范围内,那么 tangentOnPath 返回的坐标从其父点开始计算,并且将与 outTangents 返回的那些坐标有所不同。

父点的坐标与 tangentOnPath 坐标之间的直线距离将始终为 1。

应用:

//示例:获取路径上 50% 位置的出射切线var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var tangent = myShape.tangentOnPath(0.5); // 获取路径的50%位置的出射切线tangent;

createPath(points, inTangents, outTangents, is_closed)

根据给定的点和切线创建一个路径对象。

参数:

points :表示路径的 x 和 y 坐标的数偶数组(Array)。

inTangents :表示路径点的入射切线的数偶数组(Array)。

outTangents :表示路径点的出射切线的数偶数组(Array)。

is_closed :Boolean,指示路径是否闭合。

返回值:一个新的路径对象(Object)。

应用:

可以将路径的 points、inTangents、outTangents 和 isClosed 方法传递给 points、inTangents、outTangents 和 is_closed 参数来复制路径。可以将同一路径的 points 和 tangents 传递给 createPath,经过修改即可生成不同结果。

// 示例 1:使用已有路径的点和切线创建一个新的路径var myShape = thisComp.layer("形状图层 2").content("矩形 1").content("路径 1").path;var newPath = myShape.createPath(myShape.points, myShape.inTangents, myShape.outTangents, true);newPath;//示例 2:以下表达式将通过不传递 inTangents 和 outTangents 参数从“蒙版 1”曲线将平滑点转为角点。myPath = thisComp.layer("BG").mask("蒙版 1").maskPath;myPath.createPath(myPath.points, , ,false);//示例 3:通过传递“蒙版 1”的 points 和 tangents,并通过将 is_closed 设置为 true 来将其转换为闭合路径。myMask = mask("蒙版 1").path;myMask.createPath(myMask.points, myMask.inTangents, myMask.outTangents, true);

“点赞有美意,赞赏是鼓励”