首页 > 影视项目大揭秘 > 表达式参考23-有关形状、蒙版和画笔描边的路径点的表达式 Path

表达式参考23-有关形状、蒙版和画笔描边的路径点的表达式 Path

2020年08月04日

有关形状、蒙版和画笔描边的路径点的表达式

您可以针对以下对象使用表达式读写路径点或顶点的 x 坐标和 y 坐标:

  • 图层蒙版

  • 贝塞尔曲线形状

  • 针对“绘画”和“Roto 笔刷和优化边缘”效果的画笔描边。

表达式方法:

  • Path points() 方法:{pathProperty}.points(t = time)获取路径上所有点的 x、y 坐标。图层蒙版路径点的坐标相对于其左上角的图层的原点。贝塞尔曲线形状路径点的坐标相对于路径的形状组的锚点,例如,“变换: 形状 1”>“锚点”。笔刷笔触路径点的坐标与笔触的开始相关;第一个点为 [0,0]。(可选)指定采样到路径的时间。复制路径时,您可以将此方法传递到点参数的 createPath() 方法。

参数

t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组的数组,四舍五入到小数点后四位。

  • Path inTangents() 方法:{pathProperty}.inTangents(t = time) 获取路径上所有点的入点手柄的 x、y 坐标。切点坐标值是相对于父点的坐标的位移。即,值 [0,0] 在入点处不产生弯度。当复制路径时,可以针对 inTangents 参数将此方法传递给 createPath() 方法。(可选)指定采样到路径的时间。

参数

t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组的数组,四舍五入到小数点后四位。

  • Path outTangents() 方法:{pathProperty}.outTangents(t = time) 获取路径上所有点的出点手柄的 x、y 坐标。切点坐标值是相对于父点坐标的位移 - 值 [0,0] 在引出切点处不产生弯度。当复制路径时,可以针对 outTangents 参数将此方法传递给 createPath() 方法。(可选) 指定采样到路径的时间。

参数

t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组的数组,四舍五入到小数点后四位。

  • Path isClosed() 方法{pathProperty}.isClosed() 决定路径是开放的还是闭合的。如果路径是闭合的,则返回 true;如果路径是开放的,则返回 false。当复制路径时,可以针对 is_closed 参数将此方法传递给 createPath() 方法。

参数

返回

布尔值

  • Path pointOnPath() 方法 {pathProperty}.pointOnPath(percentage = 0.5, t = time) 获取路径上任意点的 x、y 坐标。该点表示为路径弧长的百分比。第一个点为 0%,最后一个点为 100%。如果路径是闭合的,那么 0% 和 100% 将返回相同的坐标。弧长的百分比用于确保沿路径的速度一致。除了 0% 和 100% 之外,百分比并非必须与路径上的贝塞尔曲线点对应 - 对于三个点的路径,第二点并非必须在 50%。这也意味着对于具有相同点的开放路径和闭合路径,由于闭合路径含有附加长度,因此沿开放路径的百分比将不会返回与闭合路径相同的坐标。(可选) 指定采样到路径的时间。

参数

百分比(可选)0 到 1 之间的数字。采样沿路径的弧长的百分比。值小于 0 和大于 1 的部分会被剪掉。默认值为 0.5。
t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组。

  • Path tangentOnPath() 方法 {pathProperty}.tangentOnPath(percentage = 0.5, t = time) 获取路径上经过计算的任意点的出点手柄的 x、y 坐标。切点坐标值是相对于父点的坐标的位移 - 值 [0,0] 在出点处不产生弯度。入点手柄是此值的负值(将 x、y 坐标乘以 -1)。切线的父点表示为路径的弧长的百分比。如果用户定义的点也在该弧长百分比的范围内,那么 tangentOnPath() 返回的坐标从其父点开始计算,并且将与 outTangents() 返回的那些坐标有所不同。父点的坐标与 tangentOnPath() 坐标之间的直线距离将始终为 1。您可以将返回的坐标相乘以产生更长的切线,例如,(myPath.tangentOnPath()*100)。(可选) 指定采样到路径的时间。

参数

百分比(可选)0 到 1 之间的数字。采样沿路径的弧长的百分比。值小于 0 和大于 1 的部分会被剪掉。默认值为 0.5。
t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组。

  • Path normalOnPath() 方法 {pathProperty}.normalOnPath(percentage = 0.5, t = time) 获取路径上经过计算的任意点的法线的 x、y 坐标。法线的切点坐标值是相对于父点的坐标的位移 - 值 [0,0] 与父点相同。法线的父点表示为路径的弧长的百分比。请阅读 pointOnPath() 方法的说明以了解有关弧长百分比的详细信息。normalOnPath() 返回的坐标从其父点开始计算。父点的坐标与 normalOnPath() 坐标之间的直线距离将始终为 1。您可以将返回的坐标相乘以产生更长的法线,例如,(myPath.normalOnPath()*100)。(可选) 指定采样到路径的时间。

参数

百分比(可选)0 到 1 之间的数字。采样沿路径的弧长的百分比。值小于 0 和大于 1 的部分会被剪掉。默认值为 0.5。
t(可选)数字。采样路径的合成时间(以秒为单位)。默认值为时间(当前时间)。

返回:

数偶数组。

  • Path createPath() 方法 {pathProperty}.createPath(points = [[0,0], [100,0], [100,100], [0,100]], inTangents = [], outTangents = [], is_closed = true) 根据一组点和切线创建路径对象。这些点由表示其 x、y 坐标的数偶数组的数组定义。数组的长度必须至少为 1,可以为任意更大的长度。点的入点手柄和出点手柄由表示其 x、y 位移坐标的数偶数组的数组定义。切线数组的长度必须与点参数完全相同。切点坐标值是相对于父点的坐标的位移 - 值 [0,0] 在入点处不产生弯度。可以将路径的 points()inTangents()outTangents() 和 isClosed() 方法传递给 points、inTangents、outTangents 和 is_closed 参数来复制路径。可以将同一路径的 points 和 tangents 传递给 createPath(),经过修改即可生成不同结果。例如,以下表达式将通过不传递 inTangents 或 outTangents 参数从“蒙版 1”删除曲线:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points());

下面的示例通过传递“蒙版 1”的 points 和 tangents,并通过将 is_closed 设置为 false 来将其转换为开放路径:

myMask = mask("Mask 1").path;
myMask.createPath(myMask.points(), myMask.inTangents(), myMask.outTangents(), false);

 

points长度为 1 或更大的数组包含表示路径点的 [x,y] 坐标的数偶数组。必需,除非不传递任何参数(例如,createPath())。默认值为 [[0,0], [100,0], [100,100], [0,100]]。
is_closed(可选)布尔值。决定蒙版是否为闭合。如果为 true,则会将最后一个点连接到第一个点。默认值为 true。
inTangents包含数偶数组的数组,表示路径点的出点手柄的 [x,y] 位移坐标。必需,除非不传递任何参数(例如,createPath())。数组长度必须与 points 长度相同,或者您可以传递一个空数组 ([]),系统会假定该数组长度与 points 长度相同,并为所有切线设置 [0,0]。默认值为一个空数组。
outTangents包含数偶数组的数组,表示路径点的入点手柄的 [x,y] 位移坐标。必需,除非不传递任何参数(例如,createPath())。数组长度必须与 points 长度相同,或者您可以传递一个空数组 ([]),系统会假定该数组长度与 points 长度相同,并为所有切线设置 [0,0]。默认值为一个空数组。

返回:

路径对象。

示例

  • 示例 1

该示例在 time=0 时将点和切线坐标列表从“形状图层 1”图层的“形状 1”的“路径 1”写入字符串。将其应用于文本图层的源文本属性,以读出形状的坐标,以及入点和出点。

pointsList = "";
sampleTime = 0;

myShape = thisComp.layer("Shape Layer 1").content("Shape 1").content("Path 1").path;

for (i = 0; i < myShape.points(sampleTime).length; i++) {
    pointsList += "c: " + myShape.points(sampleTime)[i].toString() + "  i: " + myShape.inTangents(sampleTime)[i].toString() + " o: " + myShape.outTangents(sampleTime)[i].toString() + "\n";
}

pointsList;

  • 示例 2

该示例会读取“纯色深灰 1”上的“蒙版 1”的第一个顶点的坐标,并将其转换为合成坐标。将其应用于效果的 2D 点控制,例如“写入”或“CC 粒子仿真系统 II”,以便效果追踪或跟踪动画蒙版的第一个点。复制效果并更改路径点指引值 ([0]) 以追踪或跟踪蒙版的其他点。

myLayer = thisComp.layer("Dark Gray Solid 1");
myLayer.toComp(myLayer.mask("Mask 1").maskPath.points()[0]);


讲师加盟

明狮网-学习交流QQ群:24903810

VIP看全网课程,系统课程持续更新

免费指导 在线咨询

 

COPYRIGHT © 2018 VIDEO-STUDY.COM ALL RIGHTS RESERVED.

冀ICP备2021010530号-1  技术支持:明狮教育   免责申明

明狮交流群

明狮交流群