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

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

向安宇
2018-08-25 17:16:49

在www.motionscript.com上有一个用标记点来触发动作的高级表达式:

action = comp(name).layer("action");//使用时唯一需要编辑的一行,
这行寻找预合成下名为“action”的层,也是放图层标记点的那层,其名称根据自己需要更改
 
n = 0;//重新定义图层标记数的初始值。
if (marker.numKeys > 0){ //检查图层上是否有标记。
  n = marker.nearestKey(time).index; // 如果有标记,将重新定义n为标记索引。
  if (marker.key(n).time > time){
    n--;
  }
}
 
if (n == 0){
  0  //如果没有检测到任何标记,将时间重映射设置为0 。
}else{
  m = marker.key(n);
  myComment = m.comment;
  t = time - m.time;
  try{
    actMarker = action.marker.key(myComment);
    if (action.marker.numKeys > actMarker.index){
      tMax = action.marker.key(actMarker.index + 1).time - actMarker.time;
    }else{
      tMax = action.outPoint - actMarker.time;
    }
    t = Math.min(t, tMax);
    actMarker.time + t; //检测到标记注释匹配,则更改时间重映射。
  }catch (err){
    0 //catch以抑制错误,如果标记不匹配,则将时间重映射设置为0 。
  } 
}

 

这个表达式能够控制预合层中数个图层的动画。使用方法为:

1、新建一个空白对象(或者一个空的形状层),将其命名为“action”,或者其他自己定义的名字,如果改了这个层的名字,就需要更改表达式第一行;

2、在第一帧打上标记点,其comment写入希望作为基础层的图层名称。(当有很多层的时候,究竟以那一层的时间作为预合层时间重映射的基准,在这里指定)(ps,因为是图层名称,可以使用汉字)

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

上图的例子中,作为承载图层标记的空白对象其名称为“星变”,需要将表达式第一行改为:

action = comp(name).layer("星变");

第一帧打上标记点并注释为“星星”,表示在“星星”和“多边形”两个形状层中,是以“星星”作为时间重映射的基准的。

3、各个图层上已经打上了数组关键帧,控制数个动作,一组关键帧一个动作,从开始到结束一般有两个关键帧。在需要控制的地方也就是动作开始的关键帧位置打上标记点,一般以动作的名称来命名,如“变三角”(可使用汉字)。

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

4、将所有图层,包含打上标记点的空白层,全部预合层。勾选预合层的时间重映射Enable Time Remapping,并给时间重映射添加表达式:

action = comp(name).layer("action");
 
n = 0;
if (marker.numKeys > 0){
  n = marker.nearestKey(time).index;
  if (marker.key(n).time > time){
    n--;
  }
}
 
if (n == 0){
  0
}else{
  m = marker.key(n);
  myComment = m.comment;
  t = time - m.time;
  try{
    actMarker = action.marker.key(myComment);
    if (action.marker.numKeys > actMarker.index){
      tMax = action.marker.key(actMarker.index + 1).time - actMarker.time;
    }else{
      tMax = action.outPoint - actMarker.time;
    }
    t = Math.min(t, tMax);
    actMarker.time + t;
  }catch (err){
    0
  }
}

修改第一行承载标记点的层的名称。

5、在预合层上打标记点,标记点注释为动作的名称,当注释名匹配时候,就会有相应的动作。可以非常灵活的控制,比如重复打标记点以重复动作,拖动标记点以变化动作的发生时间,切动作的顺序也能随意变化不再局限于形状层上的关键帧。

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

如上面例子中,给图层添加了“变三角”、“变六角”、“变圆”的动作,在预合层上,用标记点就可以随意控制这三个动作发生的时间、顺序等。

在motionscript.com上,作者解释了这个表达式的工作原理,感兴趣可以研究:

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

这个表达式里使用了camp(name),顺便小结一下(以下内容来自于Adobe官方帮助文档):

全局对象、属性和方法(表达式引用)

comp(name) 返回类型:合成。参数类型:name 是一个字符串。按照名称检索其他合成。

footage(name) 返回类型:素材。参数类型:name 是一个字符串。按照名称检索素材项目。

thisComp 返回类型:合成。表示包含表达式的合成。

thisLayer 返回类型:图层、光照或摄像机。表示包含表达式的图层。因为 thisLayer 是默认对象,所以其使用是可选的。例如,以 thisLayer.width 或 width 开头的表达式将生成相同的结果。

thisProperty 返回类型:属性。表示包含表达式的属性。例如,如果您对旋转属性编写表达式,则可使用以 thisProperty 开头的表达式来引用旋转属性。

time返回类型:数值。表示以秒为单位的合成时间,将以此计算表达式。

colorDepth 返回类型:数值。返回项目颜色深度值。例如,当每个通道的项目颜色深度为 16 位时,colorDepth 返回 16。

posterizeTime(framesPerSecond) 返回类型:数值。参数类型:framesPerSecond 是数值。framesPerSecond 值成为其余表达式运行的帧速率。此表达式允许您将属性的帧速率设置为低于合成的速率。例如,以下表达式每秒使用随机值更新一次属性值: posterizeTime(1); random()

value 返回类型:数值、数组或字符串。表示当前时间包含表达式的属性的值。

 

< 返回目录

AE表达式
6
AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey
上一篇
AE表达式|14、如何使用循环表达式?@loopIn @loopOut
下一篇

评论 (2)

登录后可发布~
立即登录
  • 1585888313528

    看完这个,马上去补一补trt和catch的意思。

    7 年前
  • 子鱼

    好难呀这个~~~

    7 年前

向安宇

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

近期评论

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

猜你喜欢

MG动画教程005|文字缩放和随机变化(苹果快闪广告教学)

MG动画教程005|文字缩放和随机变化(苹果快闪广告教学)

2018-03-12 14:46:23
1,627 0 0
AE表达式|10、怎样写条件判断表达式?@ if / else

AE表达式|10、怎样写条件判断表达式?@ if / else

2018-08-21 18:00:42
5,680 2 3
AE表达式|04、如何制作一个简单的时钟?@ index , time

AE表达式|04、如何制作一个简单的时钟?@ index , time

2018-07-10 16:04:03
3,405 1 4
AE表达式|随机单个文字跳跃效果

AE表达式|随机单个文字跳跃效果

2018-02-01 9:39:25
2,879 0 3
2 6

关于我:

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

推荐栏目:

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

特色专题:

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

向安宇

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