0

0

脚本编写:After Effects 项目和合成

霞舞

霞舞

发布时间:2024-12-04 22:42:01

|

1161人浏览过

|

来源于dev.to

转载

脚本编写:after effects 项目和合成

contents
introduction
application
project
folders and compositions
example
quick tips
conclusion

介绍

在本文中,我将介绍使用脚本导航 after effects 项目和合成的一些基础知识。我将引用脚本指南中一些最有用的部分,并展示一些有关其工作原理的实际示例。

让我们开始吧。


应用

app

应用程序引用应用程序 after effects 本身。要引用 after effects 中的任何内容,您需要首先告诉脚本查看应用程序。

虽然您可以引用安装 after effects 的设置、文件和计算机系统(我将在另一篇文章中介绍这些选项),但它很可能是您在应用程序后需要引用的主要对象是一个 after effects 项目。

app.newproject()

newproject() 创建一个新的空项目。如果您想在此之前保存当前的作品,after effects 将会提示您。

app.open(file)

open() 同时允许您打开现有项目。将括号留空,它将打开打开项目对话框,就像导航到 after effects 菜单中的文件 > 打开项目... 一样。或者,您可以引用括号内的文件来打开特定项目。

project = new file ("...filepath/ae project.aep");
app.open(project);

您将需要创建一个新的 file() 来从脚本中查找该文件。我更喜欢将其存储在变量中以保持整洁。再次,在文件打开之前,系统会提示您保存当前项目。


项目

app.project

项目引用在 after effects 中打开的当前项目。从这里,我们可以访问项目中的所有项目、创建新项目以及访问渲染队列。

app.project.save([file])

save() 保存项目。在不添加文件选项的情况下,或者如果之前没有保存过项目,此方法将弹出保存对话框,供用户保存项目。请记住 - 您需要在项目中创建一个新文件,然后才能在此方法中引用它。

app.project.importfile(importoptions)

importfile() 的工作方式有点像这样:

new importoptions().file = new file("...filepath/my file.jpg");
app.project.importfile(file)

我将在另一篇文章中更详细地介绍导入文件。但作为快速概述,您可以使用此方法将文件导入到项目中。您不仅需要创建一个新文件,还必须创建新的 importoptions 来指定要导入的内容以及导入方式。这使我们能够执行诸如导入图像序列、导入文件以及强制按字母顺序排列等操作。

app.project.importfilewithdialog()

importfilewithdialog() 同时打开导入素材对话框,供最终用户选择他们的文件。

app.project.renderqueue

renderqueue 授予我们访问渲染队列的权限,并允许我们设置渲染设置甚至渲染合成。我将在另一篇文章中详细讨论这一点。

app.project.activeitem

activeitem 指当前正在查看的项目,通常是合成、素材图层、占位符或实体。它一次仅引用一项,如果有多个项处于活动状态,或者没有项处于活动状态,则返回 null。对于添加图层或以某种方式影响用户当前正在处理的内容的脚本,可以方便地引用活动合成。请注意,这与选择的项目不同。

app.project.selection

选择是指当前在项目面板中选择的所有项目。这是您在引用所选项目而不是活动项目时所需要的。

快写红薯通AI
快写红薯通AI

快写红薯通AI,专为小红书而生的AI写作工具

下载
app.project.item(index)

item() 特指项目中的单个项目 - 无论是组合、实体还是您拥有的其他项目。像这样:

app.project.item(1)
app.project.item("comp 01")

索引代表项目窗口内项目的索引号,也可以指图层的名称。

app.project.items
同时,

items 指的是项目内的集合 项目。它用于创建新的作品和文件夹。


文件夹和作品

这让我们很好地了解了文件夹和合成。

app.project.items.addfolder(name);
app.project.items.addcomp(name, width, height, pixelaspect, duration, framerate);

addfolder() 为您的项目创建一个新文件夹。确保名称参数是一个字符串(以“”或“”表示)。

addcomp() 然而还有更多的参数需要考虑。这是因为创建新作品需要大量信息:

argument description
name the name of the composition. needs to be a string (in " " or ' ')
width the width of your composition
height the height of your composition
pixelaspect the pixel aspect ratio. you are almost certainly looking to set this to square pixels, which you can do by setting the ratio to 1. any other pixel aspect ratio can be set by entering the correct ratio (for example, anamorphic 2:1 can be set by entering 2, and d1/dv pal widescreen can be set by entering 1.46).
duration the duration of the composition in seconds
framerate the frame rate of the composition

您可以通过引用文件夹来在文件夹内创建新的组合,如下所示:

folder01 = app.project.items.addfolder("comps");
comp01 = folder01.items.addcomp("comp 01", 1920, 1080, 1, 5, 25);

并且可以通过设置项目的parentfolder属性在事后将项目移动到文件夹中:

folder01 = app.project.items.addfolder("comps");
comp01 = app.project.items.addcomp("comp 01", 1920, 1080, 1, 5, 25);

comp01.parentfolder = folder01;

创建合成后,您可以使用 openinviewer() 将其设置为活动项目

comp1.openinviewer();

例子

使用我所介绍的一些内容,这里有一个简短的脚本,允许您打开一个新项目,创建 2 个文件夹和 2 个合成,并将一个合成添加到另一个合成中作为预合成。

app.newproject();

folder1 = app.project.items.addfolder("_final");
folder2 = app.project.items.addfolder("precomps");
comp1 = folder1.items.addcomp("comp 01", 1920, 1080, 1, 10, 25);
comp2 = folder2.items.addcomp("comp 02", 1920, 1080, 1, 10, 25);

comp1.openinviewer();
app.project.activeitem.layers.add(comp2);

快速提示

运行此脚本后,您会发现,如果您在 after effects 中按撤消键,它一次只会撤消每个操作。大多数时候这并不理想,因为脚本经常经历许多操作,这对于最终用户来说非常耗时且烦人。

app.beginUndoGroup(undoString)
app.endUndoGroup(undoString)

这就是 beginundogroup() 和 endundogroup() 发挥作用的地方。它们允许您将脚本的操作组合在一起,以便可以一次性撤消它们。 undostring 是您在 after effects 中的撤消选项旁边看到的内容。如果您的脚本中只有一个 beginundogroup() 实例(因为它会自动关闭),则不一定需要添加 endundogroup(),但最好将其添加到脚本末尾,以保持您的脚本整洁。


结论

我希望这有助于了解如何在制作 after effects 脚本时引用 after effects 项目和合成。在下一篇文章中,我将详细介绍如何创建弹出窗口,以便用户与您的脚本进行交互。

有任何疑问吗?这里有问题或者不工作吗?请在评论中告诉我。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

358

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

233

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

437

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1492

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

622

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

552

2024.03.22

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号