向安宇知识库 向安宇知识库
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 随笔
      • 日记
    • 视听
      • 纪录片
      • 设计
      • 视频
      • 摄影
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
首页 › 创作向 › 课程 › AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey
  • 13
  • 0

AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey

向安宇
2018-08-25 15:49:21
怎样用图层标记点控制淡入淡出?

可以用marker.nearestKey(time)访问标记点的index、time和comment等参数;用marker.key(n)访问相应index值的标记点,比如marker.key(1)访问的是第一个标记点,marker.key(2)访问的是第二个标记点。

我们一步步来。

我们首先来写一个控制淡出的表达式,这类表达式用linear来写。新建形状层,给Opacity写入表达式:

t = time;
linear(t, 0, 1, value, 0)

  

这个表达式是让对象在1秒内从现有的透明度变为0 。

我们再引入一个表达式framesToTime(frames, fps = 1.0 / thisComp.frameDuration),这个表达式是将帧数转变为时间值,如framesToTime(10),是将10帧转变为当前合成帧率下10帧的时间,如果当前合成是24fps,那么framesToTime(10)其返回值就是10/24。这个表达式方便进行帧数级别的控制,比用时间值进行控制方便得多。

那么,我们的表达式可以改进为:

t = time;
fadeFrames = 10;

linear(t, 0, framesToTime(fadeFrames), value, 0)

  

旧话重提,写表达式一定要方便调试,这里引入变量fadeFrames,并写在前面几行,当fadeFrames等于10时候,这个表达式让对象在10帧内,从现有透明度变为0 。

接下来,我们给图层打上标记点,用标记点来控制淡出:

t = time - marker.key(1).time;
fadeFrames = 10;

linear(t, 0, framesToTime(fadeFrames), value, 0)

  

既然现在是用time作为“引擎”来驱动linear让Opacity淡出,那么,time反过来,就能控制淡入,所以表达式写成:

t = marker.key(1).time - time;
fadeFrames = 10;

linear(t, 0, framesToTime(fadeFrames), value, 0)

  

上面两个表达式是用时间线上第一个标记点来控制,且只能一次控制淡入或淡出,那么,能否再打上一个标记点,让第一个标记点控制淡入,第二个标记点控制淡出?

fadeFrames = 10; 

m = marker.nearestKey(time).index;
if(m == 1){
t = marker.key(m).time - time;}
else if(m == 2){
t = time - marker.key(m).time;}
linear(t, 0, framesToTime(fadeFrames), value, 0)

  

Ps,
“=”是赋值操作符。
“==”是判断值是否相等操作符。
所以上面表达式在写条件判断时候,要使用“==” 。

  
当我们这个图层上只有两个标记点的时候,这样写就没有问题,第一个标记点是淡入,第二个标记点是淡出。但是,如果我们的图层上有其他标记点,比如我们还有其他标记点控制其他参数,这时候就需要饮用标记点的comment来进行判断。

给图层打上两个标记点,控制淡入的标记点其comment写入“In”,控制淡出的标记点其comment写入“Out”,给Opacity写入表达式:

fadeFrames = 10;

m = marker.nearestKey(time).index;
tag = marker.key(m).comment;
if (tag == "In"){
t = marker.key(m).time - time;}
else if(tag == "Out"){
t = time - marker.key(m).time;}
linear(t, 0, framesToTime(fadeFrames), value, 0)

  
这个表达式还有一个小问题,就是当图层上面没有标记点时候就会报错,所以我们再加一个判断if(marker.numKeys > 0),就是当标记点数量大于0的时候,才进行淡入淡出的判断,否则输出value,相当于不做任何变化。

fadeFrames = 10;

if(marker.numKeys > 0){
	m = marker.nearestKey(time).index;
	tag = marker.key(m).comment;
	if (tag == "In"){
	t = marker.key(m).time - time;}
	else if(tag == "Out"){
	t = time - marker.key(m).time;}
	linear(t, 0, framesToTime(fadeFrames), value, 0)
}else{
value;
}

  

这个表达式已经可以使用并且不会报错。

我在youtube上看到一位youtuber写的这个表达式,首行还有另外两个赋值:在首行添加“m = 0;”设置初始的层标记数量(一开始是0个标记点0)。添加“t = time;”代表将稍后重新定义时间。

fadeFrames = 10; m = 0;t = time;

if(marker.numKeys > 0){
	m = marker.nearestKey(time).index;
	tag = marker.key(m).comment;
	if (tag == "In"){
	t = marker.key(m).time - time;}
	else if(tag == "Out"){
	t = time - marker.key(m).time;}
	linear(t, 0, framesToTime(fadeFrames), value, 0)
}else{
value;
}

  

AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey-向安宇知识库

再看一个简单例子,给Opacity添加表达式:

if(marker.numKeys > 0){
	m1 = marker.key("Start").time;
	m2 = marker.key("End").time;
	linear(time, m1, m2, 0, 100);
}else{
value
}

这个表达式的作用,是控制淡入的起点和终点。
AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey-向安宇知识库
也就是从“Start”标记点开始淡入,Opacity(透明度)开始从0%往100%变化,到“End”标记点结束淡入。

< 返回目录

AE表达式
13
AE表达式|11、如何利用 valueAtTime 制作长龙影分身?@valueAtTime
上一篇
AE表达式|13、如何利用标记点进行精确控制?(motionscript高阶)@markerKey
下一篇

评论 (0)

登录后可发布~
立即登录
暂无评论

向安宇

痴迷文字,醉心影像
447
文章
5
评论
325
喜欢

聚合文章

1.我将深入研究如何提升学习力,以及如何用AI提升学习效率
克丽丝是谁?(人物设定1.0)
AIP克丽丝的构想
wordpress也要拥抱AI

近期评论

不同意知识过时这么快,数学公式几百年都没变啊
—— Baron von Laughsalot 4 月前 1.我将深入研究如何提升学习力,以及如何用AI提升学习效率
这学习方法太适合我这种记性差的了,必须追更!
—— 狂血战士 4 月前 AIP克丽丝的构想
数字人做语言教学太香了,求Anni快出实操指南!
—— 贪吃小熊 4 月前 Anni搞钱系列:普通人用AI,到底能做起来什么副业?
想问作者会开线下课吗?想带孩子去听听
—— 秋分桂落 4 月前 1.我将深入研究如何提升学习力,以及如何用AI提升学习效率
想问下这个AI工具对服务器配置要求高吗?
—— 狂喜的烟花 4 月前 wordpress也要拥抱AI

猜你喜欢

AE表达式|29、如何做一个自适应大小的文本框? @ sourceRectAtTime

AE表达式|29、如何做一个自适应大小的文本框? @ sourceRectAtTime

2018-10-19 14:17:51
3,641 1 4
一分半钟学会无人机720全景拍摄

一分半钟学会无人机720全景拍摄

2018-03-12 14:20:05
1,268 0 0
AE表达式|31、如何创建一个虚线圆圈?

AE表达式|31、如何创建一个虚线圆圈?

2018-10-22 11:04:02
5,702 0 3
AE表达式|19、如何制作一只黑色幻蝶?@ Math.sin  @ valueAtTime

AE表达式|19、如何制作一只黑色幻蝶?@ Math.sin @ valueAtTime

2018-09-03 11:33:07
1,540 0 0
13

关于我:

想要读万卷书,行万里路,看万部电影。

推荐栏目:

视频论文 课程 后期制作 非虚构 照片 视频

特色专题:

专题汇总 宜看一侃 帧影帧画 重读文学史 青玉记
Copyright © 2016-2026 向安宇知识库. 鄂ICP备16005400号-1 鄂公网安备42050602000017号
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
    • 视听
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
  • 剪辑
  • 转场
  • 纪录片

向安宇

痴迷文字,醉心影像
447
文章
5
评论
325
喜欢