,
今天要来和大家分享一个制作计时器的表达式!
在分享表达式之前先和大家两个AE内建的计数特效:
1.Timecode
Timecode可以直接套用在任何图层上,
他会将该图层直接转换为影片计时器,
所以如果想要在影片上盖上一个Timecode需要额外新增一个图层并套用。
Timecode能够快速制作简单的计时器,
相较之下能够调整的参数并不多,只有底色、文字颜色等等。
在Display Format中可选择计时器显示的方式。
大概就是这几种样式,
而且不能够控制是否显示时、分、秒、微秒。
在Time Source中可以选择替整个Comp计时或是替该图层计时,
举例来说如果你将图层往后移动2秒,并选择Layer Source,
在Comp中拨放至第二秒才会开始启动计时器。
2.Numbers
接下来介绍专门计数的特效Numbers,
和Timecode一样可以套用在所有图层上并转换计数器,
加入特效后会跳出一个视窗,你需要在这里就决定文字样式。
Numbers相较Timecode就来的自由许多,
可以调整的除了刚才的字体样式,颜色、填色方式、是否乱数等在这里都可以调整。
在Type一样可以选择显示方式,显示Timecode系列的选项就可以变成计时器。
不过Number的缺点就是Timcode的选择需要配合影片桢率,
但选项固定只有30、25、24,假如你今天使用60桢的影片就无法用Numbers精确的计算时间了。
3.表达式计时器
接下来就是我们的主角!表达式计时器!
要制作表达式计时器首先你需要新增一个Text图层。
你可以先在Text图层打几个字方便待会观察。
接着点开Text > Source Text,并Alt + 左键点击左侧的小码表Icon进入表达是输入区。
在输入区打上表达式:
countspeed = 1;
clockStart = 0;
function times(n) {
if (n<10) return “0” + n
else return “” + n
}
clockTime = clockStart + countspeed*(time – inPoint);
if (clockTime < 0) {
minus = “-“;
clockTime = -clockTime;
} else {
minus = “”;
}
t = Math.floor(clockTime);
min = Math.floor((t%3600)/60);
sec = Math.floor(t%60);
minus + times(min) + “:” + times(sec)
直接把上方文字复制进去就可以了。
你会发现文字自动变成计时器了!
这个计时器的计时方式是抓取实际时间而不是桢数,
因可以精确的计时。
而且这个计时器是可以更换显示方式的!
你可以将表达式的
t = Math.floor(clockTime);
min = Math.floor((t%3600)/60);
sec = Math.floor(t%60);
minus + times(min) + “:” + times(sec)
改为
t = Math.floor(clockTime);
h = Math.floor(t/3600);
min = Math.floor((t%3600)/60);
sec = Math.floor(t%60);
ms = clockTime.toFixed(3).substr(-3);
minus + times(h) + “:” + times(min) + “:” + times(sec) + “:” + ms
这里每一排的开头文字 t、h、min、sec、ms分别代表:
时间参数(不需要调整)、小时、分钟、秒、微秒的代号。
你可以自由新增减少完整的一排,只要特别注意最底下的那排表达式
minus + times(h) + “:” + times(min) + “:” + times(sec) + “:” + ms
括号内的代号是否与想显示的所有数列,并检查”:”的数量是否正确。
更凯完毕看起来就像这样:
特别注意,如果你想更便微秒的位数,
你可以将
ms = clockTime.toFixed(3).substr(-3);
改为
ms = clockTime.toFixed(2).substr(-2);
这样就能够更变为二位数了!
增加减少以此类推。
如果你想制作倒数计时器也可以,
只需要在所有表达式设定完毕之后检查你的Comp时间长度,例如现在长度为5秒,
将Text图层Comp起来之后对着Comp右键 > Time > Time-Reverse Layer(图层时间倒转)。
这么一来就完成倒数计时器囉!
剩下就是替你的计时器作点装饰~
此教学专案档下载(cc 2018以上):