讲故事的手艺人 讲故事的手艺人
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 读书
      • 随笔
    • 拍摄
      • 纪录片
      • 设计
      • 视频
      • 摄影
  • 策划向
    • 策划资料
    • 创意之道
    • 短视频研究
  • 技术向
    • AI
    • 前期拍摄
    • 后期制作
    • 原创教程
    • 影像实验
    • 影像设备
    • 穿越机
  • 艺术向
    • 研究学习
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 经验总结
  • 注册
  • 登录
首页 › 技术向 › 原创教程 › AE表达式|13、如何利用标记点进行精确控制?(motionscript高阶)@markerKey

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

向安宇
2018-08-25 17:16:49原创教程阅读 3,620

在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) 收藏(0)
AE表达式|12、如何利用标记点进行精确控制?(实用进阶)@markerKey
上一篇
AE表达式|14、如何使用循环表达式?@loopIn @loopOut
下一篇

请登录以参与评论

现在登录
所有评论(2)
  • 1585888313528

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

    5年前 福建省 回复
  • 子鱼

    好难呀这个~~~

    6年前 江苏省 回复
标签
720全景 ACES AE AE案例 AE表达式 Anyu翻译 CSC电影学院 fusion Hackintosh MG动画 ps教程 vlog wordpress 创意方法 剪辑 字幕 帧影帧画 抖音 摄影 文案 混剪 混音 灯光 看电影 磨皮 穿越机 纪录片 编剧 美术 美食 論語 调度 调色 达芬奇 重讀文學史 青玉记
室内360全景图的简单修图
2020-10-13 21:51:45
2,691 0 0
达芬奇:高频锐化
2020-03-21 22:41:26
3,879 0 3
3、ISO
2019-11-06 21:54:32
1,754 0 0
2、光圈和景深
2019-11-03 17:10:31
1,758 0 2
2 6
  • 6
  • 2
关于我:

想要读万卷书,行万里路,看万部电影。当过人民教师,做过策划师,入行影视做剪辑、导演。艺术是目的,技术是支撑,不断钻研,积聚梦想,同时分享干货。

推荐栏目:
视频论文 原创教程 后期制作 非虚构 照片 视频
特色专题:
专题汇总 宜看一侃 帧影帧画 美食摄影 重读文学史 青玉记
Copyright © 2016-2025 讲故事的手艺人. 鄂ICP备16005400号-1 鄂公网安备42050602000017号
  • 创作向
    • 写作
    • 拍摄
  • 策划向
    • 策划资料
    • 创意之道
    • 短视频研究
  • 技术向
    • AI
    • 前期拍摄
    • 后期制作
    • 原创教程
    • 影像实验
    • 影像设备
    • 穿越机
  • 艺术向
    • 研究学习
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 经验总结
# 剪辑 # # 转场 # # 纪录片 #
向安宇
痴迷文字,醉心影像
420
文章
5
评论
325
喜欢