示例3:蝴蝶飞舞

应用关键帧控制物体的运动,在很多简单的情况下还是很高效的,但是针对一些包含位置,旋转,缩放组合变换的复杂运动时,可以使用表达式,如循环运动。配合音乐节奏等

这次以控制蝴蝶飞舞作为示例,主要应用wiggle函数

导入蝴蝶图片以及背景图片

新建合成,把蝴蝶图片拖入时间线,用钢笔工具勾画出蝴蝶的翅膀以及身体,如下图所示

激活图片的3D属性

把蝴蝶图片复制五次,分别命名为 左上 左下 右上 右下 身体 每一个图片只保留一个蒙版,按照命名保存蒙版,蒙版模式为 相加

 左上 左下 右上 右下 的父级设为身体,使其成为一个整体

选中左上 按R键 展开旋转属性,单击y轴旋转 选择动画 添加表达式

wigfreq=2;

wigangle=75;

wignoise=2;

Math.abs(rotation.wiggle(wigfreq,wigangle,wignoise));

点击播放就可以看到效果,为右上添加表达式,选中图层按R,单击y轴旋转 选择动画 添加表达式,将属性链接至左上 y轴旋转属性

这里可以鼠标拖拽然后修改反向,也可以用表达式

-thisComp.layer("左上").transform.yRotation

左下,将链接左上的旋转属性

右下,将链接左下的旋转属性的反向  现在可以播放观看一下效果

为了改善效果,修改左上的表达式 ,这里的数值可以进行微调

Math.abs(rotation.wiggle(wigfreq,wigangle,wignoise))-50;

为了使左侧上下翅膀扇动有些区别,改变表达式 thisComp.layer("左上").transform.yRotation*1.2+10

创建一个28mm的摄像机,调整一下角度,使蝴蝶的角度看起来更自然

把背景图片拖到底层

现在开始绘制

1.可以激活位置,调整坐标,通过改变不同的视图观察位置

2.用钢笔工具绘制路径  复制蒙版形状 粘贴至 位置 再根据需求进行调整

点击播放观看状态,根据背景,调整蝴蝶的方向,使其飞行时看起来更加合理

最后调整蝴蝶的色相,使其融入背景 添加效果 颜色平衡(HLS)调整色相

这组动效就结束了

最后附上一般常用的表达式

附录:

1.wiggle 抖动
wiggle(freq频率, amp振幅, octaves = 1细节, amp_mult = .5乘赋值, t = time)
用法wiggle(5,200)

2.random 随机

random(数值x,数值y)是在数值x到数值y之间进行随机值的抽取,随机抽取的最小值是x,最大值是y
用法:random(1,10)

3.loopOut 循环
loopOut(type="循环类型",numkeyframes=0从最后一个关键帧往前走开始循环,0代表无限)
循环类型四种:pingpong 如乒乓球一样来回运动
cycle 周而复始的来回运动
offset 叠加之前关键帧数值循环
continue延续属性变化的最后速度
用法:loopOut(type = "cycle", numKeyframes = 0)

4.time 时间 这个不解释了

5.timeRemap 抽帧
timeRemap*数值,这里数值以帧为单位
用法:在素材上鼠标右键时间重映射上输入timeRemap*10

6.index 图层序号

说不清,还是上图吧
这个红框内就是图层序号
index可以代表当前图层的数值
常见的就是把index丢到位置上做立体字,如

[transform.position[0],transform.position[1],index],复制很多层就是立体字了
丢到缩放上,如
[transform.scale[0]+index,transform.scale[1]+index],复制很多层文字就慢慢变大了
其他参数可以自己尝试

7.在文字上的源文本上打下面的表达式
倒计时表达式:
a=linear(time, 4, 6, 1000, 0);
Math.floor(a)

公式
a=linear(time, 开始变化的时间, 结束变化的时间, 开始变化时的数字, 结束变化的数字);
//将a复制linear变化的结果Math.floor(a) // 向下取整(a)

8.弹性表达式
其实不想发,分享脚本里motion脚本自带有弹性功能
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time){n--;}}
if (n == 0){t = 0;}else{
t = time - key(n).time;}
if (n > 0){
v = velocityAtTime(key(n).time - thisComp.frameDuration/10);
amp = .03;
freq = 2.5;
decay = 4.0;
value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);
}else{value;}
这里要更改的就三个后面的数值
amp=振幅
freq=频率
decay=衰减或者叫阻力

9.线性表达式
linear(t, value1, value2) {t 是一个数, value1 和 value2 是一个数或数组}当t的范围从0到1时,返回一个从value1到value2的线性插值。当 t <= 0时返回value1,当 t >= 1时返回 value2

linear(t, tMin, tMax, value1, value2) {t, tMin和 tMax are 数, value1和value2 是数或数组} 当 t <= tmin时返回value1;当t >= tMax时,返回value2 ;当tMin < t < tMax 时, 返回 value1和value2 的线性联合

10.数字递增表达式
StartNumber=1;
EndNumber=1000;
StartTime=1;
EndTime=3;
t=linear(time,StartTime,EndTime,StartNumber,EndNumber);
Math.floor(t)
用法:输入到文字图层的源文本

10.反弹表达式
k=100; // 反弹最终结果
a=5; // 反弹阻力
b=50; //反弹变化时间
x=k*(1-Math.exp(-a*time)*Math.cos(b*time));
[x,x]

ae教程 (四)运动控制 (三)相关推荐

  1. Timo学习笔记 :Python基础教程(第三版)第四章 当索引行不通时

    第四章 当索引行不通时 Timo学习笔记 :Python基础教程(第三版)第三章 使用字符串 这是word编辑的最后一章笔记,第五章开始将直接用这个模板记录. 本章笔记很少,也很简单.很多方法可以到要 ...

  2. AE教程:学会这个,你做的Logo就可以单独出道了

    一.确定所需要做的动效 1.制作logo背景形状动效 2.制作U的动效 3.制作I的动效 4.制作消失动效 二.制作logo背景形状动效1."合成 - 新建合成" 新建一个1000 ...

  3. DOS批处理高级教程:第三章 FOR命令中的变量(转)

    DOS批处理高级教程:第一章 批处理基础 DOS批处理高级教程:第二章 DOS循环for命令详解 DOS批处理高级教程:第三章 for命令中的变量 DOS批处理高级教程:第四章 批处理中的变量 DOS ...

  4. 开发教程(四) MIP组件平台使用说明

    组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...

  5. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  6. MVC5+EF6 入门完整教程四

    MVC5+EF6 入门完整教程四 原文:MVC5+EF6 入门完整教程四 上篇文章主要讲了如何配置EF, 我们回顾下主要过程: 创建Data Model à 创建Database Context à创 ...

  7. 区块链教程(四):搭建私链、web3.js基础

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...

  8. Directx11教程四十六之FBX SDK

    在之前的DX11入门系列文章中,有篇有关 Directx11教程四十之加载OBJ模型 读取obj模型数据的博客.不过在obj读取的那篇博客我有些坑并没有说,就是我写的那个obj解析器只能解析特定的ob ...

  9. 大学英语综合教程四 Unit 3 课文内容英译中 中英翻译

    大学英语综合教程四 Unit 3 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  10. 昆仑通态人机界面与单片机通信实战教程四:单片机程序的设计

    大家好,我是『芯知识学堂』的SingleYork,前面给大家介绍了"昆仑通态人机界面与单片机通信实战教程三:脚本驱动与HDMI工程的关联",今天笔者就要来给大家介绍这个教程的最后一 ...

最新文章

  1. 绕开数学,讲讲信息论
  2. Java线程详解(15)-阻塞队列和阻塞栈
  3. 零起点学算法82——数组中查找数
  4. 语法分析生成器 - LEX
  5. 我的 linux历程
  6. java 同步和异步_知道什么叫同步和异步吗?
  7. 【华为云技术分享】LwM2M协议的学习与分享
  8. TBSchedule原理与实践
  9. 栈和队列的共同处和不同处
  10. fbreader android源码分析,开源阅读器FBReader Android版本的编译
  11. R语言古风诗人转职c++
  12. 改进平滑滚动,修改音量调节级数实现音量微调【编译自XDA 适用于大部分设备】
  13. 2_linux-常用命令-实例
  14. Python培训价格多少
  15. 【软件工程习题(含参考答案)】软件系统分析-五道题
  16. 靶机5 DC-4(过程超详细)
  17. c语言设计学生结构体,c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成...
  18. TCP/IP四层模型生米煮成熟饭,生态的重要性
  19. 关于在电脑室腐败所作出的检讨
  20. 使用YOLOv5实现人脸口罩佩戴检测(详细)

热门文章

  1. Altium Designer 18安装方法
  2. Premiere cc 2019安装教程及安装包
  3. thinkpad解决Win8.1电源管理的方法
  4. 【python】小游戏程序——弹跳小球
  5. 计算机网络(二)—— 物理层(1、2、3):物理层的基本概念、物理层的下面的传输媒体、传输方式
  6. 用计算机解一元二次,请简述如何用科学计算器解一元二次方程
  7. 磨煤机监测参数及实际运行数据
  8. 什么是超级浏览器?目前超级浏览器有哪些分类?
  9. java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
  10. docker安装之升级win10专业版