根据结构类型的属性分类

在 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. 一招解决下载或下拉GitHub项目速度太慢的问题

    相信很多朋友都有过这样的体验,就是从Github上下载或clone别人的项目时特别慢,甚至还会出现链接意外终止的情况,那么今天就来给大家分享一个提速的方法,步骤也非常简单,亲测有效! 首先进入你的目标 ...

  2. 目录-理解ASP.NET Core

    <理解ASP.NET Core>基于.NET5进行整理,旨在帮助大家能够对ASP.NET Core框架有一个清晰的认识. 目录 [01] Startup [02] Middleware [ ...

  3. 细说Typescript类型检查机制

    上一篇文章我介绍了Typescript的基础知识,回顾一下,有基础数据类型.数组.函数.类.接口.泛型等,本节内容将述说一下Typescript为方便我们开发提供了一些类型检查机制. 类型检查机制 类 ...

  4. <题解>「LibreOJ NOIP Round #1」序列划分

    solutions 题面loj#542 对我来说,这或许已经超出了我的能力,我,只能看题解 不知道我写完这一篇题解之后,会不会对我的构造题有一点点的帮助 让我在这类题的解决上能过有一些提升 直接说明白 ...

  5. 为 Memcached 构建基于 Go 的 Operator 示例

    Operator SDK 中的 Go 编程语言支持可以利用 Operator SDK 中的 Go 编程语言支持,为 Memcached 构 建基于 Go 的 Operator 示例.分布式键值存储并管 ...

  6. 离线安装Windows Terminal

    Windows Terminal颜值高.适配好.速度快,是Windows 10下命令行工具的不二选择. 最近在公司电脑上安装Windows Terminal时遇到一个问题,由于公司电脑不能直接连接外网 ...

  7. python 修改图像大小和分辨率

    1 概念: 分辨率,指的是图像或者显示屏在长和宽上各拥有的像素个数.比如一张照片分辨率为1920x1080,意思是这张照片是由横向1920个像素点和纵向1080个像素点构成,一共包含了1920x108 ...

  8. 20210826 Lighthouse,Miner,Lyk Love painting,Revive

    考场 T1 这不裸的容斥 T2 这不裸的欧拉路,先从奇数度点开始走,走不了就传送 T3 什么玩意,暴力都不会 T4 点分树??? 仔细想了一波,发现 T1 T2 都好做,T3 二分答案后可以暴力贪心, ...

  9. VS Code 搭建stm32开发环境

    MCU免费开发环境 一般芯片厂家会提供各种开发IDE方案,通常其中就包括其自家的集成IDE,如: 意法半导体 STM32CubeIDE NXP Codewarrior TI CCS 另外也可以用ecl ...

  10. freemodbus移植、实例及其测试方法

    Modbus简介 参考:Modbus​协议​深入​讲解 https://www.ni.com/zh-cn/innovations/white-papers/14/the-modbus-protocol ...