表达式示例的在线资源
Dan Ebberts 在其 MotionScript 网站上提供了学习如何使用表达式的示例表达式和教程。例如,Dan 提供了一个有关冲突检测的精彩页面。
Colin Braley 在其网站上提供了一个教程和示例项目,其中演示如何使用表达式以一种看似自然的方式让一个图层排斥其他图层。
AE Enhancers 论坛提供了有关表达式的多个示例和许多有用信息,以及脚本和动画预设。在 AE Enhancers 论坛上的这篇帖子中,Paul Tuersley 提供了一个演示如何使用表达式成群地为多个图层设置动画的教程和示例项目。
Rick Gerard 在其网站上提供了一个示例,其中演示沿底滚动方形对象以便边线与底平面保持接触。
Carl Larsen 在 Creative COW 网站上提供了一个视频教程,其中演示如何使用表达式以及进行父处理将一组轮的旋转与车辆的水平运动相关联。
Chris Zwar 在其网站上提供了一个有关将静止图像或视频自动排列到网格中(像视频墙一样)的示例项目。您可以使用连接到一系列表达式的滑块轻松调整位置和间距。项目中有三个合成,一个用于静止,一个用于视频,一个用于创建自动情节提要,其中,视频按用户定义的间隔进行采样并且对齐到网格中。
JJ Gifford 的网站提供了多个演示如何使用表达式的示例项目。
Maltaannon (Jerzy Drozda, Jr.) 在他的网站上提供了一个视频教程,其中演示了如何通过表达式使用“将音频转换为关键帧”命令的结果创建音量计。
Harry Frank 在其 graymachine 网站上提供了一个教程,演示如何使用表达式从外部文本文件读取数据。
您可以使用关联器关联图层之间的旋转值以便对钟针进行动画制作,当时针逐小时移动时,分针会旋转钟面的整个圆周。如果您必须为两个钟针图层设置每个关键帧,则创建此类动画将需要很长时间,但使用关联器,只需几分钟即可完成。
所有图层使用同一路径,且每个比上一个延迟 0.5 秒。
Dan Ebberts 在其 MotionScript 网站上提供了用于创建图像追踪的更多示例和技术。
此示例表达式将一个图层中凸出效果的 Bulge Center 参数与另一图层的位置同步。例如,您可以创建看来像在图层上方移动的放大镜的效果,当镜头(即覆盖层)移动时内容在放大镜下凸出。此表达式使用fromWorld 方法,该方法使表达式正确运行,而无论您是否移动放大镜图层或者底层图层。您可以旋转或缩放底层图层,表达式会保持不变。
您还可以将其他效果(例如波纹)与此表达式结合使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
startFade =
500
;
// Start fade 500 pixels from camera.
endFade =
1500
;
// End fade 1500 pixels from camera.
try
{
// Check whether there's a camera
C = thisComp.activeCamera.toWorld([
0
,
0
,
0
]);
}
catch
(err)
{
// No camera, so assume 50mm
w = thisComp.width * thisComp.pixelAspect;
z = (w/
2
)/Math.tan(degreesToRadians(
19.799
));
C = [
0
,
0
,-z];
}
P = toWorld(anchorPoint);
d = length(C,P);
linear(d,startFade,endFade,
100
,
0
)
|
Dan Ebberts 在其 MotionScript 网站上说明了此表达式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
n =
0
;
t =
0
;
if
(marker.numKeys >
0
){
n = marker.nearestKey(time).index;
if
(marker.key(n).time > time) n--;
}
if
(n >
0
) t = time - marker.key(n).time;
amp =
15
;
freq =
5
;
decay =
3.0
;
angle = freq *
2
* Math.PI * t;
scaleFact = (
100
+ amp * Math.sin(angle) / Math.exp(decay * t)) /
100
;
[value[
0
] * scaleFact, value[
1
] / scaleFact];
|
1
2
3
4
5
6
7
8
9
|
timeToStart =
2
;
if
(time > timeToStart)
{
wiggle(
3
,
25
);
}
else
{
value;
}
|
1
2
3
4
5
6
7
8
9
|
timeToStop =
4
;
if
(time > timeToStop)
{
value;
}
else
{
wiggle(
3
,
25
);
}
|
1
2
3
4
5
6
7
8
9
10
|
timeToStart =
2
;
timeToStop =
4
;
if
((time > timeToStart) && (time < timeToStop))
{
wiggle(
3
,
25
);
}
else
{
value;
}
|
Dan Ebberts 在其 Motionscript 网站上详细说明了此表达式示例。