根据结构类型的属性分类

在 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程序设计学习笔记(一)

    时间:2015-6-2 23:04 程序员,程序猿,程序媛,码农 -------------------------------------------------------   --Java的应用 ...

  2. Jsoup学习笔记

    时间:2016-7-7 00:05 jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuer ...

  3. Spring Data JPA:解析CriteriaBuilder

    源码 在Spring Data JPA相关的文章[地址]中提到了有哪几种方式可以构建Specification的实例,该处需要借助CriteriaBuilder,回顾一下Specification中t ...

  4. Golang gomail 发送邮件 --初使用

    gomail是一个第三方库,可以发送邮件 安装:go get -u github.com/go-gomail/gomail 使用示例: m := gomail.NewMessage() m.SetHe ...

  5. Spring系列之事物是如何管理的

    前言 我们都知道Spring给我们提供了很多抽象,比如我们在操作数据库的过程中,它为我们提供了事物方面的抽象,让我们可以非常方便的以事物方式操作数据库.不管你用JDBC.Mybatis.Hiberna ...

  6. linux centos7 控制台下的一些操作

    2021-08-20一. 快捷键1. Ctrl+d       退出当前用户2. Ctrl+Insert  复制3. Shift+Insert 粘贴4. Ctrl+l       清屏二. 基础命令1 ...

  7. Linux下查看哪个网口插了网线

    场景: 一台服务器有多个网卡,一个网卡有多个网口,当插了一根网线的时候,不知道网线是插在哪一个网口. 1.查看网口信息 2.查看网口是否插了网线(命令ethtool) 命令:ethtool + 网口名 ...

  8. 博主有偿带徒 《编程语言设计和实现》《MUD游戏开发》《软件破解和加密》《游戏辅助外挂》《JAVA开发》

    <考研专题>操作系统原理 理论解答:8K 实战 1.5W CPU设计 理论解答:1W 实战 2.5W <编程语言设计和实现>初窥门径<5K>:编译原理.编译设计小试 ...

  9. noip模拟测试52

    这套题总体来说比较简单,但是有一些分数我没有拿到,先说T1,我10分钟左右打完了60分的暴力,然后就开始打表找规律,好像只有我去找了循环节,找规律找了一个多小时,到八点四十的时候我还没有正解做法,就直 ...

  10. 三剑客之awk 逐行读取

    目录: 一.awk工作原理 二.按行输出文本 三.按字段输出文本 四.通过管道,双引号调用shall命令 五.CPU使用率 六.使用awk 统计 httpd 访问日志中每个客户端IP的出现次数 一.a ...