表达式实例

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

相关文章

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2