表达式实例

2024-09-07 15:48
文章标签 实例 表达式

本文主要是介绍表达式实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

表达式示例的在线资源

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 网站上提供了一个教程,演示如何使用表达式从外部文本文件读取数据。

表达式示例:使图层旋转一圈

您可以创建表达式,而不使用其他图层中的属性。例如,您可以使图层完美地旋转一圈。

选择图层,按 P 以在“时间轴”面板中显示其位置属性,并按住 Alt 键并单击 (Windows) 或按住 Option 键并单击 (Mac OS) 属性名称左侧的秒表。
在表达式字段中输入以下内容:
1
   [(thisComp.width/ 2 ), (thisComp.height/ 2 )] + [Math.sin(time)* 50 , -Math.cos(time)* 50 ]

表达式示例:旋转时钟的钟针

您可以使用关联器关联图层之间的旋转值以便对钟针进行动画制作,当时针逐小时移动时,分针会旋转钟面的整个圆周。如果您必须为两个钟针图层设置每个关键帧,则创建此类动画将需要很长时间,但使用关联器,只需几分钟即可完成。

导入或创建两个长而窄的纯色图层:时针和分针。(请参阅 纯色图层和纯色素材项目。)
在图层结尾设置锚点。(请参阅 图层锚点。)
移动图层以便锚点位于合成的中心。(请参阅 在空间中移动图层。)
设置时针的旋转关键帧。(请参阅 设置或添加关键帧。)
选择分针的旋转属性并选择“动画”>“添加表达式”。
将关联器拖动到时针的旋转属性。将显示以下表达式:
1
   thisComp.layer( "hour hand" ).rotation
要使分针以 12 倍于时针的速度旋转,请在表达式的结尾添加  *12,如下所示:
1
   thisComp.layer( "hour hand" ).rotation* 12

表达式示例:将一个图层放置在其他两个图层之间

此示例表达式将一个图层放置在其他两个图层之间并使其保持在其间的平衡距离处。

从三个图层开始。(请参阅创建图层。)

为“时间轴”面板中前两个图层的位置设置动画。(请参阅运动路径。)

选择第三个图层,按 P 以显示位置属性,并且按住 Alt 键并单击 (Windows) 或按住 Option 键并单击 (Mac OS) 属性名称左侧的秒表   按钮。
在表达式字段中输入以下内容:
1
   (thisComp.layer( 1 ).position + thisComp.layer( 2 ).position)/ 2

表达式示例:创建一系列图像

此示例指示图层位于与“时间轴”面板中下一个更高图层相同的位置,但延迟了指定时间量(在此情况下为 0.5 秒)。您可以为其他几何属性设置类似表达式。

从缩放到大约合成大小的 30% 的两个纯色图层开始。(请参阅 纯色图层和纯色素材项目。)
为第一个图层的位置设置动画。(请参阅 运动路径。)
选择第二个图层,按 P 以显示位置属性,并且按住 Alt 键并单击 (Windows) 或按住 Option 键并单击 (Mac OS) 属性名称左侧的秒表   按钮。
在表达式字段中输入以下内容:
1
   thisComp.layer(thisLayer, - 1 ).position.valueAtTime(time - . 5 )
通过选择最后一个图层并按 Ctrl+D (Windows) 或 Command+D (Mac OS) 5 次,将最后一个图层复制 5 次。

所有图层使用同一路径,且每个比上一个延迟 0.5 秒。

Dan Ebberts 在其 MotionScript 网站上提供了用于创建图像追踪的更多示例和技术。

表达式示例:在两个图层之间创建凸出

此示例表达式将一个图层中凸出效果的 Bulge Center 参数与另一图层的位置同步。例如,您可以创建看来像在图层上方移动的放大镜的效果,当镜头(即覆盖层)移动时内容在放大镜下凸出。此表达式使用fromWorld 方法,该方法使表达式正确运行,而无论您是否移动放大镜图层或者底层图层。您可以旋转或缩放底层图层,表达式会保持不变。

您还可以将其他效果(例如波纹)与此表达式结合使用。

从两个图层开始。使一个图层成为放大镜或中间有孔的类似对象并将其命名为放大镜。(请参阅 创建图层。)
为放大镜图层的位置设置动画。(请参阅 运动路径。)
将凸出效果应用于其他图层。(请参阅 应用效果或动画预设。)
在“时间轴”面板中选择凸出效果的凸出中心属性,并选择“动画”>“添加表达式”,或者按住 Alt 键并单击 (Windows) 或按住 Option 键并单击 (Mac OS) 属性的秒表   按钮。
选择默认表达式文本并键入以下内容:
1
   fromWorld(thisComp.layer( "Magnifier" ).position)

表达式示例:基于与摄像机的距离淡化 3D 图层的不透明度

将以下表达式应用于 3D 图层的不透明度属性:
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 )

淡化从距摄像机 500 像素处开始,在距摄像机 1500 像素处完成。linear 插值方法用于将距离值映射到不透明度值。

表达式示例:背对摄像机时使 3D 图层不可见

将以下表达式应用于 3D 图层的不透明度属性:
1
   if (toCompVec([ 0 , 0 , 1 ])[ 2 ] > 0 ) value else 0

Dan Ebberts 在其 MotionScript 网站上说明了此表达式。

表达式示例:背对摄像机时将图层水平翻转

将以下表达式应用于 3D 图层的缩放属性:
1
   if (toCompVec([ 0 , 0 , 1 ])[ 2 ] > 0 ) value else [-value[ 0 ], value[ 1 ], value[ 2 ]]

表达式示例:在每个图层标记对缩放进行动画制作

将以下表达式应用于缩放属性以在每个标记中摆动图层:
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];

表达式示例:在特定时间开始或停止摆动

您可以使用任何表达式代替此处所用的 wiggle 表达式,以便在特定时间开始和结束任何表达式的影响。

将以下表达式应用于属性以使其在 2 秒时开始摆动:

1
2
3
4
5
6
7
8
9
timeToStart = 2 ;
if (time > timeToStart)
{
   wiggle( 3 , 25 );
}
else
{
   value;
}

将以下表达式应用于属性以使其在 4 秒时停止摆动:

1
2
3
4
5
6
7
8
9
timeToStop = 4 ;
if (time > timeToStop)
{
   value;
}
else
{
   wiggle( 3 , 25 );
}

将以下表达式应用于属性以使其在 2 秒时开始摆动并在 4 秒时停止摆动:

1
2
3
4
5
6
7
8
9
10
timeToStart = 2 ;
timeToStop = 4 ;
if ((time > timeToStart) && (time < timeToStop))
{
   wiggle( 3 , 25 );
}
else
{
   value;
}

表达式示例:将摄像机焦平面与另一图层匹配

将以下表达式应用于摄像机图层的焦距属性,以便其焦距与到名为“target”的图层的锚点的距离相匹配:
1
2
3
4
   target = thisComp.layer( "target" );
   V1 = target.toWorld(target.anchorPoint) - toWorld([ 0 , 0 , 0 ]);
   V2 = toWorldVec([ 0 , 0 , 1 ]);
   dot(V1,V2);

Dan Ebberts 在其 Motionscript 网站上详细说明了此表达式示例。

这篇关于表达式实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145484

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体