讲故事的手艺人 讲故事的手艺人
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 读书
      • 随笔
    • 拍摄
      • 纪录片
      • 设计
      • 视频
      • 摄影
  • 策划向
    • 策划资料
    • 创意之道
    • 短视频研究
  • 技术向
    • AI
    • 前期拍摄
    • 后期制作
    • 原创教程
    • 影像实验
    • 影像设备
    • 穿越机
  • 艺术向
    • 研究学习
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 经验总结
  • 注册
  • 登录
首页 › 技术向 › 原创教程 › AE表达式|34、如何制作果冻效果(挤压与伸展)?

AE表达式|34、如何制作果冻效果(挤压与伸展)?

向安宇
2018-10-23 14:28:56原创教程阅读 10,056

AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人
我们一步步来。果冻效果,类似于弹簧效果,是需要scale缩放的衰减。

我们需要一个正弦函数的指数衰减,这里用到两个表达式:Math.sin() 和 Math.exp() 。

Math.sin() 就是正弦函数,不用多解释, Math.exp(x) 是e的x次幂(e是常数2.71828)。

用Math.exp()作为倒数,就能得到一个不断衰减的正弦函数曲线:

AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

value + Math.sin(time*20)/Math.exp(time)

Math.sin()是在-1和1之间的值,比较小,需要乘以一个数,让缩放效果更加明显:

spd = 20;
maxDev = 20;

value + maxDev*Math.sin(time*spd)/Math.exp(time)

AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

这个效果还缺一个挤压,需要把x轴和y轴的缩放错开来:

spd = 20;
maxDev = 20;

offset = maxDev*Math.sin(time*spd)/Math.exp(time); 
scaleX = scale[0] + offset;
scaleY = scale[1] - offset;

[scaleX,scaleY]

AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

这个表达式还可以写成:

spd = 20;
maxDev = 20;

scaleX = scale[0] +maxDev*Math.sin(time*spd)/Math.exp(time);
scaleY = scale[1]*scale[0] / scaleX;

[scaleX,scaleY]

得到的都是这种交叉的指数衰减正弦函数曲线:
AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

这个函数还可以改进,引进一个变量decay,让衰减得更陡或更缓。
decay等于0.5时候:
AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人
decay等于2时候:
AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

让动画效果的起点是图层的入点:

spd = 30;
maxDev = 20;
decay = 1;

t = time - inPoint;
offset = maxDev*Math.sin(t*spd)/Math.exp(t*decay); 
scaleX = scale[0] + offset;
scaleY = scale[1] - offset;

[scaleX,scaleY]

进一步改进,用标记点来控制:

spd = 10; //挤压拉伸的速度
maxDev = 20; //挤压拉伸的大小
decay = 1; //衰减的速度
	
if(marker.numKeys > 0 && marker.nearestKey(time).time < time){
	t = time - marker.nearestKey(time).time;
	offset = maxDev*Math.sin(t*spd)/Math.exp(t*decay); 
	scaleX = scale[0] + offset;
	scaleY = scale[1] - offset;
	transform.scale = [scaleX,scaleY];
}else{
	value;
}

结合其他表达式来看一下效果:

1、给位置Position打上关键帧,第一帧[960,200],第六帧[960,540],然后给其添加表达式:

e = .7;
g = 3000;
nMax = 500;
n = 0;
if (numKeys > 0){
n = nearestKey(time).index;
if (key(n).time > time) n--;
}
if (n > 0){
t = time - key(n).time;
v = -velocityAtTime(key(n).time - .001)*e;
vl = length(v);
if (value instanceof Array){
vu = (vl > 0) ? normalize(v) : [0,0,0];
}else{
vu = (v < 0) ? -1 : 1;
}
tCur = 0;
segDur = 2*vl/g;
tNext = segDur;
nb = 1; // number of bounces
while (tNext < t && nb <= nMax){
vl *= e;
segDur *= e;
tCur = tNext;
tNext += segDur;
nb++
}
if(nb <= nMax){
delta = t - tCur;
value + vu*delta*(vl - g*delta/2);
}else{
value
}
}else
value

2、给scale添加表达式:

spd = 10;
maxDev = 20;
decay = 2;
	
if(marker.numKeys > 0 && marker.nearestKey(time).time < time){
	t = time - marker.nearestKey(time).time;
	offset = maxDev*Math.sin(t*spd)/Math.exp(t*decay); 
	scaleX = scale[0] + offset;
	scaleY = scale[1] - offset;
	transform.scale = [scaleX,scaleY];
}else{
	value;
}

3、给图层打上标记点,并将标记点移动到第六帧

4、给scale第一帧打上关键帧[100,200],给第六帧打上关键帧[100,100]

得到如下效果:
AE表达式|34、如何制作果冻效果(挤压与伸展)?-讲故事的手艺人

< 返回目录

AE表达式
赞赏 赞(10) 收藏(0)
AE表达式|33、如何调用系统时间?
上一篇
AE表达式|35、怎样制作一个时间码?
下一篇

请登录以参与评论

现在登录
所有评论(1)
  • charon

    谢谢作者的文章~ 学到了,大佬的个人站做的真好!这个夜间模式很耐看,默认字体也是我喜欢的opposans哈哈哈哈

    3年前 福建省 回复
标签
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,878 0 3
3、ISO
2019-11-06 21:54:32
1,754 0 0
2、光圈和景深
2019-11-03 17:10:31
1,756 0 2
1 10
  • 10
  • 1
关于我:

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

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