【AE表达式】鹤梦离弦 – 模块化思路中的“时间”(1)
AE教程表达式

【AE表达式】鹤梦离弦 – 模块化思路中的“时间”(1)

在文章之前,先想给我自己引引流,鹤梦的学习屋和月离的万事屋已经达成合作,之后可能会在两边的地盘都找得到我们俩,鹤梦的学习屋群号是:963669024,进群密码就是我自己的昵称 鹤梦离弦。 大家好我是鹤梦,今天我将讲述一些表达式使用中有关“时间”的技巧,主要想拓展小伙伴们使用表达式时模块化的思路。 在表达式中,有许多属性都能记录时间,如入点、出点、关键帧、标记等等。这些“时间”可以用来便捷修改动画,无论是自己做工程时想模板化便于自己修改,还是制作模板流通发售的情况下。 1.实现在图层入点处使图层渐显,在出点处渐隐。(入点和出点) 这样完全不用打开属性打关键帧了,目的是实现多时长需求下的快速更改。 inT = thisLayer.inPoint;//inTime的意思,不想变量太长 outT = thisLayer.outPoint;//outTime的意思,不想变量太长 d = effect("duration")(1);//动画时长 t = time; if(t<inT+d){linear(t,inT,inT+d,0,100);}//在入点后对应时长内,映射渐显线性动画 else if(time>outT-d){linear(t,outT-d,outT,100,0);}//在出点前点对应时长内,映射渐显线性动画 else {100;} 拓展:这里的linear完全可以换成easeIn和easeOut,假如在属性上使用缓动的映射,动画会更加柔和。熟练使用入点和出点可以快速制作可调节的进出场动画。 2.实现在标记处让图层旋转停止。(标记) 用标记代替关键帧调节,目的是实现无关键帧自适应动画。 t = time; sp = effect("Speed")("ADBE Slider Control-0001"); t * sp; /*这里是Rotation滑块代码,目的是存储正常旋转的数据,不被后面缓慢停止所影响*/ t = time; sp = effect("Speed")("ADBE Slider Control-0001");...
『实用技巧』形状伸缩,描边不变
AE教程实用技巧

『实用技巧』形状伸缩,描边不变

原文链接 效果预览 使用方法 给描边宽度(stroke width)添加以下表达式,再缩放的时候,在视觉上,描边大小不会改变 表达式 value / length(toComp([0,0]), toComp([0.7071,0.7071])) || 0.001; 原文 此代码将对角线测量1像素的屏幕尺寸,然后将其用作“描边宽度”的除数。这意味着该图层有多少个父级无关紧要,它将始终测量单个像素。 || 0.001:是为了捕获错误,因为零不能做除数。如果像素大小为零,则使用0.001,几乎接近零,但不会错误。    
【AE表达式】循环形状路径
AE教程表达式

【AE表达式】循环形状路径

1.在形状图层路径K几个关键帧 2.添加表达式 myPath = thisProperty; t1 = thisProperty.key(1).time; t2 = thisProperty.key(numKeys).time; sl = t2-t1; t = Math.abs((time-t1)%sl)+t1 if (time <t1){ t = t1; } myPath.createPath(myPath.points(t), myPath.inTangents(t), myPath.outTangents(t), true); 3.效果 4.其他 属性循环请看:https://www.yuelili.com/ae/expression/11253/
『一分钟动画』AE打字机动画(关键帧版)
AE教程一分钟动画

『一分钟动画』AE打字机动画(关键帧版)

使用方法 1.新建文字图层,并输入你的文字 2.K2个关键帧 3.在源文本内添加表达式即可 4.拖拽关键帧控制打字进度 src_length = text.sourceText.length first_key = text.sourceText.key(1).time; last_key = text.sourceText.key(2).time // 可自定义提示符号,预设为 "_" prompt = [ "_", " " ]; // 目前打字显示位置 typePos= Math.round(linear(time,first_key,last_key,0,src_length)); i = Math.round(time % 1); text.sourceText = substr( 0, typePos) + prompt[i]; 老版本 网上版本居然用时间控制进度,我觉得蛮沙雕的。  
【AE表达式】 wiggle的同时再用loopOut
AE教程表达式

【AE表达式】 wiggle的同时再用loopOut

介绍 wiggle的同时,再引用loopOut机制 使用方法 新建一个纯色图层100*100(其他图层都行,这是示例) 在图层的位置属性K2帧,比如从左下到右上 在位置属性添加下面的表达式即可 表达式 freq = 2; //设置频率:1秒2次 amp = 200; //设置振幅:200 myProporty = transform.position//设置要循环的属性 firstKeyTime = myProporty.key(1).time lastKeyTime = myProporty.key(myProporty.numKeys).time loopTime = lastKeyTime - firstKeyTime; //wiggle的循环周期 t = time % loopTime; wiggle1 = wiggle(freq, amp, 1, 0.5, t+firstKeyTime); wiggle2 = wiggle(freq, amp,...
【AE表达式】分段帧计数
AE教程表达式

【AE表达式】分段帧计数

效果展示 表达式 在文本层的Source Text上输入以下表达式,k帧就等于分段,并在当前时间显示当前分段的帧数 if(numKeys != 0){  kt = nearestKey(time).time;  if(time>=kt){ id = nearestKey(time).index }  else{ id = nearestKey(time).index-1 } }else{id = 0} if(id!=0){  f = timeToFrames(time-key(id).time); }else{  f = timeToFrames(time)  } if(f.toString().length == 1){f = "000"+f.toString()} if(f.toString().length == 2){f = "00"+f.toString()} if(f.toString().length == 3){f = "0"+f.toString()} "当前分段时间:"+"\n"+f  其他 来源:@Aite25 https://b23.tv/9Qg4b0
【AE表达式】蒙版不追随图层
表达式

【AE表达式】蒙版不追随图层

1.打开任意一个图层,并画一个蒙版 2.记录当前图层的位置值 当前是[960,540] 3.给蒙版路径输入以下表达式 注意:蒙版1,要替换成你的蒙版名称,或者用小鞭子勾一下,[960,540]换成你自己当前的位置 [cc lang=”JS”]myMask = mask(“蒙版 1”).maskPath; // myMask.createPath(Array.from(myMask.points(), x => x-transform.position+[960,540]), myMask.inTangents(), myMask.outTangents(), true); 4.完成! 为了让效果明显,我把蒙版反转了,图中粉红色框就是蒙版 报错 1.可能使用的是旧版表达式,文件-项目设置-表达式 改为JavaScript即可 2.如果你更改了原始图层的缩放,那么表达式需要增加一个缩放判定。其他不变 myMask = mask("Mask 1").maskPath; // scale_cor = [transform.position[0]/transform.scale[0]*100,transform.position[1]/transform.scale[1]*100] rotation_cor = [0.0] myMask.createPath(Array.from(myMask.points(), x => (x+[960,500]-scale_cor+rotation_cor)), myMask.inTangents(), myMask.outTangents(), true); 3.如果你更改了原始图层的旋转,明天改
【表达式】取整的100种方法
AE教程表达式

【表达式】取整的100种方法

num = 1.464 parseInt(num) // 返回1:保留整数部分,可以转字符串 Math.ceil(num) // 返回2:向上取整 Math.round(num) // 返回1:四舍五入 Math.floor(num) // 返回1:向下取整,丢弃小数部分 Math.trunc(num) // 返回1:丢弃小数部分 num.toFixed(0) // 返回1:可以指定位数,-1代表取整十位
【表达式案例】方块旋转放入方块
AE教程表达式

【表达式案例】方块旋转放入方块

灵感来源:youtube @Chetal Gazdar 一、建立母版方形 如新建一个1000*1000的正方形,并给它加一个角度控制表达式 二、表达式迭代 复制刚才的形状层 1.在size属性添加表达式 siz_last = thisComp.layer(thisLayer.index-1).content("Rectangle 1").content("Rectangle Path 1").size; ang = degreesToRadians(transform.rotation-thisComp.layer(thisLayer.index-1).transform.rotation); tra = 1 /(Math.cos(ang)+Math.sin(ang)); tra*siz_last 2.在旋转(rotation)属性添加表达式 thisComp.layer("Shape Layer 1").effect("Angle Control")("Angle")+thisComp.layer(thisLayer.index-1).transform.rotation; 三、疯狂复制(完成) 注意 母版图层必须放第一层,且必须是正方形。 角度尺寸都可以随便调。 中英名称问题,请自行更改 原理与表达式解析 第一句:找到上一个形状的尺寸 siz_last = thisComp.layer(thisLayer.index-1).content(“Rectangle 1”).content(“Rectangle Path 1”).size; siz_last :代表上一个正方形的尺寸(第一个母版就是1000*1000) thisLayer.index-1:index是图层序号,这句话就是当前图层序号-1,也就是上一个图层的图层序号 thisComp.layer(XXX):引用图层 .content.content(“Rectangle Path...
【AE表达式】图层自适应渐入渐出效果
表达式

【AE表达式】图层自适应渐入渐出效果

src = thisLayer.sourceRectAtTime() //获得图层的源属性 width = src.width; //获得它的宽度 t_in=thisLayer.inPoint //t_in:图层入点时间 t_out=thisLayer.outPoint //t_out:图层出点时间 t_tran = 0.5 //t_tran:过渡时间 //用if else判断当前时间点是否处于过渡时间,用linear进行过渡(如果觉得生硬 也可以用ease) if (time<t_in+t_tran){ linear(time,t_in,t_in+t_tran,[width+1080,960],[540,960]); }else if(time<t_out-t_tran){ [540,960]; }else{ linear(time,t_out-t_tran,t_out,[540,960],[width-1080,960]); } sourceRectAtTime()详解:链接 linear():链接 if else:链接 上面的位置值可以自己根据合成改一改,不想加太多变量啦   如果改不透明度渐入渐出的话 src = thisLayer.sourceRectAtTime() //获得图层的源属性 t_in=thisLayer.inPoint //t_in:图层入点时间 t_out=thisLayer.outPoint //t_out:图层出点时间 t_tran = 0.5...
【AE表达式】只变动奇数关键帧。频闪的进阶版
AE教程表达式

【AE表达式】只变动奇数关键帧。频闪的进阶版

实现的效果:奇数关键帧结果为-1,偶数关键帧以及其他地方的结果为1。 频闪的话,只需要把&& nearestKey(time).index %2==1删掉即可 -1和1为你自己更改的值,比如不透明度改为0和100   if (nearestKey(time).time == time && nearestKey(time).index %2==1){ -1; }else{ 1; } nearestKey(time).time :意思是最接近当前关键帧的时间,比如关键帧为1,3,5秒。那么3.2秒,左边表达式返回3,因为3.2最接近3 nearestKey(time).index %2==1:意思是最接近当前关键帧的序号,比如关键帧为1,3,5秒。那么3.2秒,左边表达式返回2,因为3秒那个关键帧,索引值为2 &&:条件和
【AE表达式】使用箭头移动运动物体
AE教程everydayskillshare

【AE表达式】使用箭头移动运动物体

原文:已授权 Math.atan2(y,x) 使用Math方法下的atan2追踪运动对象(严格来说是锚点)很方便。在上面的动画中 以箭头为原点[0,0]计算星形位置的角度 atan2是把圆弧的长度转为角度(弧度)的方法。请注意,它与Ae中经常使用的角度(频率方法)不同。 与正常角度不同的那个 好记性不如烂笔头。否则要用法线角度(会变麻烦) 很重要的一点 里面有两个函数(参数),但是请注意,书写方式是(y位置,x位置)是颠倒的。 写作范例 箭头指向星号的公式。写在箭头图层的旋转中。 n = thisComp.layer("star").transform.position - position; a = Math.atan2(n[1],n[0]); radiansToDegrees(a) 有3行表达式。 第一行,箭头的位置减去星星的位置,以便即使星星移动,距离也总是减去箭头的。赋值为n 第二行,以箭头的位置为原点,计算从星星坐标到箭头的角度(弧度)。角度在最右边侧为0度。增加则为负,减少则角度为正。赋值为a。 第三行是将计算出的角度从弧度转换为Ae的角度。   现在,您可以从坐标中提取角度。注意是(y,x)哦,其他的正常使用,因此请尝试一下^^ 用表达式享受舒适的Ae生活^^ https://everydayskillshare.jp/