• Ae 核心表达式及用法(05):路径相关


    createPath(points, inTangents, outTangents, is_closed) 

    根据一组点和切线创建路径对象。

    例:使得物件出现在每一个路径点上。

    先为”路径“(形状)图层的路径属性添加表达式。

    1. //先将“路径”图层的锚点、位置属性均设为 [0,0]。并为此图层添加滑块控制。
    2. //滑块控制中的滑块设置了关键帧
    3. controler = effect("滑块控制")("滑块").value;
    4. steps = 20;
    5. size = 20;
    6. newPoints = [];
    7. //生成叶序曲线点
    8. for (t=1;t<steps;t++){
    9. a = t*size*-1;
    10. b = controler*0.1*(2*Math.PI*(steps-t));
    11. x = Math.cos(b)*a+thisComp.width/2;
    12. y = Math.sin(b)*a+thisComp.height/2;
    13. newPoints.push([x,y]); // 向newPoints 添加一个新元素
    14. }
    15. createPath(points = newPoints, inTangents = [], outTangents = [], isClosed = false);

    为物件图层添加表达式后,复制多份(路径点数目)物件图层。

    1. //物件图层位置表达式。根据“路径”形状图层创建的路径点来决定位置。
    2. thisComp.layer("路径").content("路径 1").path.points()[index-1];

    9c8074df6302171cad25b8208cab2252.gif

    points(t)

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

    例:先绘制一个矩形形状,并转换为贝塞尔曲线路径。再添加一个路径属性,并为路径 2 的路径属性添加表达式。

    1. //路径1是一个矩形贝塞尔曲线路径。此处为路径2的路径属性表达式
    2. //获得当前路径在上一级对象中的序号
    3. indexProperty = thisProperty.propertyGroup(1).propertyIndex;
    4. //获得上一层的路径
    5. mask1 = content("矩形 1").content(indexProperty - 1).path;
    6. //获得变化的四个点。
    7. point1 = linear(time,0,2,mask1.points()[0],mask1.points()[1]);
    8. point2 = linear(time,0,2,mask1.points()[1],mask1.points()[2]);
    9. point3 = linear(time,0,2,mask1.points()[2],mask1.points()[3]);
    10. point4 = linear(time,0,2,mask1.points()[3],mask1.points()[0]);
    11. //创建路径
    12. createPath(points = [point1, point2, point3, point4], inTangents = [], outTangents = [], isClosed = true)

    7b254508105c35b26388c3cb459dc7da.gif

    pointOnPath(percentage, t) 

    获取路径上任意点的 x、y 坐标。

    参数 percentage:路径点在路径弧长的百分比。

    参数 t:默认为 time,指定采样到路径的时间。

    1. //"路径形状"图层路径表达式。先在“路径”纯色图层上设置蒙版路径关键帧。
    2. thisComp.layer("路径").mask("蒙版 1").maskPath
    1. //"物件"图层的位置表达式。
    2. pos = linear(index,1,10,0,1);
    3. thisComp.layer("路径").mask("蒙版 1").maskPath.pointOnPath(pos, t = time);

    0eb79dce211039b2635a1bffb3f9009f.gif

    类似的第二个例子,让形状图层的椭圆路径绕着纯色图层的蒙版路径运动。

    1. //复制的椭圆路径后可产生位置上的偏移
    2. pathIndex = thisProperty.propertyGroup(1).propertyIndex;
    3. newTime = time + ((pathIndex-1)*-0.05);
    4. // 椭圆路径的位置属性表达式。2 秒钟绕蒙版路径转一圈
    5. thisComp.layer("纯色(蒙版路径)").mask("蒙版 1").maskPath.pointOnPath(newTime/2%1)

    e47b8029c6931182ad1bdffbdb631e9e.gif

    11a2952d49aabee68447c0b60f9f9adf.png

    “有钱的捧个钱场,好看的点下在看”

  • 相关阅读:
    机器学习西瓜书+南瓜书吃瓜教程学习笔记第六章支持向量机
    【我的世界Minecraft-MC】常见及各种指令大杂烩【2022.8版】
    图像数据输入流程和相机模型
    APP破解去广告
    嵌入式分享合集91
    上半年巨亏51亿,小鹏汽车“掉队”
    IIS服务器下如何支持url重写
    达梦高可用整理
    CIE A-level分数线已公布
    【畅购商城】详情页模块之评论
  • 原文地址:https://blog.csdn.net/qq_41176800/article/details/125419243