根据结构类型的属性分类

在 After Effects 的脚本开发中,图层的属性可被区分为三种类型:PROPERTY、INDEXED_GROUP 和 NAMED_GROUP 。通过使用app.project.item().layer().propertySpec.propertyType 可以对属性的类型进行判断。在 AEGP 插件的开发中这些类型对应为 AEGP_StreamGroupingType_LEAF 、AEGP_StreamGroupingType_INDEXED_GROUP 和 AEGP_StreamGroupingType_NAMED_GROUP,通过调用 AEGP_DynamicStreamSuite 的AEGP_GetStreamGroupingType 方法进行获取。

PROPERTY(LEAF)类型的属性为属性组中最底层的属性,即具有对应的值可供用户操作调整的属性;INDEXED_GROUP 类型的属性组中子级的名称可编辑,换言之 INDEXED_GROUP 类型的属性组中的子级是不固定的,可进行增删,如效果和蒙版都是这种类型;NAMED_GROUP 类型的属性组具有固定的子级属性,且子级属性的名称是不可更改的。

在脚本中直接输出 propertyType 时会输出一个数字,这是 ExtendScript 中定义的 PropertyType 枚举。

例如,某个图层的“变换”属性组的 propertyType 输出值如图所示,表明“变换”是一个 NAMED_GROUP 属性组。

某个文字图层的“文本”属性组下的“动画制作工具”属性组是一个 INDEXED_GROUP 属性组。

属性的可见性

在 AEGP 插件的开发中可以通过调用 AEGP_DynamicStreamSuite 的 AEGP_GetDynamicStreamFlags 方法获取属性的标志,其中具有几个值得注意的内容。AEGP_DynStreamFlag_ELIDED 标志着一个属性组始终不会将自身显示在时间轴面板中,但它的子级属性会直接显示在该属性组的父级属性组中。一个常用的例子是文本图层的“动画制作工具”:当给文本图层添加一个动画制作工具后,“文本”属性组中“动画制作工具 1”会与“源文本”、“路径选项”和“更多选项”并列显示,但实际上“动画制作工具 1”是存在于“动画制作工具”属性组中的,但由于“动画制作工具”具有 ELIDED 标志,导致“动画制作工具”不会显示在时间轴中。编写脚本时访问此类属性组中的属性需要注意。另外,在脚本中使用 app.project.item().layer().porpertySpec.elided 也能获取到某属性组是否具有 ELIDED 标志。

特定类型图层所具有的属性组是固定的,未显示在时间轴中的属性不代表它不存在,通常未被修改的属性及其属性组会被隐藏。在脚本中可以通过app.project.item().layer().porpertySpec.isModified判断某属性在创建后是否被修改。

图层属性的结构

在脚本中图层可以当作属性组进行处理,如下图所示:

在 AEGP 插件开发中通常使用 AEGP_DynamicStreamSuite 的 AEGP_GetNewStreamRefForLayer方法检索与图层对应的 AEGP_StreamRefH ,用于启动图层属性流的递归。亦是将图层作为属性组进行处理。

因图层是 NAMED_GROUP 类型的属性组,故其子级属性组是固定的。本文整理了AVLayer、TextLayer、ShapeLayer、CameraLayer 和 LightLayer 五类图层的属性组结构,其中包括属性的中文名称与其 MatchName 的对照。因树形图尺寸过大,以下提供 FreeMind 文件的下载链接:https://wwe.lanzoui.com/ilSn0v23p3e

若您对遍历某属性组中的属性有兴趣,也可以参考以下脚本代码:

var str = '';
var selProp = app.project.activeItem.selectedLayers[0].property("Transform");//将该变量修改为您需要遍历的属性组
var numProps = selProp.numProperties;
for(var i = 0; i < numProps; i ++){
str += selProp.property(i + 1).name + ' - ' + selProp.property(i + 1).matchName + '\n';//输出名称和 MatchName
}
alert(str);

脚本中访问属性的简介写法

在 ExtendScript 脚本中访问属性具有简洁写法,例如 .property("Transform") 也可以使用 . transform。以下提供部分对照以供查找和参考:

属性 简洁写法
ADBE Transform Group: 'transform',
ADBE Anchor Point: .pointOfInterest' 或 '.anchorPoint',
ADBE Position: '.position',
ADBE Scale: '.scale',
ADBE Orientation: '.orientation',
ADBE Rotate X: '.xRotation',
ADBE Rotate Y: '.yRotation',
ADBE Rotate Z: .zRotation' 或 '.rotation',
ADBE Opacity: '.opacity',
ADBE Material Options Group: 'materialOption',
ADBE Casts Shadows: '.castsShadows',
ADBE Light Transmission: '.lightTransmission',
ADBE Accepts Shadows: '.acceptsShadows',
ADBE Accepts Lights: '.acceptsLights',
ADBE Ambient Coefficient: '.ambient',
ADBE Diffuse Coefficient: '.diffuse',
ADBE Specular Coefficient: '.specular',
ADBE Shininess Coefficient: '.shininess',
ADBE Metal Coefficient: '.metal',
ADBE Light Options Group: 'lightOption',
ADBE Light Intensity: '.intensity',
ADBE Light Color: '.color',
ADBE Light Cone Angle: '.coneAngle',
ADBE Light Cone Feather 2: '.coneFeather',
ADBE Light Shadow Darkness: '.shadowDarkness',
ADBE Light Shadow Diffusion: '.shadowDiffusion',
ADBE Camera Options Group: 'cameraOption',
ADBE Camera Zoom: '.zoom',
ADBE Camera Depth of Field: '.depthOfField',
ADBE Camera Focus Distance: '.focusDistance',
ADBE Camera Aperture: '.aperture',
ADBE Camera Blur Level: '.blurLevel',
ADBE Text Properties: 'text',
ADBE Text Document: '.sourceText',
ADBE Text Path Options: '.pathOption',
ADBE Text Path: '.path',
ADBE Text Reverse Path: '.reversePath',
ADBE Text Perpendicular To Path: '.perpendicularToPath',
ADBE Text Force Align Path: '.forceAlignment',
ADBE Text First Margin: '.firstMargin',
ADBE Text Last Margin: '.lastMargin',
ADBE Text More Options: '.moreOption',
ADBE Text Anchor Point Option: '.anchorPointGrouping',
ADBE Text Anchor Point Align: '.groupingAlignment',
ADBE Text Render Order: '.fillANdStroke',
ADBE Text Character Blend Mode: '.interCharacterBlending',
ADBE Text Animators: '.animator',
ADBE Text Selectors: '.selector',
ADBE Text Percent Start: '.start',
ADBE Text Percent End: '.end',
ADBE Text Percent Offset: '.offset',
ADBE Text Range Advanced: '.advanced',
ADBE Text Range Units: '.units',
ADBE Text Range Type2: '.basedOn',
ADBE Text Selector Mode: '.mode',
ADBE Text Range Shape: '.shape',
ADBE Text Selector Smoothness: '.smoothness',
ADBE Text Levels Max Ease: '.easeHigh',
ADBE Text Levels Min Ease: '.easeLow',
ADBE Text Randomize Order: '.randomizeOrder',
ADBE Text Random Seed: '.randomSeed',
ADBE Text Selector Mode: '.mode',
ADBE Text Wiggly Max Amount: '.maxAmount',
ADBE Text Wiggly Min Amount: '.minAmount',
ADBE Text Range Type2: '.basedOn',
ADBE Text Temporal Freq: '.wigglesSecond',
ADBE Text Character Correlation: '.correlation',
ADBE Text Temporal Phase: '.temporalPhase',
ADBE Text Spatial Phase: '.spatialPhase',
ADBE Text Wiggly Lock Dim: '.lockDimensions',
ADBE Text Wiggly Random Seed: '.randomSeed',
ADBE Text Range Type2: '.basedOn',
ADBE Text Expressible Amount: '.amount',
ADBE Text Animator Properties: '.property',
ADBE Text Anchor Point 3D: '.anchorPoint',
ADBE Text Position 3D: '.position',
ADBE Text Scale 3D: '.scale',
ADBE Text Skew: '.skew',
ADBE Text Skew Axis: '.skewAxis',
ADBE Text Rotation X: '.xRotation',
ADBE Text Rotation Y: '.yRotation',
ADBE Text Rotation: '.zRotation',
ADBE Text Opacity: '.opacity',
ADBE Text Fill Opacity: '.fillOpacity',
ADBE Text Fill Color: '.fillColor',
ADBE Text Fill Hue: '.fillHue',
ADBE Text Fill Saturation: '.fillSaturation',
ADBE Text Fill Brightness: '.fillBrightness',
ADBE Text Stroke Opacity: '.strokeOpacity',
ADBE Text Stroke Color: '.strokeColor',
ADBE Text Stroke Hue: '.strokeHue',
ADBE Text Stroke Saturation: '.strokeSaturation',
ADBE Text Stroke Brightness: '.strokeBrightness',
ADBE Text Stroke Width: '.strokeWidth',
ADBE Text Line Anchor: '.lineAnchor',
ADBE Text Line Spacing: '.lineSpacing',
ADBE Text Track Type: '.trackingType',
ADBE Text Tracking Amount: '.trackingAmount',
ADBE Text Character Change Type: '.characterAlignment',
ADBE Text Character Range: '.characterRange',
ADBE Text Character Replace: '.characterValue',
ADBE Text Character Offset: '.characterOffset',
ADBE Text Blur: '.blur',
ADBE Mask Parade: 'mask',
ADBE Mask Shape: '.maskPath',
ADBE Mask Feather: '.maskFeather',
ADBE Mask Opacity: '.maskOpacity',
ADBE Mask Offset: '.maskExpansion',
ADBE Effect Parade: 'effect',
ADBE Paint Group: '.stroke',
ADBE Paint Shape: '.path',
ADBE Paint Properties: '.strokeOption',
ADBE Paint Begin: '.start',
ADBE Paint End: '.end',
ADBE Paint Color: '.color',
ADBE Paint Diameter: '.diameter',
ADBE Paint Angle: '.angle',
ADBE Paint Hardness: '.hardness',
ADBE Paint Roundness: '.roundness',
ADBE Paint Tip Spacing: '.spacing',
ADBE Paint Target Channels: '.channels',
ADBE Paint Opacity: '.opacity',
ADBE Paint Flow: '.flow',
ADBE Paint Clone Layer: '.cloneSource',
ADBE Paint Clone Position: '.clonePosition',
ADBE Paint Clone Time: '.cloneTime',
ADBE Paint Clone Time Shift: '.cloneTimeShift',
ADBE Paint Transform: '.transform',
ADBE Paint Anchor Point: '.anchorPoint',
ADBE Paint Position: '.position',
ADBE Paint Scale: '.scale',
ADBE MTrackers: 'motionTracker',
ADBE MTracker Pt Feature Center: '.featureCenter',
ADBE MTracker Pt Feature Size: '.featureSize',
ADBE MTracker Pt Search Ofst: '.searchOffset',
ADBE MTracker Pt Search Size: '.searchSize',
ADBE MTracker Pt Confidence: '.confidence',
ADBE MTracker Pt Attach Pt: '.attachPoint',
ADBE MTracker Pt Attach Pt Ofst: '.attachPointOffset',
ADBE Audio Group: 'audio',
ADBE Audio Levels: '.audioLevels',
ADBE Time Remapping: 'timeRemap',
ADBE Layer Styles: 'layerStyle',
ADBE Blend Options Group: '.blendingOption',
ADBE Global Angle2: ADBE Global Angle2:
ADBE Global Altitude2: '.globalLightAltitude',
ADBE Adv Blend Group: '.advancedBlending',
ADBE Layer Fill Opacity2: '.fillOpacity',
ADBE R Channel Blend: '.red',
ADBE G Channel Blend: '.green',
ADBE B Channel Blend: '.blue',
ADBE Blend Interior: '.blendInteriorStylesAsGroup',
ADBE Blend Ranges: '.useBlendRangesFromSource',
dropShadow/enabled: '.dropShadow',
dropShadow/mode2: '.blendMode',
dropShadow/color: '.color',
dropShadow/opacity: '.opacity',
dropShadow/useGlobalAngle: '.useGlobalLight',
dropShadow/localLightingAngle: '.angle',
dropShadow/distance: '.distance',
dropShadow/chokeMatte: '.spread',
dropShadow/blur: '.size',
dropShadow/noise: '.noise',
dropShadow/layerConceals: '.layerKnocksOutDropShadow',
innerShadow/enabled: '.innerShadow',
innerShadow/mode2: '.blendMode',
innerShadow/color: '.color',
innerShadow/opacity: '.opacity',
innerShadow/useGlobalAngle: '.useGlobalLight',
innerShadow/localLightingAngle: '.angle',
innerShadow/distance: '.distance',
innerShadow/chokeMatte: '.choke',
innerShadow/blur: '.size',
innerShadow/noise: '.noise',
outerGlow/enabled: '.outerGlow',
outerGlow/mode2: '.blendMode',
outerGlow/opacity: '.opacity',
outerGlow/noise: '.noise',
outerGlow/AEColorChoice: '.colorType',
outerGlow/color: '.color',
outerGlow/gradientSmoothness: '.gradientSmoothness',
outerGlow/glowTechnique: '.technique',
outerGlow/chokeMatte: '.spread',
outerGlow/blur: '.size',
outerGlow/inputRange: '.range',
outerGlow/shadingNoise: '.jitter',
innerGlow/enabled: '.innerGlow',
innerGlow/mode2: '.blendMode',
innerGlow/opacity: '.opacity',
innerGlow/noise: '.noise',
innerGlow/AEColorChoice: '.colorType',
innerGlow/color: '.color',
innerGlow/gradientSmoothness: '.gradientSmoothness',
innerGlow/glowTechnique: '.technique',
innerGlow/innerGlowSource: '.source',
innerGlow/chokeMatte: '.choke',
innerGlow/blur: '.size',
innerGlow/inputRange: '.range',
innerGlow/shadingNoise: '.jitter',
bevelEmboss/enabled: '.bevelAndEmboss',
bevelEmboss/bevelStyle: '.style',
bevelEmboss/bevelTechnique: '.technique',
bevelEmboss/strengthRatio: '.depth',
bevelEmboss/bevelDirection: '.direction',
bevelEmboss/blur: '.size',
bevelEmboss/softness: '.soften',
bevelEmboss/useGlobalAngle: '.useGlobalLight',
bevelEmboss/localLightingAngle: '.angle',
bevelEmboss/localLightingAltitude: '.altitude',
bevelEmboss/highlightMode: '.highlightMode',
bevelEmboss/highlightColor: '.highlightColor',
bevelEmboss/highlightOpacity: '.highlightOpacity',
bevelEmboss/shadowMode: '.shadowMode',
bevelEmboss/shadowColor: '.opacity',
innerGlow/opacity: '.shadowColor',
bevelEmboss/shadowOpacity: '.shadowOpacity',
chromeFX/enabled: '.satin',
chromeFX/mode2: '.blendMode',
chromeFX/color: '.color',
chromeFX/opacity: '.opacity',
chromeFX/localLightingAngle: '.angle',
chromeFX/distance: '.distance',
chromeFX/blur: '.size',
chromeFX/invert: '.invert',
solidFill/enabled: '.colorOverlay',
solidFill/mode2: '.blendMode',
solidFill/color: '.color',
solidFill/opacity: '.opacity',
gradientFill/enabled: '.gradientOverlay',
gradientFill/mode2: '.blendMode',
gradientFill/opacity: '.opacity',
gradientFill/gradientSmoothness: '.gradientSmoothness',
gradientFill/angle: '.angle',
gradientFill/type: '.style',
gradientFill/reverse: '.reverse',
gradientFill/align: '.alignWithLayer',
gradientFill/scale: '.scale',
gradientFill/offset: '.offset',
patternFill/enabled: '.patternOverlay',
patternFill/mode2: '.blendMode',
patternFill/opacity: '.linkWithLayer',
patternFill/align: '.scale',
patternFill/scale: '.opacity',
patternFill/phase: '.offset',
frameFX/enabled: '.blendMode',
frameFX/color: '.color',
frameFX/size: '.size',
frameFX/opacity: '.opacity',
innerGlow/opacity: '.opacity',
innerGlow/opacity: '.opacity',
frameFX/style: '.position',

After Effects 图层属性及属性组结构详解的更多相关文章

  1. Maven配置文件POM属性最全详解

    注:本文内容来源于: BlueKitty1210 <Maven配置文件POM属性最全详解> <project xmlns="http://maven.apache.org/ ...

  2. moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  3. Linux文件系统的目录结构详解

    Linux文件系统的目录结构详解   一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...

  4. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

  5. JS函数动作分层结构详解及Document.getElementById 释义 js及cs数据类型区别 事件 函数 变量 script标签 var function

    html +css 静态页面 js     动态 交互   原理: js就是修改样式, 比如弹出一个对话框. 弹出的过程就是这个框由disable 变成display:enable. 又或者当鼠标指向 ...

  6. OpenCV-Mat结构详解

    前面博客中Mat函数谈到一些理解,但是理解的比较浅显,下面谈谈通道,行列等意义: Mat的常见属性 opencv中type类型· CV_<bit_depth>(S|U|F)C<num ...

  7. JVM结构详解

    JVM 结构详解 JVM 结构图 程序计数器(PC 寄存器) 程序计数器的定义 程序计数器是一块较小的内存空间,是当前线程正在执行的那条字节码指令的地址.若当前线程正在执行的是一个本地方法,那么此时程 ...

  8. Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

    PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...

  9. BS模式的模型结构详解

    编号:1004时间:2016年4月12日16:59:17功能:BS模式的模型结构详解 URL:http://blog.csdn.net/icerock2000/article/details/4000 ...

随机推荐

  1. ☕【Java技术指南】「TestNG专题」单元测试框架之TestNG使用教程指南(上)

    TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便. 详细使用说明请参考官方链接:https://testng ...

  2. TFRecord读写简介+Demo 基于Ubuntu18.04+Tensorflow1.12 无WARNING

    简介 TFRecord是TensorFlow官方推荐使用的数据格式化存储工具. 它规范了数据的读写方式. 只要生成一次TFRecord,之后的数据读取和加工处理的效率都会得到提高. 将图片转换成TFR ...

  3. VMware ESXi 7.0 U2 SLIC & Unlocker USB 网卡驱动集成镜像 202109更新

    2021.08.31 更新:集成 "vmkusb-nic-fling"."net-community" 和 "nvme-community" ...

  4. centos7 ftp 拒绝连接

    2021-09-03 1. 问题描述 刚才在重新搭建 ftp 服务器时,发现 ftp 拒绝连接,想起来我还没启动 vsftpd 服务,尝试启动却无法启动 vsftpd 服务 2. 解决方法 使用命令 ...

  5. C#多线程开发-线程同步 02

    上一篇文章主要带领大家认识了线程,也了解到了线程的基本用法和状态,接下来就让我们一起学习下什么是线程同步. 线程中异常的处理 在线程中始终使用try/catch代码块是非常重要的,因为不可能在线程代码 ...

  6. Git使用教程一

    Git是一个分布式版本控制系统,简单的说其就是一个软件,用于记录一个或若 干文件内容变化,以便将来查阅特定版本修订情况的软件. Github (https://www.github.com) 是-一个 ...

  7. Servlet学习笔记(三)之HttpServletRequest

    HttpServletRequest(HttpServletRequest 想比 ServletRequest 添加与协议相关 API)对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HT ...

  8. 简单三分钟,本地搭建 k8s

    使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的 ...

  9. 【死磕NIO】— NIO基础详解

    Netty 是基于Java NIO 封装的网络通讯框架,只有充分理解了 Java NIO 才能理解好Netty的底层设计.Java NIO 由三个核心组件组件: Buffer Channel Sele ...

  10. window创建l2tp

    windows上创建一个L2TP的隧道连接 进入控制面板,打开"网络和共享中心",如下图,之后点击"设置新的连接或网络" 进入到"设置连接或网络&qu ...