mad吧 关注:78,729贴子:663,133

【慢更】从零开始的AE表达式技巧 RAES

只看楼主收藏回复

从零开始的AE表达式技巧
Re:After Effect Expression Skill(划掉)
abbreviation: RAES(划掉)
写这个的初衷是因为现在越来越多的人不愿意去接触mg,因为MG视频/静止系 之类的MAD看上去有过多的形状层,过多的k帧导致劝退了很多视频制作人,而这些很多都是通过表达式来实现的,所以写一写表达式相关的记录,来教大家一个不止wiggle的神奇语言。

强调点:
- 以编写案例为主,通过案列讲解一些思路和方法,和上一个系列 动画制作技巧一样
- 多想,多查,多写,多debug
- 数学好,会编程的可以来讨论以及投稿,一起来写
- 不会说很多原理,也不会教编程,能用就行,想知道原理多查查数学和编程书
- 从0开始,说的慢,但是必须要有AE基础,不回答AE基础操作问题
- 之后的正文会在A.T.I官网进行发布,几天到一周后发在其他平台。我们的官网:http://www.ati.ink
After Effects 在表达式求值时,使用 JavaScript (以后简称js)引擎。所以我们在编写表达式的时候遵从js的语法和逻辑。这里给出一些会用到的工具&工具网站:
- AE是2019版本以下的建议使用 其他的专业用于编程的文本编辑器,本文所用的是Atom。
-- 放心,开源,下载地址 官网:https://atom.io/
-- 安装完成之后安装 atom-ternjs 插件,安装教程:http://www.nmgwddj.com/program/475.html
- AE表达式官方文档,中文:https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html
- JavaScript 语言的信息
-- js 图文教程 :https://www.w3school.com.cn/js/index.asp
-- js 对象查询 :https://www.w3school.com.cn/jsref/index.asp
- 平时我会记录的表达式文档:https://shimo.im/docs/8chdCvqjRdQcRJCG/ 匿名打开即可,请善用Ctrl+F 进行查找
表达式能做什么?
其实如果接入了编程,能做无穷的事情,但是对于视频制作者来说,没有必要,因为这意味非常高的学习成本,表达式对于我们更多的还是提供便利(模板、预设)与连携控制(最经典-子父级)。


如何书写表达式?
按住alt+点击 (就是我们k帧的地方),就可以出现表达式输入框。
书写时本文会遵循js的规则,基础规则可以查阅 https://www.w3school.com.cn/js/index.asp

AE中一些特殊的常用变量。
- time : 表达式中最常见的自变量,许多函数都可以通过time来驱动,可以把time当作动力源来看待;
- index : 所在的层的索引号,也就是每个图层最左边的数字,常用于图层索引;
- position等图层属性 : 也就是位置、大小、透明度等属性,是我们最常用的结果值;
- toWorld : 一般只用于定位,可以除去子父级的关系,从相对位置变为绝对位置;
……
0就写到这里,希望大家以后也多多支持!
PS:不接受催更,不定期更新


1楼2019-09-20 10:44回复
    从零开始的AE表达式技巧 RAES-01

    本章节主要通过"补零"的例子来介绍 if 条件函数
    效果图

    能用来作什么?
    条件判断/随机数,可以用于视频制作中的小部件以及背景的数字跳动
    所用方法/函数
    - random 生成随机数
    - toFixed 对随机数取整
    - if 条件判断
    代码
    /**
    * 0-999随机数 补零
    * text
    * @Random 随机
    * @toFixed 取整
    * @if 条件判断
    */
    var num = random(0,999).toFixed(0); //定义&赋值 一个随机数 取整,小数位数为0,最大值可滑块
    if ( num < 10 ) { //判断
    "00" + num; //补零
    }else if ( num < 100 ) {
    "0" + num;
    }else{
    num;
    }

    注意点
    - 学习请从第0章开始,不教ae基础操作
    - var 是声明变量,意思就是告诉程序"我需要一个东西,这个东西是什么"
    - 每一句结尾都已";"结尾,要不容易报错;所有的标点符号都必须是英文半角
    - 建议使用英文版AE,如果你是中文版,那一定要看好[子父级]位置和一些AE自带的[固定变量]中文名
    - 刚开始书写代码的时候,建议和我一样:在开头用/*……*/(多行注释)去说明这串代码的作用所用函数/方法,以免以后遗忘,这是一个好习惯
    - 每一句重点代码的后面可以使用 //……(单行注释) 来注释说明,多注释,这是一个好习惯
    代码解析
    思路框架
    整体的思路很简单
    生成随机数 → 取整 → 条件判断 → 对符合条件的"加0"
    逐句解析
    新建一个文字层,对文字层的source text(源文本)添加表达式
    var num = random(0,999).toFixed(0);
    语义:声明一个变量 num(变量可以为自己所能接受的名字不一定要按我的来),num的值为0-999的随机值,再对随机值利用 toFixed 方法取整数。
    函数/方法解析:
    random(min,max) :括号内第一个数值为最小值,第二个数值为最大值,生成的随机数带非常多的小数位数
    toFixed(0) :括号内为保留的小数位数
    if ( num < 10 ) {
    "00" + num;
    }else if ( num < 100 ) {
    "0" + num;
    }else{
    num;
    }
    语义:当num小于10的时候,num之前加"00"(输出为文本);否则 当num小于100的时候,num之前加"00";否则 输出原数值;这里看成2个if……else……拼接而成
    注意点:小于10一定要在小于100之前,因为js的语法是从上到下执行的,小于100包含了小于10,如果小于100写在之前,那么小于10将失去判断意义
    函数/方法解析:
    if(){}else{} :条件判断,当……就……否则……;也可以用于执行循环,今后会教到
    特别注意点:
    输出的类型为string(文本),所以输出之后不可直接用于运算,需要类型转换
    可以用typeof 验证一下,在最后一行增加
    typeof num;

    拓展
    用if控制wiggle 缓慢 停止,可以自己试一试,里面的参数都可以用"滑块控制代替
    /**
    * 控制时间的震动
    * position
    * @wiggle 震动
    * @if 条件判断
    */
    var freq = 20; //频率
    var endtime = 2; //震动停止的开始时刻
    var speed = 10; //减慢速度,越大越快
    if ( endtime < time ){
    x = wiggle (freq / ((time-endtime)*speed),10);
    y = wiggle (freq / ((time-endtime)*speed),15);
    value + [x[0],y[1]];
    }else{
    x = wiggle (freq,10);
    y = wiggle (freq,15);
    value + [x[0],y[1]];
    }

    感谢大家能看到这里,对于本篇的建议或者意见可以在留言中指出,也欢迎大家投稿与讨论。
    2019/09/16
    贴吧没法弄彩色字体还是建议官网看吧……


    2楼2019-09-20 10:45
    收起回复
      此贴需要加精


      来自Android客户端3楼2019-09-20 17:53
      回复


        IP属地:四川来自Android客户端4楼2019-09-20 20:42
        回复


          IP属地:马来西亚5楼2019-09-20 21:02
          回复
            666


            IP属地:广东来自Android客户端6楼2019-09-21 10:48
            回复
              辛苦了


              IP属地:重庆来自Android客户端8楼2019-09-23 05:08
              回复
                良心叹娘


                IP属地:上海来自Android客户端9楼2019-10-05 06:03
                回复
                  啊,是叹娘啊


                  IP属地:广东来自Android客户端10楼2019-10-05 16:02
                  回复
                    顶大佬,另外邦邦好评


                    IP属地:湖北来自Android客户端11楼2019-10-06 10:07
                    回复
                      冰叹


                      IP属地:广东来自iPhone客户端12楼2019-10-06 14:56
                      回复
                        傅老师来啦


                        IP属地:广东来自iPhone客户端13楼2019-10-29 17:13
                        回复
                          感谢大佬


                          14楼2019-10-31 15:11
                          回复
                            顶~


                            IP属地:北京15楼2020-02-23 02:01
                            回复